2016年01月29日の日記です


【追悼】マービン・ミンスキー  2016-01-29 10:35:16  コンピュータ 今日は何の日

マービン・ミンスキーが、1月24日に亡くなったそうだ。


26日にはニュースになっていたようだけど、僕は27日になって妻から聞いて知った。

今週ちょっと忙しくて、ネットの情報をそれほど見ていなかったのだ。だから、追悼文もすぐ書けなかった。


もっとも、ミンスキーをそれほど強く記憶していたわけでもない。

妻に「ミンスキーって人が亡くなったらしいよ」と聞いても、すぐに誰だか分らなかった。


ミンスキー? と問い直して、AIの研究家だそうだよ、と言われた。

…で、思い出した。マービン・ミンスキーか。ミンスキートロン作った人だ!



と、すぐに思い出したのがこれくらい、というので、僕がたいしてミンスキーに詳しくないのがわかる。

そんな僕が追悼文を書いたところで、駄文にしかならない。



僕の知識の多くは、「ハッカーズ」という書籍からきている。

コンピューター黎明期の、わくわくするような冒険譚。僕にとってはジュブナイル小説のようなものだ。


まぁ、冒険譚といってもトムソーヤのようなことはしない。実際の山を駆け巡るわけではなく、彼らはコンピューターというフロンティアを切り拓いた。

「ハッカーズ」には、若さゆえのいたずらっ子がたくさん出てきて、誰も見たことのない地平を切り拓く。これがジュブナイルでなくしてなんであろう。


そして、ジュブナイルには「子供の成長を見届ける大人」が必要だ。

ハッカーズの第一部では、その一人がジョン・マッカーシー…ジョンおじさんだ。


マービン・ミンスキーは、ジョン・マッカーシーの同僚で、ともにAI研究の創始者のひとりだ。

ただ、ハッカーズにおいては、ミンスキーはマッカーシーよりも扱いが小さい。

というのも、当時のミンスキーは、マッカーシーの弟子で最大の理解者、というような位置づけだからだ。


#とはいえ、無視できない重要人物なので、それなりに出てくるのだが。



マッカーシーは「若者がコンピューターに熱中している」ことを知り、彼らのやりたいようにやらせただけだった。

ハッカーが少しでも速度の速い、少しでもステップ数の短いプログラムを作ろうと工夫していても、それはバイクで速度を出して喜んでいるようなもの…若さゆえの楽しさだろうけど、ほとんど意味はない、と考えていた。


ミンスキーは、若者の中に飛び込み、自らも一緒に熱中した。

小さなプログラムを作ることには大きな意味があるし、直接プログラムをしたものにしかわからない「体験」があると感じていた。


当然、ハッカーたちはミンスキーのAIの講義には必ず出席したらしい。

ミンスキーはハッカーとして尊敬を集めていたし、その偉大なノウハウの一端を学べるのだから。




ある日、ミンスキーは PDP-1 の画面上に渦巻き曲線を描こうとしていた。


直線を描くのは簡単だ。だけど、整数演算しか使えない PDP-1 では、曲線を描くのは難しかった。

だけど、「渦巻き」がかけるプログラムは、すでにハッカーの間で作られていた。


こんなプログラムだ。

当時はアセンブラだけど、わかりやすいようにC言語風に表記する。



while(1){
  Y' = Y;
  X' = X;
  Y = Y' - (X'>>4);
  X = X' + (Y'>>4);
  pset(X,Y);
}


つまり、一個前の座標から新しい座標を生成して、そこに点を打っているのだな。

ちなみに、PDP-1 の座標系は、ディスプレイ中央が (0,0) になっている。



ミンスキーは、これをちょっと間違えて、最後の Y' を Y としてしまったらしい。

直前の行で Y を書き換えているので、「1個前の座標」にならない。


実をいうと、それ以外の Y' X' は無意味だ。

「一個前」と明示するために最初に X Y を保存しているのだけど、そもそも書き換えの影響を受けるのは最後の Y' だけ。

そこを書き間違えた。


