複雑さとは何かを考える あっさり編
複雑さのオタクなので、以前、「複雑さとは何か」を考え続けた先に見つけた自分なりの答えを、オタクの長文記事で書きました (特に大きかったのが、参考文献に掲載した論文です)。
しかし、色々と盛り込みすぎた上に、丁寧さを心がけた結果、説明も長いものになりました。
それゆえ、結局かんじんの「複雑さとは何か?」が分かりにくくなった、という気がしたのです。
これを受けて、今回は、少ない言葉でサッとまとめたいと思います。
まずヒトコトで言い切って、あとから「どういうこと?」を補足していきましょう。
複雑さの定義は色々ありますが、すくなくとも情報理論という分野に言わせれば、
「知れば知るほど予測が効くようになる、選択肢の多さ。」
…と言えます。
もうすこし伸ばして言うと、
「たとえこれから起こることの候補がたくさんあっても、多くの情報を得ていさえすれば、起こることが予測できるということ。」
これが、情報理論が言うところの、複雑さということになります。
まだわかりにくいですね。具体例にしてみましょう。
これから先に起こることを予測できるとは、どういうことでしょうか。
典型的なパターンとして、周期的な動きがあります。
例えば、空の色の移ろいが挙げられます。
空の色に法則があることは、天気予報や書籍、ネットなどで調べなくても、経験的に理解できます。今まで過ごしてきた経験から、明るい青い時間と暗い黒い時間とが、真っ赤に燃えるような時間を挟んで交互に現れるだろうということが予測できます。
毎日の繰り返しという短めの経験だけから、まずは、昼と夜という周期があることが予測できるというわけです。
ここで、もっと長い経験をすると、さらに細かく解像度の高い (より多くの候補を考慮に入れた) 予測ができています。
年単位のもっと長い時間を経験すれば、その青い時間の長さと黒い時間の長さの割合がだんだんと変わっていくこともまた、予測できるようになります。
あと120回も青と黒とが入れ替わるうちに、青がすっかり長くなってしまうんだろうなぁ、という具合にですね。
さらに言えば、100回も入れ替わるころに (この記事は12月に書いています) 黒の中にはふんわりと包み込まれるような柔らかさで白い光が顔を出し、200回も入れ替われば青の終わりのころに大きな音と光を連れて凄まじい水が落ちてくる、そのような解像度でできごとが予測できることでしょう。
(なお、ヘッダーの画像は、空の色ではないですが、ある一年間の気温と降水量の変化を可視化したもので、気象庁のデータを元に筆者が作成しました。)
このように、経験したことが増えれば増えるほど、より細かい、あるいは多くの「できごと候補」の中から、何が起こるか予測できてくること。これが「複雑さ」、ということになります。
あるいは他の例として、学校や会社を考えてみましょう。
ここでは、新しく入ったばかりの学校や会社を考えてみましょう。
数週間も過ごしてみると、何曜日には皆が早く帰れがちとか、何曜日にはこのスケジュールが入っている、みたいなことがつかめ、来週からの様子が予測できてきます。
さらに年単位で過ごせば、もっと大きな人や組織の動向、数字の変化、忙しい月、年間行事のありやなしやなどが何となく分かって来、次年度以降について、完璧ではないものの、予測ができるようになってきます。
このように、空の色や、組織の動きについては、長い過去を知れば知るほど、もっと詳しくいろいろな確度から、この先を予測できるようになってきます。
この、「知れば知るほど、もっと詳しく」「予測できる」というのがまさに複雑さというわけです。
一方でもし、一日ごとや週ごとの小刻みな動きだけしかないならば、年単位の長い (多い) 経験をせずとも、もはや大体すべてのことを予測できてしまいます。
これは、あまり複雑ではない状態です。
あるいは、ありえないことですが、空の色や、あるいは組織の動きが、次の瞬間には完全にランダムに変わってしまう場合を考えてみましょう。
赤かと思ったら数秒もしないうちにすぐに緑に変わる。設備投資をしたはずの事業があったのに1秒後には違う事業をし始める。
このような全く予測できないパターンもまた、情報理論に言わせれば、複雑ではないのです。
どれほど経験をしようとも予測できるようにならないわけで、これはさっきの複雑さの性質に反します。
言ってみれば、自然界や人間界がなぜ複雑で面白いかというと、完全にデタラメではなく、あるていど規則性を持っているからだ、というわけですね。
それも、文字通り「単純」ですぐに把握できてしまうのではなく、そうではなくて、知れば知るほど新しい規則が見えてくる。
このような規則の、幾重にも重なった積み重ねというのが、複雑さということになります。
さて、少し応用も考えてみましょう。
元の記事でも書きましたが、この複雑さというのは直感的には、飽きのこなさと親和性が高いように見えます。
上で述べてきた複雑さがいうところの「単純」なもの、つまり完全ランダムで法則性がないものや、逆にすぐに法則性がすべて分かってしまうようなものは、飽きてしまうことが想像できます。
というわけで、飽きのこないものを作りたい/やりたいときは、「複雑」なものを目指すのが、1つの良いやり方になりそうですね。
ところで、上で述べた「知れば知るほど予測できる」の「知れば知るほど」は、時間的な長さでなくても構わないでしょう。
短い周期や長い周期のリズム/パターンが含まれるような構造なら、大波小波のリズムや、大きい都市圏のリズムと小さい家のリズムといった、空間的なものでも構わないわけです。
なので、飽きのこない遊びを始めようというときや、飽きのこないサービスを提供しようというときは、短いリズムと長いリズムとを共存させていくことで、それが実現しやすくなるかもしれません。
長い時間愛されている遊びにはそうした傾向がある気がしますが、いかがでしょう?
また、機械学習の文脈で言えば、学習データを増やすことに意味があるかを示す指標を定義するために役立つかもしれません。
というわけで、(情報理論が言うところの) 複雑さとは、知れば知るほど予測が効くようになる、選択肢の多さ。でした。
なお、複雑さは他にも定義が色々ありますので、最後にそれを少し述べて、終わりましょう。
プログラミングでできるだけ短く表現しようとしたときのコードの長さが、コルモゴロフの複雑さ。
問題の種類によって、問題のサイズが大きくなったときにどれくらい解く時間が長くなってしまうのかが、計算複雑性。
なお、現象というよりは、その現象を説明するためのモデルの複雑さを表現するものとしてラデマッハー複雑度というものがあります。が、これは複雑さの評価というよりも、モデルが器用すぎるとかえって良くないよね、という評価をするためによく使われるものなので、ちょっと性質が違います。
なお、日常で、つまり自然言語で「こいつは複雑だ」という場合には、完全ランダムに近いものを指すことも多いです。これは情報理論に言わせれば、経験を増やしても予測できる量が増えないため、あまり複雑ではないということになります。
これが一応、この記事で説明した「複雑さ」と、日常で使われる「複雑さ」とのズレになります。
なお、これは読み飛ばして頂ければと思いますが…、正確には、空の色や組織が複雑だというよりは、それらの結果をある確率モデルの実現値とみなしたときに、その確率モデルが理論上ないし経験上複雑だ、という奥まった主張をしていることを付記して起きます。通常、意識する必要はないと思っていますが、実際にモデルを作る人になるときには欠かせなくなるため、そういうものだと思って頂けたら幸いです。
さて、一般的に言われるあらゆる複雑さについて表現しようとすると、上記のいろいろな複雑さを組みわせたり、あるいはそうした数理モデルでは言えないものによって表現したりする必要も出るかもしれません。
しかし少なくとも、今回の情報理論の予測が効くようになる選択肢の多さという説明は、なかなか当を得ていて直観に近しく、使いやすいものに思いました。
それでは、今回もありがとうございました。
参考文献:
M. Prokopenko, F. Boschetti, A.J. Ryan, An information-theoretic primer on complexity, self-organisation and emergence, Complexity 15 (1) (2009) 11–28, doi:10.1002/cplx.20249.
https://onlinelibrary.wiley.com/doi/abs/10.1002/cplx.20249