ELIZA(5)開発の背景は?

2019/04/12
藤田昭人


ここしばらくコードを使ったページが続いたので、久々にウンチク系の内容で。

精神分析医シミュレーターで有名になった ELIZA。そこには Weizenbaum の巧妙な戦略が隠されていた…と言うことは既に紹介しました。 では、この巧みな戦略を Weizenbaum は最初から意図していたのか?と問うのがこのページのお題です。 彼のキャリアを振り返れば「タフで聡明で博識な Weizenbaum のこと、全ては計算づくで…」と考えたくなるところですが、 実際には さにあらず だったようです。


"Islands in the Cyberstream"

実は、この話題にピッタリ来る書籍が刊行されています。 Weizenbaum が最晩年にインタビュアーのガナ・ウェンド(Gunna Wendt)に語ったインタビューを収録した本です。 Weizenbaum が亡くなる2年前の 2006 年にドイツで出版されました。

https://www.perlentaucher.de/buch/joseph-weizenbaum/wo-sind-sie-die-inseln-der-vernunft-im-cyberstrom.html

こちらがドイツ語による原書です。その後、2015 年に Benjamin Fasching-Gray の手で英語に翻訳されました。

litwinbooks.com

上記は英語の翻訳版。原題では "Wo sind sie, die Inseln der Vernunft im Cyberstrom?("Where are they, the islands of reason in cyberstream?":『彼らはどこへ?:サイバーストリームの中の理性の島』)なのですが、本当に "Wo sind sie" はどこに行っちゃったんでしょうねぇ?

この本での Weizenbaum はインタビューという形にも助けられて「なんでも話しちゃう」といった感じのリラックスした語り口で、彼の名著の "Computer Power and Human Reason"とは対局的な印象を僕は持ちました。この本の本編は、のちほど "Computer Power and Human Reason" の紹介の際に触れるつもりですので、ここでは ELIZA の開発に直接関わるトピックのみを紹介します。


ELIZA の開発の動機は?

同書の "ELIZA Today" では、インタビュアーが Weizenbaum に “Eliza,” と話を向けると、その開発に至った経緯と当初の開発目的を語っています。

That's right. In 1963 MIT invited me to be a guest professor, at first for just a year. It turned out to be, as you know, for decades. In the same year, 1963, we developed a time sharing system at the institute so that several people could use a computer simultaneously. Today that is taken for granted, back then it was new. Instead of using a computer indirectly with the punch cards that were normal back then, we could make direct contact to the computer with the help of a typewriter. Programs that answered questions were needed. My contribution was “Eliza,” a program that the user could converse with in “natural language,” in this case English.

そのとおり。 1963年にMITは私を客員教授に招待しました。最初はたった1年です。ご存知のように、それは何十年も続きましたが。同じ年の1963年に、我々は研究所でタイムシェアリング・システムを開発しましたが、それは数人の人々が同時にコンピュータを使うことができました。今日では当たり前のことと考えられてますが、当時は新しいものでした。当時、一般的だったパンチカードを使ってコンピュータを間接的に使用する代わりに、タイプライターを使ってコンピュータに直接接続することもできました。(我々は)質問に答えるプログラムが必要でした。私の貢献が「Eliza」でした。ユーザーが「自然言語」(この場合は英語)で会話できるプログラムでした。

つまり ELIZA は当初、タイムシェアリング・システムのデモンストレーションのためのアプリケーションとして考えられたと言うのです。 この『タイムシェアリング・システム』とは Multics の事ですと書くと色めき立つ方々が何人もいるかとは思いますが…

元々General Electric(GE)でコンピュータ開発に従事していた Weizenbaum を MIT に招聘したのは Project MAC でした。その経緯は次のように紹介されています。

Project MAC began with a 6-week Summer Study in July and August 1963, exposing 57 visiting researchers from universities, government, and industry to the MIT Computation Center's CTSS time-sharing system, which ran on an IBM 7090 modified with hardware RPQs. The Summer Study was suggested to Prof. Fano by Licklider.
*snip*
Several people from the Summer Study were recruited to permanent positions at Project MAC, such as Ted Glaser, Bob Graham, and Joe Weizenbaum.

Project MACは、1963年7月と8月に6週間のサマー・スタディを行い、ハードウェアが改造されたIBM 7090で実行されるMIT計算センターのCTSSタイムシェアリングシステムが大学、政府機関、産業界から57人の訪問研究者に披露されました。このサマー・スタディJ. C. R. LickliderRobert Fano教授に提案されたものでした。
(中略)
サマー・スタディからの何人か(Ted Glaser、Bob Graham、Joe Weizenbaumなど)が、Project MAC の常任職に採用されました。

