人工無脳って知ってる?

2019/02/16
藤田昭人

 

今回は僕の思い出話から…

人生初の人工知能

かつてパソコン(パーソナル・コンピュータ)がマイコン(マイクロ・コンピュータ)と呼ばれていた時代、もちろん任天堂ファミコン(ファミリ・コンピュータ)もまだ販売されてなかったので、多分1970年代末あたりの話だと思います。電子工作のオタク界隈では、数年前からブームだった社会人や大学生向けの「ワンボードマイコン組み立て講習会」を経て、もう少し低年齢層も取り込む「ケース入り完動品」が流通し、シャープやNECが家庭用マイコン(とは言っても価格は家庭用ではなかったので、お父さんがオタクでないと家にはやってこない)の製品化に踏み切ったあたり…だったはず?

マイコン少年だった僕はご多聞に漏れず、日々は創刊されて間もないマイコン専門月刊誌を隅から隅まで読み漁り、毎週末のように秋葉原に出向いては、店頭に陳列されているマイコンをいじくり倒すような日々を送ってました。その当時の秋葉原といえばマイコンが静かなブームで、その筋の店舗ではMZ80だとかPC-8001だとかがズラーっと陳列されていて、そこで動いているゲームの類(と言っても本当に陳腐なグラフィックスだったんですが)にはいつ行っても人集りをしている有様でした。そのなかに混じって英文字が数行のみ表示された地味なマイコンが置いてあったので、店員さんに「これ、何ですか?」と聞いたところ「英語で話をするゲーム」とぶっきら棒な返事が帰ってきました。当時「英語が破滅的にダメだったので理系」だった僕には "This is a pen." 以外に思いつくフレーズもなく、まごついていると、明らかに学生バイトのその店員さんの横から手が出てきてパタパタと英語のフレーズをいくつか打って「ほらね、こっちの入力にちゃんと返事するでしょ?」と得意げに語る。「これ、人工無脳って言うんですよ」と店員さんの超上から目線の解説に若干(いや、結構)イラっとしながら僕はその場を退散しました。

日頃、マイコン雑誌で(無駄に)勉強していた甲斐があって、当時の僕は秋葉原で見かける多くのゲームの仕組みは大変ざっくりと理解できていたのですが、この時ばかりは「あれ、どう言う仕掛けで動いているんだろう?」と帰りの電車の中で相当深く考え込んだ事を今でもよく覚えています。それが BASIC版ELIZAで、そして第1次AIブームでもっとも有名になった自然言語処理プログラムであった事を知ったのは、それからズーッと後の第2次AIブームのころなんですが、兎にも角にも、それが僕の人工知能の(ちょっと不愉快な)処女体験だったことは間違いありません。

人工無脳の歴史

 その後、僕は職業プログラマーとなったのですが、以来30年あまり、人工無脳とお近づきになるようなことはありませんでした。特にファミコン世代からギリギリ外れてしまって日常的にゲームをする習慣がなかった僕には、ゲームAIにおける人工無脳に関する知識は全くの皆無。と言うことで参考文献を漁ってみたのですが…ありました。

www.rutles.net

 

著者の加藤さんは1999年から20年間もプライベートで人工無脳の研究を続けておられるツワモノとか…

同書によると人工無能はEliza型、選択肢型、辞書型、ログ型の4つに分類できるそうです。Eliza型は「Rogersの心理カウンセリング技法を起源に持ち、傾聴が得意」、一方の選択肢型は「コンピュータゲームを始祖とし、柔軟性・即興性は低いもののキャラクター性やストーリー性が特徴」とするそうです。残る辞書型とログ型は両者の中間に位置するとのこと。また(日本国内では)年代的に次のような5つの時代に分けられるそうです。

1950〜1980

汎用コンピュータの時代

1980〜1995

スタンドアローンPCの時代

1995〜2005 ネットワーク化時代
2005〜2010 SNS・クラウドの時代
2011〜現在 人工知能商業化の時代

 

確かに1980〜1995はPCの技術革新と低価格化を背景に、コンピュータ・ゲームの需要拡大に伴い、選択肢型(当時流行ったドラクエのように次の選択肢を選ぶ?)の方式が急速に発展したことや、その後の1995〜2005はインターネットとウェブ・サービスの登場により、人工無能がゲームソフトから独立して単独のウェブ・サービスとして不特定多数に提供されるようになったことなど、僕の記憶や印象とも合致します。

また、選択肢型の始祖としてコロッサル・ケーブ・アドベンチャー(Colossal Cave Adventure)が紹介されていた事も収穫でした。BBNのIMP開発チームに所属していたウィル・クラウザーは洞窟探検が趣味だったで、PDP-10の上で動くこのソフトウェアはその体験をコンピュータ・ゲーム化したものなんだそうです。このゲームはアドベンチャー・ゲームの代名詞なんだそうです。そういえば1980年代に月刊アスキー(の別冊)が「表参道アドベンチャー」ゲームや「南青山アドベンチャー」ゲームをなど掲載していたこともありましたねぇ。選択肢型のキャラクター性やストーリー性が何となく理解できました。Eliza型とは「対話」のイメージがかなり違いますよね。

同書では、辞書型とログ型を組み合わせた Perl スクリプトによる人工無脳の実装解説も掲載されています。おそらく上記の「ネットワーク化時代」の実装なんだと思いますが、今日のPython, JavaScript あるいは PHP に慣れた若者には敷居が高いかもね(笑)

その反面、2005年以降の情報はあまり多くありません。利用者間のコミュニケーションを促進するSNSの環境にあって「人工無脳のプレゼンスは希薄化した」との指摘は正しいと思います。そもそも今日、SNSは共感を獲得するための媒体と見なされています。もちろん Twitter などではbotと思しきアカウントも多数見受けられるので「対話するプログラム」の需要そのものが低下したわけでは無いでしょうが、そこで人工無脳が期待される役割はチャットボットとしての側面が中心になっているような気がします。対話そのものを楽しむ状況がなければ、人工無脳の特徴が生かされることは少ないのでしょう。

ともあれ、同書は人工無脳の奥深い世界について具体的説明してくれる類書が少ない書籍です。僕個人的には知見が大きく欠落している技術領域の話が中心なので、大いに勉強になってます。実装解説もしっかり読まなくっちゃ。