つまり、次のプログラムを実行したことになる。



while(1){
  Y = Y - (X>>4);
  X = X + (Y>>4);
  pset(X,Y);
}


これが、偶然からの大発見だった。

描かれる線は、渦巻きではなく正円になった。


正円が描けるということは、SIN / COS の三角関数を生成できる、ということ。

ミンスキーは偶然から、整数演算のみで三角関数を導き出すプログラムを作ってしまったのだった。



これはすごい発見だったのだけど、ミンスキーはこれで終わりにしなかった。

この、偶然見つけたアルゴリズムの「意味」を数学的に検証して、「3つの円」を表示するプログラムを編み出した。


当時、ハッカーの間で、ディスプレイに興味深い画像を表示する、短いプログラムを作るのが流行していた。

Hacks 、もしくは HAX (読み方はどちらも「ハックス」)と呼ばれる。


3つの円を表示する、といっても、単純に表示するのではない。

表示に関係するパラメーターを、コンソールの2進スイッチにより与え、あえて「円を崩して」表示できる。


これによって3つの円は非常に複雑な形状へと変化し、パラメーター次第でいろいろな図形が描き出される興味深いプログラムとなった。



3つの円を描きだすので、ミンスキーはこれを「Tri-pos」と名付けたのだけど、ハッカーたちは「ミンスキートロン」と呼んだ。


#リンク先のミンスキートロンはエミュレータで再現されたもの。

 上のメニューで何か選ぶと、2進スイッチが「お勧めの設定」になっていろいろな図形を描いてくれる。

 もちろん、自分でスイッチをいじって変化を楽しんでもいい。




ジャック・デニスの話を以前に書いたことがある。


デニスも、マッカーシー、ミンスキーと共に、MITのハッカーを導いた人だ。

ただ、マッカーシーとミンスキーは当時すでに偉い人だったけど、デニスは当時は新米だった。



だから、マッカーシーとミンスキーは「師匠」であり、デニスは「兄貴」だった。


それはともかく、3人ともMITのハッカーたちと共に過ごし、コンピューターに対する先進的な考え方を持っていた。


当時のコンピューターは、バッチ処理が普通。

パンチカードの束をセットして、後は結果が出るのを待つだけ、という使い方だ。


でも、3人とも、コンピューターはいつも人間が使える状態にあって、対話的に使えたほうが良いと考えた。


当時のコンピューターは非常に高価なので、1人1台、なんてことはできない。

コンピューター1台で、同時に複数のプログラムを走らせる方法…今なら当たり前の、マルチタスクの研究を始めた。



最初は、PDP-1 を使った小さなシステムだった。


これが成功し、成果を ARPA に報告すると、さらに研究を行うために ARPA が資金提供してくれることになった。

その額、300万ドル。


#どうも、文献によって金額が違うのだけど、後からの追加などもあったためだと思う。



ARPA は、この資金を「コンピューターをマルチタスクで使うための研究」に拠出した。

でも、マッカーシーやミンスキーは、この資金を元に「プロジェクトMAC」を立ち上げた。


このプロジェクトは、コンピューター科学の研究プロジェクトとされた。

「マルチタスク」もその一つではあるのだけど、他にもいろいろな研究をする。



それまで、マッカーシーらは年間 10万ドルの予算しか与えられていなかった。

ところが、いきなり 300万ドルが使えるようになったのだ。


そして、ミンスキーはこの「マルチタスク研究のための資金」の 1/3 、100万ドルを使い込んだ!

マルチタスクで各個人がコンピューターと「対話」できるようになれば、対話するためにコンピューターが人間を理解する必要がある。


じゃぁ、人工知能はマルチタスクでできることの研究として重要だ。

マルチタスク研究の一環なのだから、お金を使って何が悪い!



使い込んだといっても、別に私腹を肥やしたわけじゃない。

優秀な学生ハッカーたちを雇い入れて、プログラムを作らせたのだ。


ハッカーたちは、ほっといてもプログラムを作る。それが楽しいからだ。

