本格的な冬という感じの日が多くなりましたね。感染研のデータを見ても、昨年同様に今年もインフルエンザはずっと低いままのようですが、コロナに加えて、風邪などを召しませんようにご自愛ください。

話題は全く変わりますが、数学的な問題を解くための手法が意外とヒトのお付き合いにも似ているかも、と思った話題です。

仕事で、ベイズ推定するのにMCMC(Markov chain Monte Carlo)法をときどき利用しています。MCMCは、数学的に定義した複数の式(モデル)にしたがって芋づる式に計算を繰り返して答えを探す方法です。観測されたデータの癖にしたがいつつ、乱数を利用して、観測できない部分がどうなっているか、安定した範囲に落ち着くまで繰り返し計算で推定します。

不思議なことに、オーケストラに指揮者が必要なように、平均値を担当する変数を一つ準備し、その平均値からの差分の配列を持つようにしたほうが、単に1次元配列でベタにデータを持っているよりも収束が早くなります。

また、変数と変数の関係は歯車のようなもので、適度な遊びが必要です。計算には、それぞれの値がわからないので、とりあえず乱数を発生させて代入して行います。その遊びの程度を決めるのがハイパーパラメータです。

ハイパーパラメータ一つひとつをランダムに選ぶよりも、同種のパラメータは、一つを代表として完全にランダムにして、他はそれとの比を自由に選ばせるという関係性を与えたりします。どちらでも原理的には自由なのは変わりななく動けるはずなのですが、挙動を制限していないはずの弱い関係性を与えることで、全体としての収束は格段に早くなります。

互いに何かゆるい関係であっても、全体の動きとしては、重要なのでしょうね。