父の先見
史上最大の発明:アルゴリズム
早川書房 2001
David Berlinski
The Advent of The Algorithm 2000
[訳]林大
この二つは必ずしも
熱い蜜月関係にあるわけではない。
アルゴリズムのほうが、ずっと広く、ずっと柔軟だ。
しかし、そのアルゴリズムにも
トートロジーという悪魔がひそんでいた。
この悪魔を克服するために、
近代アルゴリズムが論理的に確立していった。
今日のコンピュータ屋さんがお世話になっているのは、
こちらのアルゴリズムである。
が、その背景の意味はほとんど忘られている。
アルゴリズムから「概念」と
「意味」を取り戻したほうがいい。
意欲作である。おおげさな邦題になっている。内容構成も変わっている。むろんアルゴリズム(algorithm)の本質を解剖しようという野心自体がそうとうに大胆なものなのだが、それをべつにしても、かなり風変わりだ。
ライプニッツ(994夜)からゲーデル(1058夜)やチューリングにおよぶ数学の冒険を解説しているところもあれば、つねに人間の解明の努力をからかっているところもある。数式や論理記号が入っているかとおもえば、短い物語のようなフィクションがしょっちゅう挿入されていて、おまけに厳密な議論のあいだにあえて曖昧な議論や言葉やイメージを差し挟んでいる。得体のしれない記号も出てくる。
さらにチャプタータイトルのすべてを「宝石商のビロード」「スキームの市場」「理性の孔雀」「ラプソディ・イン・ナンバーズ」「多くの神々の世界」といった文学的な装飾で括っている。ふつうアルゴリズムについての本だというなら、コンピュータ・プログラマーのためのアルゴリズムとデータ構造の関係を解説するのが、いまの流行だろうに、これではきっと面食らう。
訳者も戸惑ったらしく、あとがきでは「これは奇書だ」「どうしてこんな構成をおもいついたのか不思議だ」と告白している。翻訳ではわからないが、独立分詞構文が山ほど出てくるらしい。それにしてはよくぞ翻訳できたものとおもう。
たしかにおかしな本だ。どこか風狂じみたところもある。数理的風狂だ。文意がとれないところもある。f(x)なのだ。それなのに、全体としてアルゴリズムの真意や背景についての肝心な要訣をみごとに突いている。ときおり挟まれる“数学ビリヤード”ではとびぬけた名人芸を見せている。
だいたい著者の経歴からして変わっている。最初はコロンビア大学で中世史を学んでいた。つまり歴史の専門だったのだ。そのあとプリンストン大学で哲学の博士号を取得し、スタンフォード大学とラトガース大学では哲学や論理学を教え、パリ大学では数学教授になっていながら、なんとすっぱりと大学教授を捨てて、アメリカに戻って著述に専念してしまった。すでに微積分についての大著を書いたらしいが、ぼくはまだ見ていない。
ところで、本書によってアルゴリズムとは何かということを見抜いてもらう前に、デジタル・コンピュータとアルゴリズムの関係を、恋人のような蜜月関係だと信じこんでいる諸君に、あらかじめ釘を刺しておきたいことがある。
デジタル・コンピュータはあくまで機械であって、その他のあらゆる物的システムと同様に、熱力学の冷たい法則がもたらす結果に縛られている。時間が尽きれば、活力も尽きるのだ。ところがアルゴリズムはそういうものではない。アルゴリズムはサインとシンボルによって形成される抽象的な調整と編集のシステムなのだから、思考そのものと同じく、「時間をこえた世界」に属している。また「意味を内包した世界」に属している。
まず、このことに釘を刺しておきたい。だからこそ、アルゴリズムはコンピュータが出現するずっと以前から、世の中に波及してきたわけなのだ。ということは、コンピュータがいまやっていることの大半は、人間が有史以来やってきたことであって、その何分の一かを、人間はなぜかごそごそ取り出して、アルゴリズミックに組み立ててきたわけなのだ。それがピタゴラスからフワーリズミーまでの数術、算術、数学だ。いや、アルゴリズムは数学ばかりとはかぎらない。サインとシンボルを巧みに組み合わせているなら、それがアルゴリズムなのだ。
たとえば、そのひとつが官僚機構というものだ。古代中国がそのチャンピオンであったけれど、今日におよぶ官僚機構ほど複雑なアルゴリズムを社会化できた例はめずらしい。
もっと複雑に、そして格段に高級に、アルゴリズムを遂行しているのは、なんといっても生きた細胞たちであり、生命そのものである。なぜなら、アルゴリズムは一組の規則であり、規定であり、行動規範であり、指針であり、結びつけられた制御なのだ。そして、この生体をくまなく組み立てているアルゴリズムは、生体カオスが繰り出す言葉の群にすらなっている。
(コドンで表したアミノ酸)
こういうアルゴリズムにくらべると、デジタル・コンピュータは一般に期待されているほど輝かしいものではないし、複雑でもない。むしろ片寄った限界に見舞われたデクノボーのようなものだと思ったほうがいい。せいぜいテクノ坊である。
もしもアルゴリズムをすばらしい庭園に譬えるなら、コンピュータはその下水システムを担当しているというほどのものなのだ。
けれども、そのデジタル・コンピュータがアルゴリズムを呑み込みだした。そして、あれよあれよと、呑み込み尽くした。そう、思われている。それは、コンピュータのもつ大容量の消化力と計算遂行の高速性によるものだった。
このこともよくよく知っておかなければならないのだが、なぜコンピュータがアルゴリズムとの相性をこんなによくしたのかといえば、アルゴリズムがその属性として人工的な記号力をもっていて、もともと「記憶と意味」との、「願望と意図」との関係をつなぐ世界に属していたからなのである。
このことに、さらに第2の釘を刺しておいたうえで、言っておきたいのは、やはりアルゴリズムはうんとおもしろく理解したほうがいいということだ。
さて、「世界を変えたのは微積分とアルゴリズムだ」というのが本書の大前提である。微積分はともかくとして、ではアルゴリズムとはそもそも何なのか。
いまではすっかりジョーシキになったろうが、アルゴリズムの一番かんたんな定義は、「有限のステップによって有効な目的を完了させるまでのすべての手続き」ということである。少しいいかえれば、「与えられた問題を型にあてはまるような一連の演算に組み立てて、それを実行順に進行させる手続き」と言ってもいい。だからこそ、生命組織や官僚組織はそのようなステップをふんだんに組み合わせて、活動できるようにしたわけだ。
このステップは、それをどんな記号や言語によって書き綴るのかということによって、その性能が大きく変わってくる。生体組織ではそれがDNAやRNAや生体酵素などになっていて、官僚組織ではそれが命令と応接と実行になっている。
しかしこれを機械言語というものに、すべて移行させることもできたわけだった。これがいわゆるプログラミング言語というものだ。いまはC言語という機械言語をつかっていることが多い。
というわけで現在では、アルゴリズムというとこのプログラミング言語を駆使することだとすっかり思われている。いまこの瞬間も世界中のパソコンの前で、この有限のステップの書きこみばかりをやっているプログラマーが、1000万人とか2000万人のオーダーでいるのだろう。かれらは毎日毎時毎分毎秒を、機械言語のステップづくりと睨めっこばかりする。そこではおおむね「アルゴリズム=プログラム」というふうになっている。
つまり、アルゴリズムというのはプログラムのことだということになってしまったのだ。もう少し詳しく言っても、「プログラム=アルゴリズム+データ構造」というあたりだろう。データ構造というのは、効率よく操作を進めるためにデータ(要素)をどのような表現形式にしておくかということをさす。データをシークエンス(列)ごとにリスト化し、ツリー構造などをつくりつつ、これをポインタで自在に動かしていけるようにする。それがデータ構造だ。
では、そういうことをしていて、さて自分が何をやっているのかということを原理的に説明できるプログラマーがどのくらいいるかというと、おそらくはめったにいない。少なくともぼくが知り合ってきたプログラマーは、アルゴリズムの背景には無頓着だった。アルゴリズムの哲学なんてめんどうくさいのだ。
むろん、自転車を組み立てられなくとも山を疾駆することはできるし、薬剤を配合できなくたって難病は治せるのだから、まして飛行機を組み立てられない名パイロットはいくらでもいるのだから、それでもいっこうにいいのだけれど、しかし、そのアルゴリズムが確立されるまでざっと300年がかかったということは、なんとなく感じたい。
アルゴリズムの歴史の最初の最初は、アリストテレス(291夜)までさかのぼる。「すべて」と「ある」のあいだに「論理というアルゴリズム」を入れたのが、アリストテレスだった。しかし本格的な準備は、17世紀のライプニッツ(994夜)から始まった。これでアルゴリズムが、定言的な三段論法が代数によって活性化されたのだ。
やや正確にいうのなら、「推論」と「判断」のあいだを「代数というアルゴリズム」で埋め立てたのが、ライプニッツだったのである。詳しいことは、ローギッシェ・マシーネの発想を解説しておいた994夜を読んでもらいたい。
時代をはしょっていえば、次にアルゴリズムの歴史に飛び出したのは、19世紀末のジョゼッペ・ぺアノだった。ペアノはぼくが工作舎のスタッフだった十川治江(いまは社長さん)に促されていっとき夢中になった数学者で、無限個の数を有限個の記号におきかえる“発明”をした。ペアノがライプニッツ以来の「普遍言語」についてもいろいろのアイディアをもっていたらしいことは、ペアノのアルゴリズムへの貢献以上に興味深いけれど、それは省くとして、次に登場するのはゴットロープ・フレーゲである。
フレーゲは学究生活のほとんどすべてをイエナ大学ですごした数学者だが、何をしたかというと、一言でいえば「形の計算」をした。これはアルゴリズムの近現代歴史の"マザー"になった。アーキタイプになった。
公理系では、数学者が仮定すること(すなわち公理)と、数学者が導き出せること(すなわち定理)とのあいだに、一種の共鳴関係を確立させている。そのため、計算をする者はどんな計算のステップもなんら踏み外さないようになっているだろうとタカをくくって、計算をしつづける。
ところが、ここにはとんでもない悪魔がひそんでいた。「トートロジー」(同義反復)という悪魔だ。これは命題計算といって、命題ばかりを計算しようとすると、いつのまにか出てくる悪魔だった。
トートロジーというのは、概念の反復や再生が思考の途中に絡まってくるために、本来の思考や計算がおかしくなってくることをいう。計算とは、その最初から終結までに矛盾がないとされているからこそ計算なのであるが、そしてその計算によって真理が証明されるということになっているのだが、トートロジーという悪魔はそれをおかしくさせる。計算の土台がおかしくなってくる。おかしいと言わないなら、何も意味を導き出せないことをいう。
そこでフレーゲは、この命題を成立させている概念そのものを計算できるようにしたらどうかということを思いついた。概念が計算できるなら、そこには意味がくっついてくる。そしてその表記法を考えだした。これを「概念表記法」という。
われわれは日々、「そんなこと関係ない」「金髪に染めたね」「君が大好きだ」「人生は暗い運命をともなっている」といった思考を、臆面もなく言明しつづけている。にもかかわらず、この言明はまことに短命で、しかもほとんど実証されたことがない。
実はこれらは、「そんなこと」「金髪」「君」「人生」のほうの主語的命題では、何も説明していないのだ。説明(言述)をうけもっているのは、「関係ない」「染めた」「大好きだ」「運命をともなう」の述語のほうなのである。フレーゲはそこに注目して、概念を計算するには主語にあたる概念を、述語のほうが受け持って計算してしまえばいいと思いつく。そのため述語に述語記号を与えて、そこから「述語計算」という方法を編みだした。
たとえば「金髪に染めた」という言明では、主語的命題は「誰もが金髪に染めた」の「誰もが」にあって、そこから「それをやったのは君なのだ」という述語が、この主語を包摂しているというふうにした。実はアルゴリズムにとっては、彼女が金髪になったのか、ビビンバを食べたのか、彼を好きになったのか、本当は好きでもないのかなんてことは、どうでもいいのだ。アルゴリズムはそれを述語部分が引き取って、金髪やビビンバにあてはめておけばいい。彼女は任意の主語なのだ。
こうしてフレーゲは「述語論理」というまことに創造的な行為を、アルゴリズムの中に封入することをなしとげた。かくて、アリストテレスの「すべて」と「ある」は、いまではそれぞれ「全称量化子」(∀)と「存在量化子」(∃)というふうに呼ばれているのだが、すっかり記号化されることになったのである。主語の論理に依存したトートロジーの悪魔は、これでひとまず回避されたのだ。
ここから先の話は、クルト・ゲーデルの「不完全性定理」について説明した1058夜を参照してもらいたい。現代アルゴリズムの歴史は、ヒルベルト(133夜)、ゲーデルをへて、実は第二の悪魔に出会うことになる。
これは「不完全性」という悪魔だったけれど、数学者と論理学者たちは、この第二の悪魔を回避して超数学を駆使する方法に邁進することにした。その後、ラッセル、ホワイトヘッド(995夜)をへて、アルフレッド・タルスキ、アロンゾ・チャーチなどの思索と実験をジグザクと動きながら、現代アルゴリズムの模索はついに「チューリング・マシン」に行き着いたのである(本書はテューリングと表記しているが、ここでは伝統に従ってチューリングとする)。これはアルゴリズムがコンピュータに化けていく瞬間をとらえた。
アラン・チューリングが考えた「仮想上の機械=M」というアイディアは、まことにもって傑作だった。こういう発想を天才的といっていいのだろうが、すこぶるめざましい。世界発想史上の1、2位だか5、6位だかを争うものといってよい。
枡目によって区切られた無限に長いテープがあって、その枡目には記号が1個書きこめるようになっている。このテープは原則的にはいくら長くてもかまわない。したがって桝目もいくつでも用意できる。ということは、チューリング・マシンは無限大の記憶量があるということになる。
この桝目に記号を書きこむのだが(また消去するのだが)、記号は0と1の2種類しかない。桝目は1桝ずつ右に動くか、左に動くかしかしない(または動かない)。これを読み取りヘッドがチェックする。ヘッドには3つの機能がある。移動能力、安定した走査能力、そして編集能力だ。3つ目の編集能力というのは、ぼくが勝手に名付けたものではない。本書の著者は「編集者の欲求」という言葉をつかって、「ヘッドが目に入るものを書きなおしてよくしたいとする機能」というふうに説明している。なかなかうまい説明だ。まさに編集能力だ。
以上が、チューリング・マシンのすべてである。無限のテープ、一組の記号、3つの機能をもつ読み取りヘッド、そして次々にあらわれる一組の状態。これだけだ。あとはこれを無限にくりかえす。このチューリング・マシンのしていくひとつ一つの仕事を、ルーチン(ルーティーン)と言った。
これは、今日のデジタル・コンピュータの完全なる母型である。もっと正確にいえば、ここにコンピュータの概念モデルがあるということだ。そうなのである。チューリング・マシンは、したがってデジタル・コンピュータの母型は、概念計算を自動的に進行させる最初のアルゴリズミック・システムだったのである。
テープに書き込まれた初期情報を制御装置が
読み取り、
フィードバック回路を経て、その後は自動的に
走査・書き込みしていく仕組み。
ちなみに、ちょっと余談を付け加えておくが、これほどの天才を軍部がほっとくはずはなく、イギリス軍はナチス・ドイツが考案した「エニグマ」という暗号情報システムの解読のために、チューリングを情報部(諜報部)に雇い、日夜その作業にあたらせた。
チューリングがみごとに「エニグマ」を解読したことはいうまでもない。チャーチルはチューリングが暗号を解読したことをドイツにさとらせないために、コヴェントリーが襲撃されることを知りながら、わざわざ爆撃をさせておいたほどなのだ。
では、その後のチューリングはどうなったのか。これについてはいずれゆっくり書きたいと思っているのだが、チューリングは「形態形成」についての驚くべき先取りをみせた論文に熱中し、さらに人工知能についての史上最初の視点を提案した。後者が有名な「チューリング・テスト」というもので、コンピュータが知能があるとされるには、コンピュータが人間と自由に会話をして、それを人間が自分以外の人間と会話していると感じられるかどうかにかかるというものだ。
むろん、このチューリング・テストをクリアできたコンピュータもソフトウェアも、いまのところ皆無である。そういう意味では、チューリングこそが今日におよぶすべてのコンピュータの将来を見通していたということになる。
こうしてチューリングはただ一人で前人未踏を歩きつづけたのだが、実は人生を歩む一人としては、当時の世間を驚かすようなことをして、一人でシアン化合物をリンゴに入れて、あたかも20世紀のソクラテスのように死んでいったのである。その世間を驚かせたことというのは、チューリングは自分がホモセクシャルであるということを、社会に対して敢然と告白したということだ。
が、世間はひどく冷淡で、チューリングはバカバカしくなって、20世紀のソクラテスになってみせたのである。
チューリング・マシンののち、エミール・ポストが読み取りヘッドの代わりに、そこに人間をおくことを思いついた。枡目に印をつけるのは人間、右の枡目に移るのを決めるのも人間、自分がどこにいるかを判断するのも人間、そういうシステムだ。
これは、いまではポスト・マシンといわれているもので、アルゴリズムの進行を機械と人間との分有にしたことにおいて、その後のコンピュータとプログラマーの分離を思わせる。
本書はこのあと、フォン・ノイマンがいわゆるノイマン型コンピュータをどのように設計したかという、誰もが知っている話をしたのち、システムとエントロピーの関係という難問に入っていき、読者をおおいに煙にまく。ただし、ここはかなり難しい。いずれボルツマンを千夜千冊したときか何かのとき、言及したい。
ついで、本書は第13章「精神の産物」に進んで、以下、14章「多くの神々の世界」、最終章「クロス・オブ・ワーズ」で神秘的な結末を迎えるというふうになる。著者の独壇場とも、また、今日のプログラマーやコンピュータ屋たちがいつも敬遠しているか、怖気づいているところなので、少し紹介しておきたい。
世界がどのように見えるかなどということは、考え方しだいである。というよりも、「そういう見方を入れた世界」がいくらでもあるということなのだ。
ところが、狭い定義での科学や物理では、また数学では、また数理科学やコンピュータの世界では、いつも「もの」だけで構成したいとか、それは全部「データ」になるんですねとか、「工学」化できるものとできないものがあるんですよとか、その程度の迷いで、とても大事なものを逃してしまうことがしばしばなのである。
しかし、クロード・シャノンに戻って考えてみればわかるように、アルゴリズムの世界を通信上に自立させたということは、そもそも科学的な世界像とはいささか別の世界像を、アルゴリズムによって組み立て、これを交わしあう可能性があるということだったのである。それがつまりは「情報」ということだったはずなのだ。
そして、この「情報」という概念は「記号」に代わりうる概念であるはずだったのである(ここで、「情報」が「エントロピー」の逆数であらわせるということを思い出せば、本書がこの前の章でエントロピーに入っていった理由も見当がつくだろう)。
ということは、もっと決定的なことをいえば、コンピュータとアルゴリズムの結婚は、「意味の交信」を可能にしたネットワークの上に創発したものだと見たほうがいいということだ。さらにもっと決定的なことをいえば、そのようにしてできてしまったコンピュータ・ネットワーク世界というものは、かつて人類が「言葉」をつくって「意味」を管理し編集してきたこととまったく同じ創発性によって、いまや「情報」によって「意味」を編集しつづけているというべきなのだ。
しかし、しかしながら、認知科学やコンピュータ工学は、このときに「意味」というものが何であるかを、ついつい忘れてしまうのだ。
ニューラルネットの例で説明してみると、これは実際の脳でおこっているニューラルネットワーク(神経網)のどこかに、電子仕掛けのニューラルネットというものがあると想定して成立させたシステム(アルゴリズム)である。したがって、この電子仕掛けのアルゴリズムはデジタル・コンピュータの中でも“生きている”と想定することができる。
ニューラルネットは、一連のノード(節)あるいは単純なプロセッサーでできている。各プロセッサーの状態は、他のノードあるいはプロセッサーから受け取る刺激だけで決定される。ノードどうしを結ぶパス(道筋)には、ウェイトが割り振ってあって、それによって刺激信号は強まったり弱まったりすると考える。
これで、ノードのネットワークができて、そこにシステムのメモリーが複合的に対応するというふうに解釈することが許される。こうしておいて、ここにさまざまな「エラー」がおこると、その「情報」がシステムにフィードバックされて、それらを調整するというふうに進めることができる。ふつう、これをコンピュータの学習性という。これが、今日のパターン認識・筆跡認識・音声合成・文法分析を成立させているしくみの基本になってきた。
では、ここでは「意味」はどうなっているのか。これらは意味の編集をしていることになるのか、それともそうではないのか。
問題はここからだ。ニューラルネットが“意図”のようなものを進捗させていることまでは、おおかたが理解する。たとえば犯人の写真と一般の写真をランダムにニューラルネットに学習させていくと、そこから犯人の特徴らしさというものが出てくる。そういう“意図”によって情報が組み合わさったのだ。それなら、これはシステムがアルゴリズミックにつくりだした「意味」なのかというと、ここから、みんな自信がもてなくなっていく。ここでフレーゲやチューリングに舞い戻る勇気のある者は、ぐんと少なくなる。
本書の著者が、このような問題に明快な説明を与えているとは、期待しないほうがいい。最初に言っておいたように、この著者はたいそう暗示的であり、変わっていて、そのような書きっぷりと方法によってしか、本書を書いてはいない。
だから、この先の話は、ぼくとしては別の本を千夜千冊して続行しなければならないのだが、それでも今夜のところでも、多少のヒントを書いておくことはできる。
3つ、ある。
第1に、いま、最高の機能と最大の容量と最速の演算能力をもったコンピュータの可能性がどうなっているのかというと、そいつは、適当なパソコンをうまくつないだシステムと、その“意図”においてはほぼ同じような様相を呈しているということだ。
つまり、記号とアルゴリズムと情報でできたシステムは、巨大コンピュータであっても、よくカスタマイズされたパソコンでも、さらにいえばコンピュータ・ネットワークの総体でも、だいたい似たようなものだということである。
第2に、ただしかしながら、それらに見えてくるのは、あるいは浮き上がりつつあるのは、記号とアルゴリズムと情報という3つの別々の歴史をもった“意図”がかなり交じりあったものだということだ。
猛烈な計算装置を駆使しているうちに、それをアルゴリズムというのか情報というのか、それとも記号の離合集散にすぎないというのか、もはや区別がつかないような“意図”の表象を見せているということである。
第3に、これを「意味」とよぶには、まだまだ時間がかかるだろうが、「意味」に向かっているものでないとも言えないものでもあろうということだ。
つまり、アルゴリズムの歴史は、そうとうに高度になったITコンピュータ・ネットワークの中で、しだいに「意味のアルゴリズム」への変身をとげているかもしれない、ということだ。これは、おもしろい。ただし、まだ誰もそこには踏みこんではいない。それゆえこれを、さらに明快な展望にしたいというのなら、ここから先はアルゴリズムという概念にも、いっさいこだわらないほうがいいだろう。そして、アルゴリズムを生んだ背景に、コンピュータ屋もコネクショニストも心を致し、かつてアリストテレスが「すべて」と「ある」のあいだに論理をおいてみたように、「ある」のコンピュータと、「すべて」の人間性との“あいだ”に、もう一度、意味の編集世界を投じてみることである。
これ以上のヒントは、別の夜に書こう。が、きっとその前に「量子コンピュータ」とは何かとか「非ノイマン型コンピュータ」とは何かといったことについて、ちょっと寄り道することになる。
では、バイナリー! いや、バイバイ。