したがって Weizenbaum は本来、Multics やその開発ツールを開発するグループに所属していました。ちなみに Weizenbaum は Multics の開発においても決定的な役割を果たしたことが Multics Historyの "2.1.3. Selection of Hardware Vendor" で紹介されています。

MAC senior staff visited computer hardware vendors in 1963 and 1964, and the Multics specifications were developed and sent out to bid.

From fall 1963 until April 1964 four of us (Corbató, Edward L. Glaser, Robert Graham and I (dennis)) visited the principal main-frame computer vendors (IBM, RCA, Sperry/Rand, Burroughs, GE, Philco, CDC, Cray -- known in those days as "Snow White and the Seven Dwarfs") to see which of them had the ideas and resources to work with Project MAC to build hardware for the Multics system. When we visited GE in Phoenix, met John Couleur and learned about the GE-635, we were very much impressed. That led to the selection of GE (much to the chagrin of IBM, who desperately attempted to change our decision) and the collaboration of John Couleur with Ted Glaser to specify the GE 645 system for Multics.

When it came time to select a vendor for the computer that would support the new OS, the folklore is that IBM pitched the machine that would become the 360/65. They were not interested in the MAC team's ideas on paging and segmentation. Professor Joseph Weizenbaum, then a lecturer at MIT, introduced the MAC team to former colleagues of his from General Electric Phoenix, who were receptive and enthusiastic, and proposed what became the GE-645. DEC also responded to the bid. The GE proposal was chosen in May 1964 (much to the surprise and chagrin of IBM) and the contract signed in August 1964.

MACシニアスタッフは1963年と1964年にコンピューター・ハードウェア・ベンダーを訪問し、Multics仕様が開発され入札に出されました。

1963年の秋から1964年4月まで、私達4人(Corbató, Edward L. Glaser, Robert Graham, Jack Dennis)は主要なメインフレームのコンピュータベンダー(IBM, RCA, Sperry/Rand, Burroughs、GE, Philco, CDC, Cray -- 当時「白雪姫と7人の小人」として知られていましたが)、Multicsシステム用のハードウェアを構築するためにProject MACと連携するためのアイデアとリソースがどれにあるかがわかります。Phoenix で GE を訪問し、John Couleur に会い、GE-635について学んだとき、私たちは非常に感銘を受けました。それが(私たちの決断を変えようと必死に試みたIBMには悔しい)GEの選択と、Multics用のGE 645システムを指定するための John Couleur と Ted Glaser の共同作業につながりました。

新しいOSをサポートするコンピュータのベンダーを選択する時が来たとき、IBMが360/65になるマシンを売り込んだことが伝説になっています。彼らは、ページングとセグメンテーションに関するMACチームのアイデアには興味がありませんでした。当時MITの客員教授をしていた Joseph Weizenbaum は、General Electric, Phoenix の元同僚にMACチームを紹介し、GE-645にすることを提案しました。 DECも入札に応じました。1964年5月に(IBMは驚きと悔しさがりましたが) GEの提案が選択され、1964年8月に契約が調印されました。

それまで大型コンピュータといえば IBM 一辺倒だった MIT が Multics の開発では唐突に GE(後にHoneywell になりますが)を採用した裏には、実は Weizenbaum が関わっていました。

上記では「伝説」として語られている IBM の System/360 ですが、従来の(銀行や政府機関で使われる)事務処理系コンピュータと(MIT がお得意様だった)科学技術計算系コンピュータを統合したメインフレーム(日本語では汎用と訳されますが)の構想を打ち出した画期的で野心的な製品コンセプトで知られています。当のIBMにとっては従来製品からの継続性を捨てて新アーキテクチュアへの移行を推し進める、文字通りの社運をかけた試みでした。一方、それまでMITで使用されていたIBM製品には個別依頼によるハードウェアの改造が施されていました。実験的なタイムシェアリングを搭載していた CTSS は仮想記憶を実現するためのハードウェア追加が必要だったからです。IBMもMITも両者が望むハードウェア構成が商品の標準仕様となることを望んでいたのは間違いありません。が、望む仕様が違っていた。両者とも妥協できないまま、Multics 向けのコンピュータ・ハードウェアの交渉は平行線のままでした。効率性重視で個別対応を極力排除したいIBMは「ハードウェアを提供する自社が交渉で優位である」と考えており、強気の姿勢を崩さず「最終的にはMITが折れてくる」とタカをくくっていました。