人工無脳スマートスピーカー

と、まぁズーっと人工無脳とは全く無縁だった僕が、突如、人工無脳に執着し始めた理由はスマートスピーカーの登場でした。当初は「アマゾンで買い物するのにクリックの代わりに音声なんて…アホすぎる」と思ってたのですが、非常に低価格で購入できる事もあって、次第に「もうちょっと賢い使い方ができないの?」と考えるに至りました。

 スマートスピーカーのアプリ(スキルって言うのかな?)の開発者の世代では「対話」と言うとチャットボットのイメージが立ち上がるのでしょうか?スマートスピーカーであっても人工無脳の「対話そのものを楽しむ状況」が提供されても良いのでは無いかとフツフツと思ったりしています。

あの人工無脳は何処?

…と言う事で、冒頭でお話したように40年ぶりに人工無脳を思い出している次第です。取り敢えず、手っ取り早く動かせる実装については次の記事に書いたのですが…

akito-fujita.hatenablog.com

 

やはり40年前に僕が秋葉原で見たはずのスタンドアローンBASICのバージョンが気になり…調べてみました。Jeff Shrager がメンテナンスをしている The Genealogy of Eliza(http://elizagen.org/)よれば、彼が1973年に作った BASIC 版 Eliza は1977年にコンピュータ雑誌にソースが掲載されたとのこと。で、Internet Archive を探しまくったところ…ありました。

archive.org

 

この号の100ページから4ページに渡って、Eliza のソースコードと短い解説が掲載されています。僕と同世代のオールドファンには懐かしいですが、この当時ソフトウェアの著作権はあまり問題にされず、雑誌記事には読者から投稿のあったプログラムなどのソースコードがドーンと掲載されてました。当時のマイコン・オタクは雑誌が発売されると買って帰って、欲しいプログラムのソースコードをひたすら打ち込む。入力が終わってようやく動き始めた頃には雑誌の次の号が発売される…といったヘビーローテションを繰り返してました。

なお、BASIC版Elizaの動作環境はなんと "MITS 8K BASIC" です!! マイクロソフトが下記の MITS Altair のために作った最初のBASICインタープリターですが、シリコンバレーマイコンオタクたちの間で勝手にコピーされまくって、ビル・ゲイツが激怒したと言ういわく付きのアレですね(笑)

en.wikipedia.org


しかし、今思い返してみると1977年と言えば新作の洋画や洋楽の新譜が本国で発売されてから日本で発売されるまでに半年から1年も待たされる時代でした。もちろんインターネットもその前身のARPANETがNCPで動いていた時代(TCP/IPは開発中だったはず)。さらにマイコンはごく限られた一部のオタクのホビーでしかなかった時代に、1977年にアメリカの雑誌で掲載されたソフトウェアが、その1年あまり後には東京の秋葉原で日本の高校生の目に触れるところで動いていたと言う事実にはちょっと驚かされます。1970年代までのアメリカはそのくらい遠いところにあったし、にも関わらず、その距離を一気に飛び越えようとする当時のオタクの渇望にも似た熱量の高さを示しているエピソードかな?当時のコンピュータに関わる状況は今よりずーっとスリリングでした。

 

  

PS ちなみにBASIC版Elizaの作者であるJeff Shragerは過去のElizaの実装のコレクターとしても有名です。下記の彼の Githubリポジトリには様々な言語で書かれたEliza の実装が置かれているので、是非チェックしてみてください。

github.com

 

 

 

AI(人工知能)っていつから始まったの? ー ダートマス会議の内幕

2019/02/08
藤田昭人

 

AI(人工知能)のブームはまだまだ続いているようですが…

現在のAIブームが3度目であることをご存知ない方も多いのではないでしょうか?実は、AI(人工知能)という言葉はおよそ60年前に登場しました。浮き沈みの激しい情報系の業界において、これだけ長いあいだバズワードとして機能する例は本当に稀なんじゃないかと思います。今もって近未来的イメージのある人工知能ですが、その歴史は案外古い。ではAI(人工知能)って言葉は、いつ、誰が、どこで、何故、使い始めたのか?と言うのが本ページのお題です。

 

名付け親は John McCarthy

情報系の様々な教科書によれば「人工知能(AI)は1956年にダートマス大学で開催されたサマーミーティングに置いて John McCarthy が提案した」と説明されています。McCarthy と言えば、AIの名付け親と言うだけでなく、その後 LISP と言うプログラミング言語を発明し、スタンフォード大学人工知能研究所(SAIL)を設立し、その後も長らくこの分野の研究を牽引してきた学者で「人工知能の父」と呼ばれる大先生ですからご存知の方も多いでしょう。

 

en.wikipedia.org

 

このダートマス大学で行われたサマーミーティング、大学の夏休み期間を利用して、なんと8週間も続いたとのこと。そんなに長い時間をかけて、一体何が相談されたんでしょうね。

 

ミーティングの内容

実は、このミーティングの前年(1955年)ロックフェラー財団に宛てて、このミーティングに対する資金援助を依頼する提案書が出されました。その全文が次のサイトで公開されています。

 

aaai.org

 

既に、この提案書のタイトルには "Artificial Intelligence" とありますよね?つまり、ミーティングの1年前には『人工知能(AI)』という言葉が発案されていたことになります。その中身はというと…前文には次のような説明があります。

We propose that a 2 month, 10 man study of artificial intelligence be carried out during the summer of 1956 at Dartmouth College in College in Hanover, New Hampshire. The study is to proceed on the basic of the conjecture that every aspect of learning or any other feature of intelligence can in principle be so precisely described that a machine can be made to simulate it. An attempt will be made to find how to make machines use language, form abstractions and concepts, solve kinds of problems now reserved for humans, and improve themselves. We think that a significant advance can be made in one or more of these problems if a carefully selected group of scientists work on it together for a summer.

翻訳すると…

1956年の夏、ニューハンプシャー州ハノーバーダートマス大学で2ヶ月間、10人により人工知能の研究を行うことを提案します。この研究は、学習のあらゆる側面または他の知能の特徴が、原則として非常に正確に記述され、それを模倣するような機械を作ることができるという仮定を基本に進めて行きます。機械に言語を使用させる方法、抽象化および概念を形成する方法、現在人間が扱っている種類の問題を解決する方法、およびそれら自体を改善する方法を見つける試みがなされます。慎重に選択された科学者のグループが夏の間それに取り組むならば、我々はこれらの問題の1つ以上で重要な進歩が成されることができると思います。

 とミーティングの主旨が非常にアグレッシブに宣言されています。ここで「人間の知能を模倣する機械の開発」を明言しているところに留意してください。さらに具体的な研究課題として次の7項目を掲げています。

  1. Automatic Computers(自動コンピュータ)
  2. How Can a Computer be Programmed to Use a Language(言語を使うようにコンピュータをプログラムする方法)
  3. Neuron Nets(ニューラル・ネットワーク)
  4. Theory of the Size of a Calculation(計算規模の理論)
  5. Self-Improvement(自己改善)
  6. Abstractions(抽象化)
  7. Randomness and Creativity(無作為性と創造性)

 今日の理解では1はちょっと不思議に聞こえますが、おそらく当時は一般的だった複雑な計算を行う計算手(Human Computer)に対応する用語だと僕は考えています。当時は、計算の手順を記述する、すなわちコンピュータ・プログラミングはまだ一般的な概念ではありませんでした。プログラミングの方法を洗練させることにより、従来の計算手の仕事を自動化するということがこの項目の意味するところであり、今日のコンピュータ・サイエンス(特にプログラミング関連)が対応していると想像しています。

2〜4は各々、自然言語処理、ニューラル・ネットワーク、計算(複雑性)理論に対応するのでしょう。特にニューラル・ネットワークは現在の深層学習(ディープ・ラーニング)に繋がる研究分野です。5〜7は「人間の知能を模倣する機械」のような知的システムに求められる要件のように思えます。

 

僕の個人的な考察 

元々、僕は個人的にAI(人工知能)とコンピュータ・サイエンス(情報工学)の関係に関心がありました。わかりやすく言えば「AIとコンピュータ・サイエンス、どちらが先に始まったの?」という素朴な疑問なんですが、McCarthy の提案書を読むとこの問いの答えが何となくわかってくるような気がします。

まず、この提案書では "Human Brain" という表現が度々登場します。これは1950年代にブームだったサイバネティックスの影響かと思います。提唱者である Norbert Wiener が「動物と機械における制御とコミュニケーションの科学的研究」と定義したこの学際的な研究ムーブメントにおいて「コンピュータによる人間の頭脳の再現」は1つの(重要な)研究課題と目されていました。もっとも、人間そのものを研究対象とする医学、生理学、心理学の専門家とコンピュータを研究対象とする数学、工学の専門家の間には大きなギャップがあったようです。例えば、デジタル・コンピュータがプロダクトとして社会に初めて登場した1950年代において、その仕組みや技術的な革新性について正しく理解することなく、漠然と想像された人間の頭脳との対比について議論をふっかけられるとしたら、数学者や工学者はある種の苛立ちを感じるのではないかと僕個人的には想像できます。特に当時のコンピュータはその巨大な見かけとは裏腹に利用方法は煩雑で計算性能も低かったことから、コンピュータを使って頭脳のメカニズムを正確に再現する方法を確立するためには多くの模索が必要でした。

オートマトンやニューラル・ネットワークといったサイバネティックス由来の幾つかの有望なアイデアを集めて、頭脳の再現方法を議論することがミーティングを企画した McCarthy の真の狙いだったのではないか?と僕は考えています。事実、この提案書にはサイバネティックスという言葉は登場しません。サイバネティックスの考え方は継承するも、その方法論に関する数学や工学の専門家に閉じた議論であることを明示するため、それに変わるタイトルとしてAI(人工知能)という新しい用語が捻り出されたのではないかと想像しています。

そう考えて提案書に掲げられている7つの課題を見ると「1956年の段階ではAIとコンピュータ・サイエンスは裏表の関係にある1つの研究領域だった」のかもしれませんね。

 

50年後のMcCarthyの見解

では、実際に McCarthy はダートマス会議についてどのような感想を持っていたのか?を調べてみたところ、彼が教鞭を執ったスタンフォード大学のサイトで以下の文章を発見しました。

www-formal.stanford.edu

この文章は "AI -- PAST AND FUTURE" と名付けらた原稿の一部で、日付は 2006-10-30となっており、ダートマス会議50周年記念イベントの AI@50 の直後のようです。著者は McCarthy 自身で、明らかに書きかけの原稿なのですが、内容を見るとダートマス会議の当事者でないとわからないような内幕が語られています。全文はオリジナルを見ていただくとして…

会議は当初の期待通りには進まなかったとMcCarthy は述べています。

The original idea of the proposal was that the participants would spend two months at Dartmouth working collectively on AI, and we hoped would make substantial advances.

It didn't work that way for three reasons. First the Rockefeller Foundation only gave us half the meney we asked for. Second, and this is the main reason, the participants all had their own research agendas and weren't much deflected from them. Therefore, the participants came to Dartmouth at varied times and for varying lengths of time.

この提案の当初のアイデアは、参加者がダートマスで2か月かけてAIに取り組むことであり、大幅な進歩が期待されるというものでした。

しかし、それは3つの理由で期待通りにはなりませんでした。第1に、ロックフェラー財団は私達が要求した予算の半分しか提供しなかったこと。第2に、これが主な理由ですが、参加者全員が既に彼ら自身の研究課題を持ち、その他の課題にあまり関心を示さなかったこと。それ故に第3に、参加者は好きな時間にダートマスにやって来て、関心のあるイベントが終わると帰ってしまったことが挙げられます。

この記述からは McCarthy がダートマス会議についてサイバネティックスの討論で有名なメイシー会議の再現を目論んでいたのではないかと僕は想像しています。メイシー会議は招待制の学術会議で、発表者は研究中の(未発表の)研究について発表し、参加者全員で討論されたと言います。平たく言えば大学の研究室の合宿に近いイメージでしょうか?しかし、上記のMcCarthy のコメントから判断すると、実際のダートマス会議では招待制は導入できなかったようです。ロックフェラー財団助成金をケチったことが原因だったのかもしれませんね。

さらに McCarthy は次のようなコメントもしています。

Two people who might have played important roles at Dartmouth were Alan Turing, who first uderstood that programming computers was the main way to realize AI, and John von Neumann. Turing had died in 1954, and by the summer of 1956 von Neumann was already ill from the cancer that killed him early in 1957.

Dartmouthで重要な役割を果たしたかもしれない2人は、プログラミングコンピュータがAIを実現するための主要な方法であると最初に理解した Alan Turing と John von Neumann でした。Turing は1954年に亡くなり、von Neumann は1956年の夏には癌で闘病生活を送っていました。 

各々、オートマトンチューリング・マシンで突出した研究業績を既に挙げていた二人の不参加は、研究的議論を牽引するリーダーがダートマスでは不在であったことを物語っています。確かに von Neumann は1950年代に入ると Wiener と袂を分かちサイバネティックスからは距離をおいて、頭脳を形式化する試みとしてオートマトンの研究へと進んでいたと言われています。もし彼がダートマス会議に参加していれば、会議の意義や成果、あるいはその後への影響は全く違ったものになったかもしれません。もっとも彼らが参加できなかった事により、第2次世界大戦の戦中派が支えたサイバネティックスから戦後派が支えるAI(人工知能)へと研究の世代交代がスムーズに進んだことも事実でしょう。

最後にダートマス会議の意義についてMcCarthyは次のように語っています。

I think the main thing was the concept of artificial intelligence as a branch of science. Just this inspired many people to pursue AI goals in their own ways.

My hope for a breakthrough towards human-level AI was not realized at Dartmouth, and while AI has advanced enormously in the last 50 years, I think new ideas are still required for the breakthrough.

もっとも重要なことは人工知能の概念が科学の一分野として認知されるようになった事にあると私は思います。これだけで、多くの人々が自分たちのやり方でAIの目標を追求するようになりました。

人間レベルのAIに向けて突破する私の望みはダートマスでは実現できませんでした。さらにAIはこの50年間で飛躍的に進歩しましたが、この課題を突破するにはまだまだ新しいアイデアが必要だと思います。

結局 McCarthy 自身もAI(人工知能)という名前が社会に広く認知されるようになった事がダートマス会議の最大の成果だったと認めているようです。さらにAI(人工知能)が今もって見果てぬ夢であることも。

 

ということで…

 

60年あまり前から存在するAI(人工知能)という言葉は、近未来的なイメージを想起させる究極のバズワードとして今もなお君臨しています。命名者の McCarthy の意図をはるかに超え、哲学や宗教といった世界にまで独り歩きするようになったこの言葉は人類共通の夢のひとつであるでしょうし、故に肯定的・否定的いずれもの意見が途切れずに寄せられ続けることも、ある意味では当然のことかもしれないと思います。

ふと考えるのですが「仮に McCarthy が夢想した人間レベルのAIが現実のものになったとしたら、果たして人類はそれを受け入れられるのだろうか?」といったことを個人的には考えたりしますが…そんなことは当面起こりそうにもないのでしょう。それまでは第4次、第5次とブームが繰り返されるような気がします。

 

PS 本ページを執筆するに際し、次の書籍を参考にしました。AI(人工知能)の起源について詳しい歴史が知りたい方にはお勧めです。

 

books.google.co.jp

 

今時の開発環境で動きそうなELIZA実装は?

2018/07/02
藤田昭人

 

『ELIZAをめぐるあれこれ(仮)』について その1 

ワイゼンバウムの作ったオリジナルとの互換性を維持し、今時のソフトウェア開発環境でも比較的容易に動作する ELIZA 実装を探して見ました。

 

まずは LISP の実装から…

書籍 "Artificial Intelligence: A Modern Approach" (邦題『エージェントアプローチ人工知能 第2版』)の著者として有名な Peter Norvig のもう一つの名著 "Paradigms of AI Programming: Case Studies in Common Lisp" (邦題『実用 Common Lisp』)の5章では ELIZA について実装ベースで解説しています。ちなみに、いずれも翻訳本は1万円を越す馬鹿高い書籍ですが、原書はタダでダウンロードできるので頑張って英語を読む方が安上がりです。もちろん原書に掲載されているソースコードも公開されています。

github.com

それから、この書籍の Lisp コードを Python に書き直す paip-python なるプロジェクトも存在しているようです。

github.com

もちろん ELIZA の実装も収録されています。他にも Python ベースの ELIZA 実装が比較的簡単に見つけられます。

ちなみに『ひょっとしたら?』と思い立ち、PAIP in Clojure も調べてみたところ、そういう狙いのプロジェクトがいくつか見つかりました。が、ELIZA の実装は見つけられませんでした。

ご存知ない方も多いと思いますが、元祖スクリプト言語とも呼べそうな Lisp は今時のウェブ系の開発でも重宝するとのこと。頭の柔らかい方々にはこちらの方がオススメなんじゃないかと思います。

 

もう少し頭の固い人向けには…

とかオススメしておきながら何ですが、昔から Lisp ができない(苦手な)僕のような少し頭の固い人向けには、よくできた Java の実装があります。

Charles HaydenEliza test はワイゼンバウムのオリジナルと同じ動作をするように注意して開発された Java による Eliza 実装です。

まずはページの The Source にあるソースコードを全部ダウンロードしてください。

15本あるJavaファイルを全部ダウンロードし終えたら、 "Eliza" という名前のディレクトリを作成して、そこへダウンロードしたファイルを全て移動させてください。あとは "Eliza" ディレクトリの上位ディレクトリで普通に javac でコンパイルするだけです。

$ ls
Eliza
$ javac Eliza/*.java
注意:一部の入力ファイルは推奨されないAPIを使用またはオーバーライドしています。
注意:詳細は、-Xlint:deprecationオプションを指定して再コンパイルしてください。
注意:入力ファイルの操作のうち、未チェックまたは安全ではないものがあります。
注意:詳細は、-Xlint:uncheckedオプションを指定して再コンパイルしてください。
$ java Eliza/ElizaApp
There was a problem reading the script file.
Tried script
$

 ワーニングは無視してください。おそらく Java のバージョンも問わないはずです。(僕は Oracle JDK10 でコンパイルしました)

次に実行に必要な2つのファイルを用意します。1つ目は DOCTOR スクリプトHayden Eliza はスクリプトシンタックスが異なります。"How Eliza Works" なるドキュメントの後ろ半分にDOCTOR スクリプトですので、このファイルをダウンロードしてきて、後ろ半分(initialから始まる行以降全部)を切り出し、"script" という名前のファイルとしてセーブしてください。もう1つは Eliza への入力データです。以下はワイゼンバウムの論文に掲載されていた実行例の入力のみを "test" というファイルにセーブして Eliza を実行した例です。

$ ls
Eliza script
$ cat > test
Men are all alike.
They're always bugging us about something or other.
Well, my boyfriend made me come here.
He says I'm depressed much of the time.
It's true. I am unhappy
I need some help, that much seems certain.
Perhaps I could learn to get along with my mother.
My mother takes care of me.
My father.
You are like my father in some ways.
You are not very aggressive but I think you don't want me to notice that.
You don't argue with me.
You are afraid of me.
My father is afraid of everybody.
Bullies.
$ java Eliza/ElizaApp
>> Hello.
How do you do. Please state your problem.
>> Men are all alike.
In what way ?
>> They're always bugging us about something or other.
Can you think of a specific example ?
>> Well, my boyfriend made me come here.
Your boyfriend made you come here ?
>> He says I'm depressed much of the time.
I am sorry to hear that you are depressed.
>> It's true. I am unhappy
Do you think that coming here will help you not to be unhappy ?
>> I need some help, that much seems certain.
What would it mean to you if you got some help ?
>> Perhaps I could learn to get along with my mother.
Tell me more about your family.
>> My mother takes care of me.
Who else in your family takes care of you ?
>> My father.
Your father ?
>> You are like my father in some ways.
What resemblence do you see ?
>> You are not very aggressive but I think you don't want me to notice that.
What makes you think I am not very aggressive but you think I don't want you to notice that ?
>> You don't argue with me.
Why do you think I don't argue with you ?
>> You are afraid of me.
Does it please you to believe I am afraid of you ?
>> My father is afraid of everybody.
What else comes to mind when you think of your father ?
>> Bullies.
Lets discuss further why your boyfriend made you come here .
$

ワイゼンバウム論文と同じ返答が返ってくることを確認できましたでしょうか?このように ELIZA は非常にポータブルなプログラムでもありました。では、Eliza のもう一つの有名な会話録を実行して見ましょう。

$ java Eliza/ElizaApp script parry
>> Hello.
How do you do. Please state your problem.
>> People get on my nerves sometimes.
Your nerves sometimes ?
>> You should pay more attention.
We were discussing you -- not me.
>> You're entitled to your own opinion.
What makes you think I am entitled to my own opinion ?
>> It bothers me just to be around people in general.
Does that have anything to do with the fact that your nerves sometimes ?
>> I went to the track at Bay Meadows a while back.
You say you went to the track at bay meadows a while back ?
>> I went to the races.
Can you elaborate on that ?
>> Horseracing interests me.
I'm not sure I understand you fully.
>> There's a lot of crooked gambling going on there.
Please go on.
>> It's clear to me if not to you.
Do you think its likely that not to I ?
>> I went to the races.
Do you say you went to the races for some special reason ?
>> I gamble on horses.
That's quite interesting.
>> I went to the races.
You say you went to the races ?
>> Gambling has been nothing but trouble to me.
What does that suggest to you ?
>> I've had experience with crooks gambling at the track.
Do you feel strongly about discussing such things ?
>> I've already told you enough about that.
Oh, I enough about that ?
>> I went to the races.
Can you elaborate on that ?
>> Do you know anything about bookies?
You're not really talking about me -- are you ?
>> A bookie didn't pay me off once.
I'm not sure I understand you fully.
>> I beat up the bookie who did not pay off, and I thought he might use his friends in the underworld to get even with me.
Do you say you beat up the bookie who did not pay off for some special reason ?
>> What do you know about racketeers?
Why do you ask ?
>> What experience have you had gambling?
Does that question interest you ?
>> I like horseraces.
That's quite interesting.
>> I know the mob controls the big rackets.
You say you know the mob controls the big rackets ?
>> Have you ever really thought about the MAFIA?
What are your feelings now ?
>> Let's talk about something else.
Please go on.
>> You keep asking me the same things, why not change the topic?
In what way ?
>> What do you mean?
What is it you really wanted to know ?
>> I thought I told you, people get on my nerves.
Perhaps in your fantasies we thought you told each other.
>> Well, I don't know.
Don't you really know ?
>> I would say so.
Can you elaborate on that ?
>> I would rather not discuss that anymore.
Do you say you would rather not discuss that anymore for some special reason ?
>> I guess so.
That's quite interesting.
>> What are you getting at?
Are such questions much on your mind ?
>> It's not a matter or like or dislike.
What does that suggest to you ?
>> I am getting tired of answering the same questions over and over.
What resemblence do you see ?
>> Why do you need to know that?
What answer would please you most ?
>> I don't understand your motives.
Why don't you understand my motives ?
>> Shouldn't I be?
You say shouldn't you be ?
>> That's just the way it is.
Do you feel strongly about discussing such things ?
>> So?
I'm not sure I understand you fully.
>> You harp on the same questions too much.
What does that similarity suggest to you ?
>> I don't get you.
Do you wish to be able to get I ?
>> It's about time you showed some interest in my feelings.
Why do you say your feelings ?
>> I will help you if I trust you.
Do you wish that you trust I ?
>> Maybe yes, maybe no.
You don't seem quite certain.
>> Really?
Does that have anything to do with the fact that your feelings ?
>> In my opinion you have a one-track mind.
Does that suggest anything else which belongs to you ?
>> I used to go to the track every week.
Can you elaborate on that ?
>> I avoid racetracks now because the races are fixed.
Do you say you avoid racetracks now because the races are fixed for some special reason ?
>> I'd rather not discuss it.
Lets discuss further why your opinion I have a one track mind .
>> That's something I don't want to go into.
Does that trouble you ?
>> I went to the races.
That's quite interesting.
>> It's none of your business.
Why are you concerned over my business ?
>> I don't confide in strangers.
Don't you really confide in strangers ?
>> Let's change the subject.
Please go on.
>> I went to the races.
You say you went to the races ?
>> What's wrong with you that you keep on bugging me about this?
Why do you think I that I keep on bugging you ?
>> The way you repeat yourself is getting ridiculous.
We were discussing you -- not me.
>> There are some tricky operators down there.
Did you think they might not be some tricky operators down there ?
>> The guys involved in the horseracing racket.
What does that suggest to you ?
>> You are a real nag.
Does it please you to believe I am a real nag ?
>> I have had enough of this.
Can you elaborate on that ?
>> Goodbye.
Goodbye. Thank you for talking to me.
$

この会話、実はインターネットのプロトコル仕様のドキュメントである Request for Comment (RFC) に収録されています。

RFC 439 - PARRY encounters the DOCTOR

この時の話し相手である PARRY の正体は後ほど紹介するとして、この事例から見てもELIZA がいかにもっともらしい返事をするか?を十分納得してもらえるのではありませんか?

 

その2に続く

 

『ELIZAをめぐるあれこれ(仮)』について

『ELIZAをめぐるあれこれ(仮)』について

 

実は、昨今のAIブームに乗っかって、個人的に興味のある対話システムについて書きたいとの思いから、割と安直にその始祖であるELIZAに着目したのです。おそらくそれを出発点にその後のいろんな研究成果を追っかけて行くことになるのだろう…と言う僕の浅はかな見通しは文献調査に着手した早々に崩れてしまいました。

ELIZAをめぐる話は本当に多岐に分かれていて、いずれも実に重い。

「これだけで一冊書ける内容だ」というのが今の印象です。

ということで…

軽めの印象を狙った『ELIZAをめぐるあれこれ(仮)』と改題して作業を続行します。もう少し掘っていかないと適切な書籍構成にはまとめられないと感じてますが、既にかなりの情報が溜まってきているので、備忘録がわりにここでは思いつくままダンプすることにします。

 

*「ELIZA」という名前の由来

まずは軽めの名前の由来から。ジョゼフ・ワイゼンバウムが開発した対話プログラムに付けられた ELIZA という名前は『ピグマリオン』という戯曲の主人公から拝借されたものであるとオリジナルの論文では語られていますが、ワイゼンバウムがこのプログラムの開発に着手した1964年は、この戯曲を原作とする映画版『マイ・フェア・レディ』オードリー・ヘップバーン主演の名画ですよね?)の公開と重なるので「まぁ、そういうことなんだろう」と僕は想像しています。

ちなみに『ピグマリオン』の作者であるバーナード・ショーは、アイルランド生まれの作家だそうで、19世紀後半のアイルランド人と言えば産業革命の影の部分を背負わされた人々が想起されます。作家であったバーナード・ショーリベラリストであったことも容易に想像が付きます。彼の作品の多くには辛辣な社会風刺のテイストも盛り込まれていてそれが作品に奥行きを与えていることが高く評価されているそうです。事実、『ピグマリオン』も上流階級の男性二人が訛りの強い田舎娘に言葉遣いや作法を仕込んで上流階級のパーティにデビューさせようとする話ですから、社会の差別(階級や性別)を扱った作品という見方もできます。

もっとも、ハリウッドのフレーバーをまぶした『マイ・フェア・レディ』の方はもっとスィートなテイストなので社会風刺など微塵も感じられませんけどね(笑)あらすじについては、Wikipediaミュージカル版『マイ・フェア・レディ』が詳しいです。ただ、『マイ・フェア・レディ』のミュージカル版と映画版については主演女優のジュリー・アンドリュースオードリ・ヘップバーンの確執がよく知られていて、この確執の原因は映画版の製作にあたったプロデューサーのジャック・ワーナーの投資回収を優先するやり方にあったそうですから、結果的に別の意味で社会風刺になってしまった感はあります。この話、ミラマックスのハーヴェイ・ワインスタインを思い出す人もいるかと思うので、案外今時向けのエピソードかもね(笑)

 

*ジョゼフ・ワイゼンバウムについて

Wikipediaジョゼフ・ワイゼンバウムの記事を翻訳してあります。この記事を読むと彼が MIT の同僚とはかなり違った経歴の持ち主であることがわかります。

彼はベルリン生まれのユダヤ系ドイツ人でナチス・ドイツが台頭しつつあった1936年、家族と一緒にアメリカに亡命しています。彼が13歳の時です。同じ境遇のユダヤ系ドイツ人と言えばアンネ・フランクを思い出しますが、ワイゼンバウムは彼女より6つ年上です。意外なところではヘンリー・キッシンジャーも1923年生まれのユダヤ系ドイツ人です。日本人では司馬遼太郎と同じ歳です。

この世代の人は幼少期からティーンエイジャーの頃に第2次世界大戦を経験していることから世代に共通する属性があるように思います。幾つかの文献から知ったワイゼンバウムの言動に、ある種の既視感を感じたからなのですが、それは地に足のついた本物のリベラリズムといったようなもので、例えば、司馬遼太郎のそれとよく似ている。現実を踏まえた迫力のある、それでいて多少鬱屈したような理想主義と言うか、どんな説得も受け入れない芯の強さのある主張を感じてます。やはり幼少期に「暴力のある日常」の実体験を持つ人達ならではの属性ではないかと思います。

その意味では MIT の Project MAC の主要人物と比較するとワイゼンバウムの出自の違いが際立ちます。彼らはほぼ同世代ですが、同じユダヤ系だがニューヨーク生まれのマービン・ミンスキーアイルランド系とユダヤ系の混血でボストン生まれのジョン・マッカーシ、カリフォルニア出身の生粋のアメリカ人だったフェルナンド・コルバトと、いずれもアメリカで生まれ育っているところがワイゼンバウムとの大きな違いで、ユダヤ系と言うよりはむしろ(非暴力的な)ドイツ移民であることにワイゼンバウムのアイデンテティーを見出すべきかと今のところ僕は考えてます。事実、ワイゼンバウムは1996年に統一されたドイツ(のベルリン)に帰省してますしね。

同じ第2次世界大戦の敗戦国に生まれ育った我々が、ワイゼンバウムの主張に(正しいか誤りかはともかく)どこか既視感を感じるのはこのような歴史的な必然があるからなのかもしれません。

 

*『ELIZA』と言うプログラムについて 

WikipediaELIZA の記事を翻訳してみました。が、僕の好みとしてはちょっとイマイチな感じ。記述がちょっと表層的で散漫な印象を受けます。もし書籍を「ジョゼフ・ワイゼンバウムの物語」としてまとめていくなら、やはりここは彼の論文『ELIZA -- 人間と機械の自然言語コミュニケーション研究のためのコンピュータプログラム』を軸にした情報の収集・整理を進めています。

またまた余談になりますが、ELIZA論文をはじめとする1960年代に書かれたコンピュータ・サイエンスの論文(これはデニス・リッチーバトラー・ランプソンの論文にも共通するのですが)内容が具体的かつ読み物としても成立している文書が多いと思います。おそらく、この時代はまだコンピュータ・サイエンスが海のものとも山のものともつかない学問領域で、そういった学問をわざわざ選択する人はかなり物好きなオタクだったと思うし、社会的な注目度もすごく低かっただろうから「何を書いても怒られない」「最初に書いたもん勝ち」的なムードがあったんじゃないかと個人的には想像しています。

で、ELIZA論文。冒頭の "Introduction" はいきなり下記のような癖のある文章で始まります。

It is said that to explain is to explain away. This maxim is nowhere so well fulfilled as in the area of computer programming, especially in what is called heuristic programming and artificial intelligence. For in those realms machines are made to behave in wondrous ways, often sufficient to dazzle even the most experienced observer. But once a particular program is unmasked, once its inner workings are explained in language sufficiently plain to induce understanding, its magic crumbles away; it stands revealed as a mere collection of procedures, each quite comprehensible. The observer says to himself "I could have written that". With that thought he moves the program in question from the shelf marked "intelligent" to that reserved for curios, fit to be discussed only with people less enlightened that he.

The object of this paper is to cause just such a reevaluation of the program about to be "explained". Few programs ever needed it more.

僕の怪しげな翻訳では…

説明とは上手に釈明することだと言われています。この格言は、コンピュータ・プログラミングの分野、特に発見的プログラミングや人工知能と呼ばれる領域でも同様です。その領域では、マシンは驚異的な方法で動作し、しばしば最も経験豊富な観察者でさえも十分に驚嘆させます。しかし、一旦、そのプログラムの仮面が剥がされて、その内部の仕組みへの理解を促すのに十分な説明される(それぞれはかなり分かりやすい手順を単に掻き集めたものであることを明らかにする)と、その魔法は消滅します。説明を受けた人は「私でも書けるかもしれない」と呟きます。問題のプログラムを「インテリジェント」と記された棚から珍しいものの棚に移して、まだ知らされていない人とだけ議論する事を願います。
この論文の目的は、プログラムをこのような再評価するように「説明」することです。今まで、このようなプログラムはほとんどありませんでした。

 ここでの記述から察するに、この論文が発表された1966年1月の段階で既にELIZAに対する過剰な反応にうんざりしているワイゼンバウムの様子が伺い知れます。そもそも、このプログラムを "ELIZA" と名付けた彼は、プログラムをゆっくり育てていくつもりでいたのだと想像しますが、そのデモンストレーションをみた聴衆は彼が全く想像していなかった(過剰に高く評価する)反応を示したのだと思います。彼にとって、この論文は聴衆を沈静化するための種明かしのつもりだったのでしょうが、開発者が正直に語った魔法の種明かしすら聴衆は信じない…デビューの時は散々な目にあった戯曲のイライザとは全く異なる。(僕の記憶によれば)映画『メトロポリス』のアンドロイド「マリア」が初めて登場したシーンのような反応といったところでしょうか?

・オリジナル ELIZA のパフォーマンスは?

でも聴衆がここまで過剰に反応するにはそれなりの理由があるはず?…ですよね。

上記のワイゼンバウムの論文には女性とELIZAとの対話の事例と(巻末には)実際に用いられた(と思われる)"DOCTOR" スクリプトのソースが掲載されています。

Men are all alike.
男性はみんな似ています。
IN WHAT WAY?
どうしたの?
They're always bugging us about something or other. 彼らはいつも何かについて私たちを悩ませています。 CAN YOU THINK OF A SPECIFIC EXAMPLE? 具体的な例を考えられますか?
Well, my boyfriend made me come here. うーん、私のボーイフレンドは私をここに来させました。 YOUR BOYFRIEND MADE YOU COME HERE あなたのボーイフレンドはあなたをここに来させましたか?
He says I'm depressed much of the time. 彼は、私が長時間が落ち込んでいると言います。 I AM SORRY TO HEAR YOU ARE DEPRESSED 私はあなたが落ち込んでいると聞いて悲しいです。
・ ・ ・ ・

うーむ、もしこの会話を側で聞いていたとしたら、人間同士の会話と錯覚しそうですよね?ワイゼンバウムには申し訳ないですが、聴衆が過剰に反応したのは当然のような気がします。むしろ「巻末のスクリプトだけで、このような応対が可能になるのかなぁ?」と素朴に考えてしまう。これは是非試してみたいところです。

 

・オリジナルのELIZAの実装って?

…ということで、まずはワイゼンバウムが開発したオリジナルの ELIZA の実装を探して見ました。ご存知の方も多いと思いますが、ELIZAは様々なコンピュータや言語に移植された歴史(マイクロコンピュータの黎明期に気の利いたゲームとしての需要が大きかった)があるので、いろんなバージョンが手に入ります。

僕が探し当てた限りでは、オリジナル・コードについては "The Genealogy of Eliza" が一番詳細のように見えます。このページで紹介されているソースコードなどは、下記で公開されています。

github.com

素敵な事に、(他では見かけなかった)ELIZAの実装に使ったワイゼンバウムの SLIP の論文 "Symmetric List Processor" のコピーも収録されてます。が、SLIPなる言語(Lispの亜種だと思うんだけど)で動くオリジナルのELIZA実装を今動かすのはかなり骨が折れそうです。そこで、更にelizagenを読み進めると BBN の Bernie Cosell が書いた Lisp Eliza の解説が出てきます。ここでの解説を信じると、SLIPで記述されたオリジナルのELIZAは、SLIPがLispほどには人気がなかったこともあり、実装コードとしてはあまり普及しなかったようです。 で、ワイゼンバウムの論文を参考にスクラッチで実装した Lisp ELIZA がその後登場する様々な派生バージョンのベースコードになったとのこと。もっとも Lisp とは言っても今日一般的な Common Lisp ではなく、もっと古い(方言がキツイ)Lisp だとは思いますが。例によって脱線すると Bernie Cosell は書籍 "Coders at Work" でも紹介されているBBNのソフトウェア・エンジニアで、初期のARPANETで使用された IMP(Interface Message Processor) のソフトウェア開発者の一人で、ELIZAの開発は Lisp を習得するためのお題で、個人的な趣味として取り組んだそうです。

この "The Genealogy of Eliza" ってページには他にも BASIC 版 ELIZA や emacs の Doctor.el などなど ELIZA の実装について広く紹介されています。更に読み進めればいろいろネタが拾えそう。

 

 

長くなってしまったのでページを代えます

 

今後、僕が書くつもりの諸々のこと

2018/05/16
藤田昭人

 

 

 

もちろん、ASCII DWANGO編集部には全く相談してないことなんですが…

僕個人は(勝手に)Truth of the Legend をシリーズ化しようと目論んでまして、先週、編集部を訪問した時にチラッと漏らしたら「何を書くか頭出しをしろ」と言われた次第です。なので、ここにリストを書くことにしました。

 

1.『Unix考古学』(既刊)

もう出版したので、特に言う事はナシ。

 

2.『Multicsの謎』

2016年の『「Unix考古学」の夕べ』で勢い余って予告した続編です。

一言で説明すると「Unix考古学」の第1章をさらに掘り下げた内容です。「何を今更 Multics」と言う方々も多いかと思いますが、どっこいそんな事はありません。これについてはある程度情報収集も終わっていて、執筆の構想らしきものを解説できそうなので別のページにて…

 

3.<タイトル未定>

Multicsの開発プロジェクトであった "Project Mac" が始動した翌年、1963年にARPA IPTOがファンドするもう一つのプロジェクトが立ち上がりました。それが "Project GENIE" です。こちらは UC Berkeley に対するファンドでした。このプロジェクトも"Project Mac"と同様にその後のコンピュータ・サイエンス研究に大きな影響を与えたのですが、Multics ほど有名にはなりませんでした。で、このプロジェクトを発端とするその後の様々な取り組みを紹介するのが、この巻の目論見です。

実は、一昨年の末にこの巻の初期予稿的な講演を僕は行ってます。

『スティーブ・ジョブスとコンピュータ・サイエンス』

が、その時、京産大の安田さんにボロクソにケチを付けられたように「あまりにもデカすぎる」テーマであることを再確認するに至りました。おそらくシリーズ最大の巻になると思います。優先度は一番低いです。

 

4.『Computer Power and Human Reason(仮)』

今どきの若者には "Chatbot"「人工無能」と言う訳語が付いていることを知らない人も多いのではないでしょうか? この「人工知能」を皮肉った訳語が生まれた背景には ジョセフ・ワイゼンバウムELIZA の研究があります。ELIZAの上で動くDOCTORと言うスクリプトの被験者の過剰な反応に驚いたワイゼンバウムはその後さまざまな考察を行いますが、その一連の研究を取りまとめた"Computer Power and Human Reason"と言う書籍を1976年に出版しています。この書籍にフォーカスして、今日のAIスピーカが目指すべきビジョンを考察しようと言うのがこの巻のテーマです。

実はこの構想を横田くんに話したところ「何をやってるんだ、今すぐかけ、とっとと書け」と激しく激励されたことと、それなりに社内的な需要もありそうなので(社内向けの)全6回程度の講演の企画として進めています。今のところ、本業以外では最優先のミッションです。この巻についても別ページで詳細を書く予定です。

2018/06/14 下調べをしたところタイトルを変更した方が良いように考え始めてます。

2018/07/15 タイトルを『ELIZAをめぐるあれこれ(仮)』に変更します。僕ら情報の人間にはあまり耳馴染みのなかった PARRY のHMC分野での研究成果に驚いているところ。ともあれ、ワイゼンバウムといいコルビーといい既に他界しているので、彼らの研究は文字通り「歴史の審判」を待っているところ何だろうなぁ…と今、感じています。

 

5.『サイバネティックス(仮)』

 以前、FBでもチラッと語りましたが、この巻は『Multicsの謎』の企画検討の中から生まれました。つまり「そもそも Multics って何故開発されることになったの?」と言う素朴な疑問…Multics以前の1940年代〜1950年代の話です。これに関してはリアルタイムでのご経験を持っておられる和田英一先生の貴重なコメントに酷くインスパイアされたことと、それから「機械学習って人工知能の研究なの?」と言う僕ら世代のボヤッとした疑問を解決することがテーマです。(なんだかよくわからない😀)

実はこの巻についても前口上的内容を述べた講演を僕は行っています。

『AIの来た道』

和田先生から伺った Norbert Wiener vs John von Neumann の話や、更に僕らには関わりの深い「コンピュータ・サイエンス」と言う新たな研究分野が生まれた経緯について改めておさらいしておいたほうが良いと僕は考えているんだけど…皆さんはどう思いますか?

 

以上、リストアップすると5つのテーマが今の僕にはあります。その他にも2016年の講演の際に散々言われた『Unix考古学』の日本バージョン、あるいは3.から派生する日本でのコンピュータ・グラフィックス(大村皓一先生のお話ですね)とか、もう少し調べないと書けないネタもあるんですけどね。だいたいこれくらいかな?

 

…忘れてました。6つ目のテーマ。

 

6.IBM Watson

IEEE の IBM Watson の論文集が公開されているので、これで何か書けないか?と考えたことがありました。4.と近い内容になるのかもね?