kolmas.tech note

雑記と思索、偏った技術の覚え書き

受け手次第のランダム性

先のエントリにて応用行動分析の考え方における変動強化について書いた時にふと至った、ランダム性についての思索。

そもそも「ランダム」とは何か

ランダムとは、事象に法則性がなく予測できない事を意味する。例えば、コイントスの結果は一般にランダムであると見做される。コインの表と裏のどちらが出るかは、普通は予測できないからである。では、10回のコイントスでそれぞれ以下のような結果が出る三種類のコインについて、それらによるコイントス結果はランダムと言えるか。

  • 表表表表表表表表表表:「表」しか出ないイカサマコインである。このコインを使った11回目のコイントスの結果は明らかに「表」と予測可能である。その点で、このコインを使ったコイントスの結果にランダム性があるとは言えない。
  • 表表裏表表表表表裏表:「裏」も出るが、「表」が出る可能性の方が高いコインである。次に何が出るか完全に予測する事ができないのである程度のランダム性はあると言えそうだが、大方「表」の方が出そうだとある程度の予測はできる。その点で、表裏等確率のコインによるコイントスと比べたらランダム性は低い。
  • 表裏表裏表裏表裏表裏:ではただ単に「表」と「裏」が等確率であればランダムなのかというとそうも言えない。この「表」「裏」が交互に出るコインを使った11回目のコイントスの結果は明らかに「表」であろう。予測可能であり、ランダム性があるとは言えない。

これは情報理論の極めて基礎的な部分の話題である。ここで言う「ランダム性」というものは、情報理論の文脈で言うところの情報量・エントロピーの概念に通じている。完全に予測できる事象には情報量がない、言い換えれば、情報として保存したり伝達したりする必要性がない。 ja.wikipedia.org 上記の三枚のコインのうち、一枚目によるコイントスの結果は明らかに「表」でしかないのだから、コイントスの結果を保存しておく必要は全くない、つまり情報量がない。三枚目については、最初の出目が「表」か「裏」かだけ保存しておけば、n回目のコイントス結果は保存しておかなくても再現可能である。一方で二枚目については、可能性は低いものの「裏」がいつ出るかは分からないので、それは保存しておかないと再現できない。ただし、「裏」の発生確率が低い事を利用して、コイントス結果を効率的に保存することはできそうである。これは情報圧縮の考え方である。

人力乱数生成、ただし道具の使用不可

上記は、繰り返しであるが情報理論の基本であり、私にとっては大学生の頃に修めた内容である。何の新規性もない。では何故それを突然思い起こしているのかというと、冒頭で述べた通り応用行動分析における変動強化について考えた事である。行動に対して好子を与える事でその行動の定着・強化を図る応用行動分析的手法において、その行動に対してランダムに好子を与えたり与えなかったりする事でより強固にその行動を強化する事が変動強化である。

さてここで、この「ランダムに好子を与えたり与えなかったりする」ためのランダム性をどのように作り出すか。好子の提示にデジタルツールを利用する場面ならともかく、好子を提示するのが人=指導者である場面1では、その「与えたり与えなかったりする」判断を指導者がしないといけない。いわば人力乱数2生成である。ただし、人力乱数の定番手法と言えよう、コインやサイコロ等の道具を使う手法は不可とする。何故なら、好子の提示が直前の行動を強化する応用行動分析的手法において、好子を提示するか否かの判断にそれら道具を使うと、その道具を使う事、即ちコインやサイコロを投げるという行動を強化する事になりかねない。そのため、指導者側である人が、自分の頭の中で好子の提示有無を決めなければならない。

その前提に立つと、ランダムに決めるという事は簡単そうに見えて難しいように思えた。何回かに一回は好子を与える、という考え方は分かりやすく適用もしやすいが、上記例の三枚目のコインと同様でありランダム性があるとは言えない。このようなパターンがある間欠的な強化は固定強化と呼ばれ3、変動強化とは区別される。この内、行動の強固な定着に結び付くのは変動強化4である。しかし、ランダムの考え方を適当にしていると、変動強化をしようとして固定強化になってしまう事がありそうである。