新シリーズの製品ラインナップは1964年4月に発表されたのですが、直後の8月の MIT の Multics マシンの選定では外された訳ですから、文字どおり「いきなりズッコケた」ことになります。更に11月には AT&T のベル研が Multics の開発に参加することを表明し、翌年の1965年11月に Multics の開発計画の全貌を明らかにする6本の論文が発表された頃には、IBM はパニック状態に追い込まれていました。と言うのも、それまで MIT 周辺だけで例外的に使われていた CTSS によるタイムシェアリング・システムが大型コンピュータのプロダクトとして商業化され、しかも最大のライバルであった GE の製品になって出てくる…IBM にとってこれ以上の悪夢は無いわけで、主力製品に育てる予定だった System/360 には当初タイムシェアリング機能を搭載する計画が無かったことも相まって、ここに IBM の狂乱の60年代が始まります。

つまり、Weizenbaum は当時の IBM を地獄に叩き込んだ男でもあり………余談が過ぎました。 *1


どんな対話プログラムが求められたのか?

上記の Weizenbaum の発言からは、そもそも「タイムシェアリング」自体が画期的だったように感じられます。 例えば、1961年に MIT リンカーン研究所の Bert F. Green, Jr. が書いた論文 "BASEBALL: AN AUTOMATIC QUESTION-ANSWERER" の要約は次のような内容でした。

Baseball is a computer program that answers questions phrased in ordinary English about stored data. The program reads the question from punched cards. After the words and idioms are looked up in a dictionary, the phrase structure and other syntactic facts are determined for a content analysis, which lists attribute-value pairs specifying the information given and the information requested. The requested information is then extracted from the data matching the specifications, and any necessary processing is done. Finally, the answer is printed. The program's present context is baseball games; it answers such questions as "Where did each team play on July 7?"

Baseball は保存されたデータについて普通の英語での質問に答えるコンピューターです。プログラムはパンチカードから質問を読みます。単語と慣用句は辞書の中にあり、句構造やその他の構文上の事実により内容分析が判断され、属性値ペアにリストされます。その後、要求された情報が仕様に一致するデータから抽出され、必要な処理が行われ、最後に答えが印刷されます。プログラムの現在の状況は野球の試合で「各チームは7月7日に何をしましたか?」といった質問に答えます。

この Baseball自然言語処理技術を応用した質疑応答システム研究の草分け的研究事例です。「各チームは7月7日に何をしましたか?」といった問いに答える…今日でも十分にビジネスになりそうなアイデアなんですが、その利用法はと言うと「質問をパンチカードに打ち込み、それをオペレータに渡して待ち行列に並び、プリントアウトされた出力結果を見る」と言う対話性のカケラもないプログラムだったようです。どこからか「それじゃぁ、スポーツ新聞を買ったほうが早いんじゃないの?」って声が聞こえてきそうなくらい。1960年代(日本では1970年代でも)のコンピューティングの現実はこんなものだったのです。それが常識だった時代ですから、当時ターミナルを介してコンピュータと直接会話することができるタイムシェアリングはそれ自体が画期的な技術だった訳です。


リスト処理用プログラミング言語 SLIP

デモンストレーションの重点は「コンピュータとの対話」にあった訳ですから「対話相手」は Weizenbaum が好きに選べたのだと僕は想像しています。 もし彼が通信やコンピュータ・ネットワークの専門家であれば IRC のような人間同士が対話するツールを開発したのではないでしょうか? しかし、彼は自然言語処理の技術を応用したプログラムを作成しました。その理由のひとつは彼がリスト処理を行うプログラミング言語の専門家だったから。 彼が GE 時代の 1963年に投稿した論文 "Symmetric List Processor" の要約では、SLIP について次のように説明しています。

A list processing system in which each list cell contains both a forward and a backward link as well as a datum is described. This system is intended for imbedding in higher level languages capable of calling functions and subroutines coded in machine language. The presentation is in the form of FORTRAN programs depending on only a limited set of "primitive" machine language subroutines which are also defined. Finally, a set of field, particularly character, manipulation primitives are given to round out the system.

