私たちが計算機、あるいは計算機が行う処理であるところの「計算」を考えるとき、現代のデジタル計算機の上でプログラムを実行することで行う計算を無意識に想像します。一方、深層学習やブラックボックス最適化の技術が進歩してきたことによって、明示的にアルゴリズムを記述しなくてもよい「計算」が実用的になってきました。「計算」とは何でしょうか。「計算」とは何かを広く捉えるとき、私達の社会が何にどのようなインパクトがあるでしょうか。私たちは何に備えていけばよいでしょうか。

そのようなことを議論したくて、様々なバックグラウンドの方々にお声がけして、1泊2日のワークショップを行いました。今回は特別に、IBM社の協力を得て、エグゼクティブ向け研修施設「天城ホームステッド」での開催が実現しました。素晴らしい人々と、素晴らしい食事、素晴らしい環境に育まれて、自由に思索を巡らすことができた、至福の2日間でした。
まず、自然計算、量子計算、波動計算など物理現象を使ったエグゾチックな計算の仕組みをそれぞれ当代一流の研究者の方々にご紹介いただきました。そのうえで、今後どのような「計算」が現れるか、自由に議論しました。自然計算[1]とは、自然界で起きる物理現象を計算と捉え、それを使って計算を行う、という考え方です。例えば生物の進化は、環境に対して最適化する、という計算を行っていると考えられます。量子計算や、波動計算[2]も自然計算の一部です。
これらの議論の中から、今まで「計算」と思っていなかったものも、もしかしたら「計算」と捉えることができるかもしれない、とか、「計算」には、それにかかる処理時間やエネルギー消費による限界があったり、あるいは説明性・再現性・信頼性が求められたり、など様々な要件があり、それらの要件によって異なる計算の仕組みが用いられるだろう、などというアイディアが出てきました。「計算」を広く捉えると、様々なタイプの計算がありそうです。
「計算」の階層
=======
私たちの議論を通して、少なくとも「計算」に関して以下のような階層構造があるのではないか、と思うようになりました。
古典計算:アルゴリズムが書ける計算
私たちが普段想像する計算です。チューリング機械による抽象化で特徴づけられます。入出力は0,1のような離散値をとり、時間軸上で離散的なステップを実行することによって計算を行います。現代のデジタル計算機はすべてこのタイプの計算を行います。
モデル化可能計算:入出力の関係が数式(数理的なモデル)で書ける計算
入出力の値は離散値に限りません。例えば、実数値の線形変換を行う y=a*x + b という計算はx, yとして連続値をとる計算です。古典計算でアルゴリズムが書ければ、近似できるかもしれませんが、あくまでも近似に過ぎません。効率的なアルゴリズムが知られていない計算も、数式として定式化できればモデル化可能計算です。ニューラルネットの推論も、現在の実装では古典計算でシミュレート(近似)されているが、計算モデルとしてはモデル化可能計算と捉えることができます。
再現可能計算:特定の入出力事例に関して再現できる計算
入出力の関係は数式では書き下せないかもしれません(猫の画像を認識する計算、など)。しかし、特定の入出力事例を指定して、それを再現できるような計算、という概念はあり得ます。必ずしも個別の入力に対して常に正しい出力を出さなくてもよく、確率的な再現性でも構いません。科学は再現可能な事象を扱う学問ですので、科学の対象となりうるのは再現可能計算です。例えば、観測されたデータに基づいて帰納的に求められたモデル(機械学習で訓練されたモデルなど)は再現可能計算です。
ダイナミクス:入力に対して何らかの作用機序があり、出力が出るもの
入出力の間になにがしかの因果関係がある働きを、広く「計算」と捉えるものです。必ずしも同じ入力に対して(確率的に)同じ出力を出す再現性は要求されません。例えば、人間の心のように、外部からは観測不能な内部状態を持ち、時間発展するような系です。同じ入力に対して、時間軸上で異なる反応を示すので、再現可能とは言えません。にも関わらず、私たちは親しい友人に「今晩飲みに行こう」と誘うと、その時の状況に応じてどのような反応が返ってくるか、おおよその予測がつきます。この場合、友人の思考を「入力に対して何らかの作用機序があり、出力が出るもの」すなわちダイナミクスと捉えていることになるのです。
これらの定義には、古典計算 ⊂ モデル化可能計算 ⊂ 再現可能計算 ⊂ ダイナミクス という関係があることに注意してください。すべての古典計算はモデル化可能ですし、すべてのモデル化可能な計算は、再現可能です。これを計算の階層と呼ぶことにします。
上位の階層は下位の階層では表現できない、より強力な計算モデルを示していますが、一方で、十分な計算資源(計算時間、メモリ、など)があれば、下位の計算モデルは上位の計算モデルをある誤差範囲でエミュレートすることができます。
「自然計算」という概念は、上記の階層とは直交する概念であることに注意してください。例えば、ビリヤード計算は、物理現象を使って1の古典計算を行う仕組みです。量子計算や、波動計算は、厳密な物理法則に従うという意味では2のモデル化可能計算に分類されるでしょう。
数式は差し当たってわからないが、同じことが繰り返し起きることが経験的に知られている自然現象、たとえば「種を蒔くと数カ月後に花が咲く」ということを計算と捉えれば、これは再現可能計算のカテゴリだと思います。人間の子供が食べること、歩くことを覚える、というのもこれに相当するでしょう。
一方、歴史上1度しか起きないから再現可能性は保証できないけれど「きっとこうなるだろう」と思うもの、例えば政治や経営における意思決定などを「計算」として捉えるのならば、ダイナミクスと考えざるを得ないのだと思います。
***
このように考えると、「計算」とは思ったより広い概念だということに気が付きます。
昨今教育の世界で議論されているJanet Wing流の"Computational Thinking"[3]あるいは文部科学省が推進する「プログラミング的思考」の教育というのは、残念ながら「計算とは古典計算である」という前提に縛られています。今の子供達が社会に出るころには、様々な計算モデルが現れていることでしょう。「計算」の概念がこれほど広くなるのであれば、教育を根本から見直す必要があるのではないでしょうか。
参考文献
1. 萩谷他、自然計算へのいざない、ISBN-13: 978-4764904880, 2015.
2. Katayama, Yasunao, et al. "Wave-based neuromorphic computing framework for brain-like energy efficiency and integration." IEEE Transactions on Nanotechnology 15.5 (2016): 762-769.
3. Janet Wing, "Computational thinking." Communications of the ACM 49.3 (2006): 33-35.