脳とコンピュータとの違い
脳と現状のコンピュータは、計算モデル、アーキテクチャ、
アルゴリズムなどいろいろな観点からみて違いがあります。
はたしてコンピュータの上で脳と同じ機能は実現できるのでしょうか。
実現を難しくする要因として何が考えられるでしょうか。
◆計算モデルの違い
計算する機械を数学的に抽象化したものを計算モデルと呼びます。
チューリングマシンは計算モデルの1つです。
チューリングマシンとは数学的に異なる計算モデルとしては、
例えば非決定性チューリングマシン、
(理想的な)アナログコンピュータ、量子チューリングマシン
(量子コンピュータのモデル)があります。
これらはチューリングマシンよりも強力だったり速かったりします。
さて、「脳の計算モデル」はチューリングマシンと等価でしょうか、
それともより強力だったり速かったりするのでしょうか。
非決定性チューリングマシンは並列度が無限の計算機です。
脳は超並列とはいっても並列度は有限の定数ですから、
非決定性チューリングマシンとは違います。
理想的なアナログコンピュータは、たとえば無限の精度の演算を
有限時間で実行できたりします。
脳はアナログコンピュータですが、演算にはノイズが多く、
理想的なアナログコンピュータとは程遠いように見えます。
(ただし、アナログの振る舞いが脳の計算の本質である可能性は
絶対にないとは言えません。 「カオスとノイズ」の項目参照。)
脳が量子コンピュータではないかと言う人はいますが、
いまのところ、脳が量子コンピュータである証拠は見つかっていません。
量子コンピュータでなければ実現できない何らかの機能を
脳が持っているという話もありません。
いまのところ、脳は計算モデルとしては
チューリングマシンと同等で、
デジタル計算機でシミュレーション可能と考えてよさそうです。
もしデジタル計算機以上の能力を脳の組織のどこかが
持っていることが発見されたら、それは画期的な大発見です。
新たな原理の計算機の開発に応用でき、産業上の利用価値も大きいでしょう。
それはそれで期待したいところです。
ただ、今のところは、脳がそのような能力を持っていることを示す
証拠は見つかっていないと思います。
◆コンピュータ・アーキテクチャの違い
コンピュータ・アーキテクチャ(デジタル計算機の基本設計)は
大きく2つに分類できます。
現在主流であるノイマン型と、非ノイマン型アーキテクチャです。
脳は非ノイマン型と言えます。
ノイマン型アーキテクチャにはいわゆる「フォン・ノイマン・ボトルネック」という
欠点があります。
データが必ずバスを通るので、ここがボトルネックとなって、
プロセッサはある程度以上は
速くできないだろうと、ずっと前から言われていました。
現実にはメモリの階層化(キャッシュ)で対処し、かなり速くなりましたが、
最近では限界が来て、マルチコアなどの並列化の流れになったようです。
(バスの速度の限界というよりCPUのクロックの限界?)
さて、脳は超並列マシンであり、
フォンノイマンボトルネックはありません。
それが脳が速い理由の1つといって間違いないでしょう。
しかしながら、最近のスーパーコンピュータも高い並列度を持っており、
脳に十分に対抗できる速度を持っています。
(「計算速度の違い」の項目参照。)
◆計算素子の違い
脳はニューロンから構成されていますが、これが脳とコンピュータの
能力の本質的な違いの原因になり得るでしょうか。
ニューロンはどのような演算を行うかと言うと、
それはニューロンをどのくらい細かくモデル化するかによって
変わってきます。
神経科学では、ニューロンが行う演算は、
内積演算程度の簡単な演算であると考えることが多いです。
この場合、コンピュータでも容易にシミュレーションできます。
もう少し細かい時間スケール・空間スケールで
ニューロンの振る舞いをモデル化する場合もよくあります。
この場合は、シミュレーションには
より膨大な計算量が必要になるでしょう。
しかし、脳とコンピュータの本質的違いにはなりません。
ニューロンに、
コンピュータでのシミュレーションが不可能になるような
何か神秘的な能力があるかというと、
いまのところ、そのようなものは見つかっていないと思います。
ニューロンを構成する分子が
普通の物理法則に従って機械論的に動いている以上、
その動作は原理的にコンピュータでシミュレーション可能なはずです。
(必要な計算量が大きすぎて、現在のコンピュータでは
シミュレーションできない、ということはあるとは思いますが。)
前述のように、アナログ計算であることが本質的な違いに
なる可能性はあります。 (「カオスとノイズ」の項目参照。)
◆回路の可塑性
コンピュータを構成する電子回路は固定されていますが、
脳を構成する神経回路は成長や学習によりその構造を変化させます。
このような変化する回路をソフトウエアで再現させることは容易です。
コンピュータが十分な計算速度さえ持っているなら、
神経回路の可塑性という性質は、脳の機能を再現させる障害には
まったくならないでしょう。
◆カオスとノイズ
脳内では、ニューロンのネットワークによってカオス的現象が発生します。
また、熱雑音など多くのノイズが存在します。
ここはひょっとしたら、脳の機能をコンピュータ上で再現させる際の
障害になる可能性を秘めています。
デジタル計算機でのアナログ現象のシミュレーションには誤差がともなうので、
それが本質的な障害になる可能性がないとは言えません。
脳内でカオス的現象やノイズが情報処理に関わっている例は
見つかっているようです。
ただし、私が知る限り疑似乱数で代用できるもののように思います。
(疑似乱数で代用できない例があったら是非教えてください。)
疑似乱数ならば、コンピュータで簡単に生成することができます。
今のところは、脳の機能を再現させるには疑似乱数だけで足りると
私は考えています。
◆アルゴリズムの違い
脳のような高い性能を持つ機械学習アルゴリズムが
いまだにコンピュータ上で実現されていない理由は、
脳のアルゴリズムがまだ完全に解明されていないからです。
しかし、最近の計算論的神経科学の知見によれば、
脳が用いているアルゴリズムは、驚くべきことに、
コンピュータ上ですでに使われているものと似たものであるようです。
脳を構成する組織のうち、大脳皮質は教師なし学習、
大脳基底核は強化学習、小脳は教師あり学習を行っていると考えられています。
その具体的なアルゴリズムも、徐々にですが明らかになりつつあります。
ところで、脳が解いている問題は、最適化問題として定式化されることが多いです。
最適化問題の多くは「コンピュータの手に負えない問題」(NP困難)です。
そのため、「コンピュータに手に負えない問題を脳は解いている。
だからコンピュータで脳の機能を実現するのは不可能だ。」と
誤解されることがあります。
実際には手に負えないのは「厳密に解こうとする」場合だけで、
条件を緩めれば、コンピュータでも解けます。
そのようなアルゴリズムには「近似解法」と呼ばれるものや、
「確率的アルゴリズム」と呼ばれるものがあります。
おそらく脳も巧妙に近似解法を用いていると思われます。
そして同じアルゴリズムがおそらくコンピュータ上でも実行可能でしょう。
◆学習するかしないか
学習するかしないかは、
脳とコンピューターを分ける本質的な違いにはなりません。
ほとんどのソフトウエアは、振る舞いがあらかじめプログラムによって
決められていますが、学習によって振る舞いを変えるソフトウエアもあります。
機械学習の技術を応用した製品は世の中にたくさんありますが、
使っているうちに賢くなるような製品よりは、
出荷まえにすでに学習が終わっている製品の方が多いように思います。
「使っているうちに賢くなる機械」は便利そうですが、
振る舞いが予想できないので、
メーカー側にとっては品質の保証ができないし
出荷後のサポートも難しい気がします。
ユーザにとっても「使っているうちに賢くなる機械」よりは
「買った時から賢い機械」があればそっちの方を買いたいでしょう。
身の回りに学習する機械・ソフトウエアが少ないのは、
そのせいだと思います。
◆計算速度の違い
ヒトの大脳皮質は現在のスーパーコンピュータ程度の計算速度だろうと、
今のところ私は考えています。
おおざっぱな見積もりでは、 1Pflops くらいです。
(ただしプラスマイナス1〜2桁の誤差はありそうです。)
条件によっては、この見積もりよりも、
増えるかもしれませんし減るかもしれません。
両方の要因のうち思いつくものを列挙しておきます。
計算量が増える要因
・大脳皮質以外の組織の果たす役割が大きい場合。
特にヒトの小脳のニューロン数は1000億個以上と大脳皮質よりも多い。
小脳は滑らかな運動制御だけでなく、高次の知能にも関わっていることが
分かっており、小脳まで含めなければなければ人間のような知能は
実現不可能である可能性もないわけではありません。
(でも、小脳損傷患者の症例で、知能に重篤な障害が出るような話は
ないように思います。)
・上の見積もりは発火頻度モデルのようなニューロンの粗い近似で十分であると
仮定していますが、spiking neuron のようなより細かいモデルが
脳の機能の再現に本質的に必要だとしたら、
そのシミュレーションに必要な計算量は2〜3ケタ以上は増えます。
・カオスやノイズなどのアナログな演算が本質的に必要な場合、
十分な精度のシミュレーションを行うためには
膨大な計算量が必要になる可能性があります。
計算量が減る要因
・脳内の神経回路は一部が壊れても全体の機能が失われないように
冗長性を持たせているはずですが、
故障の可能性が低いコンピュータではそのような冗長性は不要です。
・脳は演算精度の悪さを補うため複数のニューロンで同じ計算を
重複して行っている可能性がありますが、
コンピュータにはそれは不要です。
・脳はニューロンの演算速度の遅さを高並列アルゴリズムで
補わなければならないが、
粗粒度の並列計算機では、使えるアルゴリズムの自由度が高く、
計算量を減らせる可能性があります。
・脳は生物学的に実装可能なアルゴリズムしか採用できないが、
コンピュータ上ではそのような制約がないので
やはり使えるアルゴリズムの自由度が高く、
計算量を減らせる可能性があります。
・生物は発熱量、消費エネルギー、神経回路の維持コストなどを
抑える必要があり、そのためだけに存在する
神経回路があるかもしれないが、コンピュータではそれらは不要です。
◆その他の違い
感情を持つかとか、自由意思を持つか、直感を持つか、自己意識を持つか。
これらの「機能」は現状のコンピュータは普通は持っていませんが、
将来的にはコンピュータの上で実現可能だと私は考えています。
簡単な説明しかありませんが、こちらをご覧ください。
参考:脳とベイジアンネットFAQ
コメント、質問などお待ちしております。
一杉裕志のページ