各リストセルが順方向リンクおよび逆方向リンクの両方ならびにデータを含むリスト処理システムについて説明します。このシステムは、機械語でコーディングされた関数やサブルーチンを呼び出すことができる高水準言語への組み込みを目的としています。プレゼンテーションは、同様に定義されている「原始的な」機械語サブルーチンの限られたセットのみに依存するFORTRANプログラムの形式です。最後に、一連のフィールド、特に文字操作プリミティブがシステムを完成させるために与えられます。

SLIP は様々な高水準言語でリスト処理を可能にするための拡張機能だったようです。*2この論文では FORTRAN に対する拡張が説明されていますが、ELIZA の開発ではMichigan Algorithm Decoder(MAD))を拡張したバージョンが用いられました。 MADはミシガン大学が開発したALGOL風?コンパイラです。

また、ELIZA論文の参考文献の一番最後にコッソリ書かれている COMIT。本文でも全くコメントされてないのですが、実はこれがリスト処理プログラミング言語の元祖だったとは調べてみるまで僕も全く気づきませんでした。COMITVictor Yngve機械翻訳のために開発したプログラミング言語だそうです。Weizenbaumが引用している文献は見つけれらませんでしたが、その概要が記された次の論文が見つかりました。

"A Programming Language for Mechanical Translation"

COMIT はコンピュータを使った数値計算以外を主な処理対象とする初めてのプログラミング言語とか。その主要課題が機械翻訳、それも英語ーロシア語の翻訳だった事には時代を感じさせますよね。と言うのも、1950年代はケネディが大統領になる以前の冷戦が最もヒートアップしていた頃ですから、この研究領域が注目された背景として国防関係者の中ではロシア語が堪能な翻訳家が不足していた事が容易に想像できます。

ちなみに次のドキュメントでは COMITIPL-VLISP 1.5)、 SLIP) のリスト処理のための当時の4つの主要プログラミング言語が比較されています。

https://www.rand.org/pubs/research_memoranda/RM3842.htmlwww.rand.org

いずれも IBM 700/7000 シリーズで動くリスト処理用プログラミング言語で、 SLIPを除く3つは概ね 1957年前後、ダートマス会議の直後には登場していたようです。 主に自然言語処理のための開発ツールであったようで、いわゆる記号処理的AI研究の勃興期の成果と説明すべきでしょうか?

話題を元に戻して…SLIPは他の言語に比べると幾分登場が遅れていました。 既存の数値計算を主目的としたプログラミング言語FORTRAN、ALGOL派生など)にリスト処理機能を拡張するアドオン方式の処理系だったようです。 上記の GE 在籍時の論文のあと 1964 年の MIT のクレジット入りの論文 "SLIP" で処理系に関する研究は終結したと思われます。 一般的なプログラミング言語の研究の常として、処理系実装が終了した後は、その言語の実用性を評価するためのアプリケーション作成へと研究は移行します。 Weizenbaum の対話するプログラムが「SLIP による自然言語処理アプリケーション」となったのは割と自然な流れなんじゃないかと思います。


自然言語処理による対話プログラム

自然言語処理アプリケーション」となると Weizenbaum の身近なところに好例がありました。 ELIZA論文でもコメントされている Daniel G. Bobrow の次の学位論文です。

https://dspace.mit.edu/handle/1721.1/6903dspace.mit.edu

このプログラムも Peter Norvig の名著 "Paradigms of AI Programming: Case Studies in Common Lisp" (邦題『実用 Common Lisp』)の7章 "STUDENT: Solving Algebra Word Problems" では、実装ベースで解説されています。

github.com

以下のように Norvig は STUDENT が ELIZA よりも洗練されているとコメントしています。

STUDENT could correctly reply that the number of customers is 162 . To do this, STUDENT must be far more sophisticated than ELIZA; it must process and "understand" a great deal of the input, rather than just concentrate on a few key words. And it must compute a response, rather than just fill in blanks. However, we shall see that the STUDENT program uses little more than the pattern-matching techniques of ELIZA to translate the input into a set of algebraic equations. From there, it must know enough algebra to solve the equations, but that is not very difficult.

STUDENTは、顧客数が162であることを正しく返信できました。これを行うには、STUDENTはELIZAよりはるかに洗練されていなければなりません。単にいくつかのキーワードに集中するのではなく、大量の入力を処理して「理解する」必要があります。また、単に空白を埋めるのではなく、応答を計算する必要があります。しかし、STUDENTプログラムでは、入力を代数方程式のセットに変換するのに、ELIZAのパターンマッチング技術以外にはほとんど使われていないことがわかります。そこから、方程式を解くのに十分な代数を知っている必要がありますが、それはそれほど難しいことではありません。