強化したい行動を複数の指導者の内の誰かがランダムに見る、例えば我等が長男の場合には私と妻のどちらが見るかが毎回ランダムである、という事は普通にありそうである。例えば長男に手を洗わせるという事について、それを見るのは概ね私が妻か、もしくは同居の私の両親か、のいずれかで、誰がその場に居合わせたかで変わる。先日生まれた三男の世話もあって、これは全く予想ができない。しかし指導者の人選がランダムであっても、この内誰かが好子を与え、他が与えないという形では、好子の提示という観点ではランダムにならない。人が決まったタイミングで好子の有無が予測できるからである。例えば妻の付き添いで手を洗った時には好子により強化、その他の場合は好子なし、という考え方では、「手を洗うこと」に対する変動強化には全くならない。それは「妻の付き添いで手を洗うこと」に対する連続強化であって、そうしたら長男は手を洗う際の付き添いを必ず妻にせがむようになるに違いない。5

となれば、指導者個々人の頭の中でそれぞれに乱数生成するしかないが、それは人には難しかろうと思う。どうしても、「前は好子を出したから今回は出さない」とか、「しばらく好子を出してないから今回は出す」など、以前の行動に引きずられがちである。これは即ち以前の行動からある程度予測し得るという事だから、完全にランダムとは言えない。以前の事象とは独立にその場限りでランダムに何かを決める、しかもそれを頭の中だけで毎回、というのは案外と難しい。

非ランダム性を認知できなければ実質ランダム

とはいえ、多少ランダム性が損なわれていたとしても、それを悟られなければ十分であるという考え方も出来る。例えば上述の脳内乱数生成、完全なランダム性を求めるのは厳しかろうが、そうである事を相手、例えば我等が長男、に悟られなければ良い。コインやサイコロといった道具や、人によって変わるといった条件は悟られやすいので不可である。その点では、道具を使った乱数生成も、その道具の存在を悟られなければ良く、例えば時計の秒針などは使えそうに思う。好子を与えるか否か決める時、さっと振り向いて時計の秒針を見て、その位置、例えば30秒を過ぎているか否か、で決めるのである。一定程度のランダム性があるだろうし、素早く確認できるので気付かれにくいだろう。

そんな事を考えていると、この、ランダム性があるものとして扱われるか否かが受け手次第であるということが、一般的な乱数生成にも当てはまると思い至る。例えば、ソフトウェア単体で外部入力なく生成できる乱数は、計算で求めている以上、計算方法と初期入力=シードが分かっていれば再現可能である。故にこれは疑似乱数と呼ばれる。擬似とはいえ、人を相手に乱数を使うソフトウェア、典型的にはゲームにおけるランダム挙動の実現等、においては、普通はそれで十分6である。何も知らない人から見たら、疑似乱数は十分にランダムであるように見える。一方で、擬似乱数の仕組みを知っている人は、その仕組みを使ってゲーム内で望む挙動を実現したりする。ポケモン界隈で「乱数調整」と呼ばれる手法7が有名。そのような人にとっては、当該擬似乱数は最早ランダム性を持たない。 www.mizdra.net

また、典型的には暗号学的用途など、乱数の受け手がコンピュータ8である場合には、擬似乱数では不足する場合があり、そのような場合はハードウェアとしての乱数発生器を利用する事もある。これらはハードウェアの不確定性に基づいて真の意味で予測できない乱数列を発生させる。 ja.wikipedia.org

これらは、それぞれにランダム性の度合いが全く異なる。ただランダム性が高ければとにかく良いという訳ではなく、実際に運用する場面に適応出来なければ何の意味も無い。その点で、受け手に非ランダム性を見抜かれない程度のランダム性を持たせておく、という事が重要である。

用途に合った乱数を

という訳で、ここまで散々書いてきた割に、乱数の受け手、ひいてはその用途に合った適切な乱数生成法を使いましょうという、何の変哲もない極めて当たり前の結論に落ち着く。


  1. その場面を生じる分かりやすい好子としては、例えばおやつをあげるとか。
  2. 乱数=random number。
  3. 字面的に紛らわしくて混同しそうだが、強化したい行動の度に毎回好子を提示して強化するのは連続強化。強化を間欠にするのが部分強化であり、その間欠の考え方によって固定強化と変動強化に分かれる。
  4. 固定強化は、好子が与えられるタイミングが決まっているため、その直前以外の行動がおざなりになりやすい、とのこと。
  5. というより、既にその気がある。
  6. さすがにシードは毎回変えてやらないと、専門家でなくても非ランダム性に気付かれるだろうが。
  7. ポケモンのステータスは、そのポケモンの種類と育て方に加えて、個々のポケモンに固有のランダム値で決まる。このランダム値は界隈では個体値と呼ばれ、理想的な個体値を得る等の目的で乱数調整する人がいる。
  8. 暗号に対する攻撃など、悪意ある用途のコンピュータ。