例えば、世界最初のテレビゲームの一つとされる、Space war! を生み出した。


でも、ゲームをしたかったんじゃない。それを作ること自体が楽しかったのだ。


だから、プログラムの目的はなんでもいい。

ミンスキーが、バイト代を出すから人工知能の研究を手伝ってくれ、というのであれば、喜んで参加した。



ARPA は怒らなかったのか?

大丈夫、デニス(というより、その師であるコルバト)がちゃんとマルチタスクの研究をやっていたから。


デニスは後に Multics のプロジェクトに参加するのだけど、最初はそんな大掛かりではない。

IBM に協力してもらって…IBM は乗り気ではなかったようなのだけど、IBM 7094 というコンピューターを改造して、マルチタスク機能をつけてしまった。


ミンスキーが 1/3 を使った、という分け方の「根拠」は僕は知らないのだけど、マッカーシーとミンスキー、コルバトで3等分したのではないかと思っている。




この後、プロジェクトMACは、MITのハッカーが集う場所になっていく。

研究内容は多岐にわたった。当時としては最先端の実験、というものが多かった。



今回、訃報に触れたときに、ミンスキーが「LOGO や Lisp の開発にも携わった」という評伝があった。

恥ずかしながら、僕はそれを知らなかった。


パパートが書いた「マインドストーム」という本があって持っているのだけど、ずっと前に読んだ切り、内容はほとんど覚えてない。

もう一度読み返してみた。



プロジェクトMACには、後にシーモア・パパートがやってきて、「コンピューターを使った教育」の実験を始める。

パパートは、本の中でこの頃を振り返って、二人の「強い影響を受けた人物」を挙げている。


1人がミンスキーだ。最も重要な人物、としてあげられている。


パパートは教育心理の専門家で、子供の心に詳しかった。

ミンスキーは人工知能の専門家で、人工知能がどのように学習するかに詳しかった。


この二人が、実際に子供の教育現場に立ち会いながら、子供がどのように学習していくかを、時に心理学の見地から、時に「学習機械」としての見地から、意見を出し合って理論として固めていったのだ。


これはパパートにとって最も重要な経験だった、と回顧させているのだけど、LOGO の開発自体に手を貸したわけではないようだ。

もっとも、LOGO は子供の教育に使える言語として考えられたわけで、「意見交換」を LOGO の開発だとみなすのであれば、そう言えなくもないけど。



ミンスキーは、計算理論が、単に「数学の計算方法」ということではなくて、その人の世界観を形作るための重要な存在である、とパパートに示したそうだ。

これが、何よりもパパートの考え方を変えたとのこと。


ちなみに、もう一人の「影響を受けた人物」はアラン・ケイ

ケイはパパートの元で学んだ弟子のような位置づけなのだけど、「子供のことを考える」という点で、誰よりも強い情熱を注いでいたそうだ。


Lisp も LOGO と同じような感じで、Lisp 自体はマッカーシーが考えたものだ。

でも、マッカーシーとミンスキーは常に近い位置にいたので、いろいろと意見交換はしているみたい。

どこまでが「開発に携わった」といってよいのかわからない。


ただ、一つ言えることは、ミンスキーは恐ろしく頭が良くて、意見を求められれば畑ちがいの分野であっても、喜んで飛び込んで実のある意見を出せた、ということ。

関係した誰もが、ミンスキーはとても頭が良かった、と振り返っている。


そして、何よりも面白がりで、いたずら好きだったらしい。

ハッカーと仲良くなれたのも、そういう子供っぽいところがあったからなのだろう。




ミンスキーは、パパート共に「ニューラルネットワーク」の研究もしている。


たくさんの電線に可変抵抗(ボリューム)をつないだ、配線のお化けだ。

でも、これは人間の脳のニューロン構造を模倣している。


脳は、ニューロン間の接続の「強さ」を可変させることで物事を学習する。

同じように、電線間の接続の「強さ」を、可変抵抗で調整していけば学習する機械になる。


ただ、ニューラルネットワークは、恐ろしく可変抵抗が多い。