このコメントを読んでいると STUDENT は ELIZA よりも後に開発されたかの印象を持ちます。が、それは Norvig の本の章割りの都合で、実際には STUDENT の博士号論文が提出されたのは 1964 年、ELIZA 論文は 1966 年に発表されてますので、STUDENT の方が先に完成していたはずです。当時の Weizenbaum は客員教授で学生である Bobrow の指導には関わってなかったようですし、両者で共著の論文や報告書が複数見つかっている事から、二人は親しかったのではないかと推測できます。おそらく Bobrow の開発のプロセスを間近で見ていた Weizenbaum は、当時最先端だった STUDENT のアプローチを踏襲し、それに匹敵するような(あるいは超えるような)周囲をアッと言わせるプログラムを書きたいと考えたのかもしれません。


精神医学的インタビュー

STUDENT が「高校数学の文章題」という大学進学者が誰でも経験する身近なテーマで自然言語処理を実演してみせたところにWeizenbaumはインスパイアされたのでしょう。 ELIZAにおける「精神医学的インタビュー」は同じような位置付けだったように僕は思います。

前述のインタビューに戻りますが、インタビュアーの「なぜそのような難しい研究課題を選んだのですか?」との質問に答えてWeizenbaumは次のように述べています。

It wasn’t that difficult. If you look at the structure of a therapeutic session, for example Carl Rogers’ approach, you will recognize that it works like a kind of echo. The patient says something about his or herself, and the therapist then — maybe not right away in the very next question, but then in one of the following questions — picks it up and uses it as his or her own contribution to the discussion.

The trick is that “Eliza” assumes that the conversation partner will interpret the signals that it delivers according to the background of her or his own situation and needs — just as it happens in conversations between people.

それほど難しいことではありませんでした。 Carl Rogers のアプローチなど、治療セッションの構造を見ると、一種のおうむ返しのように機能することがわかります。 患者は自分自身について何かを言い、そしてその後セラピストは(次の質問ではすぐにではなく、次の質問のいずれかで)それを拾い上げて、彼または彼女の自身議論への貢献としてそれを使います。

トリックは「ELIZA」が(人間の間での会話でも起こるように)会話相手が自分の状況やニーズの背景に応じて送るシグナルを解釈することを前提としていることです。

この返答を聞くと 前々回前回 のページで紹介したスクリプト・エンジンの機能が用意された理由がよくわかります。 それから、Weizenbaum は以前 クライアント中心療法のページ で紹介した Carl Rogers が制作したセラピーの記録映像(特に1950年代に制作された)の幾つかを見ていたのではないかとも思います。 Rogers の対話手法を注意深く観察した Weizenbaum は、それを簡略化したロジックを ELIZA に組み入れたのではないかと思えてなりません。


まとめ

今日では ELIZA も STUDENT も記号処理的AIの古典的な研究成果に数えられていますが、 両者とも非常に上手に機能するのは問題の切り取り方の上手さによるものだと思います。 1つは人工知能という技術に不慣れな人々を十分に意識して出来るだけ身近なテーマを取り上げること、 もう一つは対面する人間(STUDENTの場合は問題文章を考えた人になるのかも知れませんが) に起因する不確定な要素を上手に使って機械が作り出す応答に人間味を演出すること、 が挙げられるように思います。 そのあたりが、当時の人たちとは違い Chatbot に慣れた我々をも驚かせる理由のような気がします。

ともあれ…

Multics のタイムシェアリングをアピールするために生まれた(はずの)対話システム ELIZA は、その役割は十二分に果たしました。 学科長で Project Mac の責任者でもあった Robert Fano は Weizenbaum の対話システムがお気に入りで、 次のように Project Mac の代表的な研究成果としてアピールをして回りました。

multicians.org

ちなみにこのプレゼンテーションで紹介されている対話例は ELIZA では無いようですが…

ELIZA の成功がここまでであれば、それは Weizenbaum の想定内の出来事で、その後の彼の人生はもっと穏やかなものになったのでしょう。 が、実際には ELIZA は彼の想像をはるかに超えて多くの人々にインパクトを与えてしまったのです。 その話は次回…書くつもりです。

以上

*1:この続きは僕が執筆を公言しているもうひとつの書籍『Multicsの謎』に書く事になると思います。

*2:今日ではC++のテンプレートである GNU gslip が使えるようです。