何をどう回せばよい学習になるのかわからない。学習することはわかっていたのだけど、扱うのは職人芸だった。


1958年に手法が示され、60年代に流行したのだけど、ブームの初めの頃は、「人間の脳を模倣しているのだから、すごいに違いない」という期待論が上回った。

でも、先に書いたように、学習方法すら確立していなかったのだ。


これに対し、1970年代に、ミンスキーとパパートがニューラルネットワークの数学的な解析を行う。

これで、能力の限界がわかった。

「上手なプログラムを作れば分類できる」ものを分類できる、というのが能力の限界だった。


実は、これはすごいことだ。

上手なプログラムを作れば…というけど、それは職人芸だ。

でも、ニューラルネットワークは、学習することができる。プログラムする必要はない。


ただ、この時点では学習手法が確立しておらず、学習も職人芸だった。

ブームは急速にしぼんでしまった。



1986年に、ニューラルネットワークが再注目される。

結果を見て、「誤差」をフィードバックすることで学習する、という手法が確立するのだ。


これでニューラルネットワークの「第2次ブーム」が起きる。



僕はこの頃大学生だったのだけど、研究室の先輩が興味を持って、「脳を模倣するらしい」とプログラムを自作していた。

そしたら、研究室の教授が、何やら英語の論文を持ってきてくれた。


しばらくして、ゼミで先輩が論文の内容を発表した。

フィードバック学習の手法と、その限界についての論文だった。


フィードバック学習方法では、ニューラルネットワークをあまり複雑にできない。

これは、「脳を模倣する」と言いながら、脳ほど複雑にはできないことを意味する。


ミンスキーの結論も一緒に書かれていた。

上手なプログラムで分類できる程度のものしか分類できない。

…ただし、これは「十分に複雑なニューラルネットワークがあれば」というのが前提だ。


この二つを組み合わせると、出てくる結論は一つ。

ニューラルネットワークでは、下手なプログラム程度の結果しか出せない。


先輩は急に興味を失って、作るのをやめてしまった。



#念のために書いておくと、この後もニューラルネットワークは研究され、現在「第三次ブーム」と言われている。

 ディープラーニングと呼ばれる手法で、上手なプログラムと同程度以上の成果を、上手なプログラムを組むよりも低いコストで実現できるようになった。

 ただし、ここでいう「低コスト」はプログラム時間に関することだけ。

 学習のための膨大な「教材」と、膨大な学習時間が別に必要。


#関係ないけど、2000年ごろに「サポートベクタマシン」という自動学習手法が流行した。

 これも、最初は理論が未完成で期待されていたのだけど、理論が完成すると「上手に組まれたプログラム並みの能力しか出ない」ことがわかり、ブームが過ぎた。

 もちろん、適材適所で、普通のコンピューターが良いところ、ニューラルネットワークが良いところ、サポートベクターマシンが良いところは違うのだけど。




ミンスキー、調べれば調べるほど、逸話が次々と出てくる。


とても書ききれないので、手持ちの「ハッカーズ」と「マインドストーム」から、面白いところだけ抜粋して、ついでに自分の大学時代の、ミンスキーに関係しそうな思い出話を書いた。


今後も機会があったら、少しづつ業績を紹介していきたいと思う。





同じテーマの日記(最近の一覧)

コンピュータ

今日は何の日

関連ページ

サシっす!!【日記 18/04/14】

世界で最初の{弓括弧}【日記 16/02/11】

ケン・トンプソンの誕生日(1943)【日記 16/02/04】

シーモア・パパート 誕生日(1928)【日記 16/03/01】

「人工知能」の生まれた日(1955)【日記 16/08/31】

別年同日の日記

05年 外構チラシ

09年 ジョウビタキ

10年 加湿器

15年 「デフォルト」という言葉の意味

15年 プログラム言語における「デフォルト動作」

18年 テクニカルサポート


申し訳ありませんが、現在意見投稿をできない状態にしています


戻る
トップページへ

-- share --

4000

-- follow --




- Reverse Link -