ChatGPTにレシピを訊いたら架空のパスタ「フォルグッティ」を教えられた話

クリームパスタのレシピ

AI チャットボット ChatGPT が大人気です。 どんなことを聞いてもちゃんとした回答が返ってくることが、その最大の理由のようです。

Appleの審査への異議申し立てメールを代筆してもらった人や、 自身のプログラムのバグや改善点を探してもらった人小説における描写方法を複数提案してもらった人など ChatGPTをアシスタントとして有効活用する例が多数挙がっております。 「分からないことがあったら、とりあえず訊いてみる」 という使い方でそれなりの答えが返ってくるので、 AIにおける"もう全部あいつ一人でいいんじゃないかな"状態になっています。 検索の必要がなくなり、Googleの立場が危うくなる といった意見まで出ています。 実際、Google は ChatGPTに対して非常事態宣言を出しており、 それが先日発表された Google の1万2千人の解雇の大きな要因だとも言われています。 我々はいま、コンピューターの歴史において、 重大な転換点に来ています。

さて、この便利さを私も享受したいです。 という訳で、ChatGPT に「クリームパスタの作り方」を訊いてみました。 こんな回答が返ってきました。 2

クリームパスタの作り方は次のようになります。
材料:
・パスタ(スパゲテイやフォルグッティなど)
・バター(大さじ2~3)
・フライドオニオン(小さじ1)
・フラワー(小さじ2)
・ミルク(カップ1~1.5)
 ・牛乳(カップ1~1.5)
・特になしの場合にはチーズ(グラム100~150)
・塩、胡椒

作り方:

1. パスタを煮る。指示書に従って煮る。
2. バターをフライパンで溶かす。
3. クリームを加え、混ぜる。
4. パルメザンチーズを加え、溶かす。
5. パスタを加え、混ぜる。
6. 食塩、粉こしニンニク、粉パセリなどの味付けを加え、もう一度混ぜる。
7. 料理ができ上がったら、すぐに皿に盛り、食べる。
ChatGPTのスクリーンショット

  フォルグッティ とは・・・?

スーパーで見たことないし、聞いたこともありません。 パスタには色んな種類があります。 ロングパスタだと私は一般的な「スパゲティ」よりも「フェデリーニ」が好きです。 フォルグッティもそのような、私の知らないパスタなのでしょう。 「フォルグッティとは何ですか?」と質問してみました。

ChatGPTのスクリーンショット
フォルグッティは、イタリア料理におけるパスタの一種で、細長い形をしています。
フォルグッティは「細長い」という意味で、薄い麺を使って作られています。
また、フォルグッティはクリームを使った料理に合わせるのに適しています、
特にクリームソースがかかった料理によく使われます。

本当にあるっぽいです。 念のためGoogleで検索してみました。

Google検索の結果

 

ないじゃん。

あまりにも自信満々に言われるので、一瞬信じかけました。 音がFから始まってttiで終わる感じもリアルです。 一応、パスタメーカーのサイトに書かれている パスタ一覧記事なども見ましたが、 それらしきものは見つかりませんでした。 また、先ほどのChatGPTからの説明にあった「イタリア語で細長い」は、 「allungato」で、フォルグッティにかすりもしませんでした。 フォルグッティは存在しない架空のパスタでした。

ChatGPT が世界中のデータを所有している全知全能の神である と考えている人は沢山居るようで、 アカデミックな世界でもこんな方が居ました。 以下、スクリーンショットです。

Twitterのスクリーンショット Twitterのスクリーンショット

  きっと、この方のように発信していないだけで、 同じことをした人は何十人も居ると思います。

ちなみにこの件について、 「研究者がこのようなことをすることに危機感を覚える」 みたいなコメントを見ましたが、 この方の専門は自然科学で、 ChatGPTの属する情報科学とは全く別分野の専門家です。 むしろ、研究者を一括りにして万能扱いしているその人の方が、 考え方として危険だと思いました。

閑話休題。

そもそも、ChatGPTは「何が正しいか」という知識は持っていません。 このAIが行うのは、自分のデータの中で確率的に 一番それらしい単語を選んでくることだけです。

じゃあ、どうしてAIに知識を持たせないんだと疑問を持つでしょう。 それは、歴史が説明してくれます。

人工知能の昔

せっかくの機械なので、昔の会話型人工知能が どのような感じだったのか。 どういった経緯で ChatGPT が生まれたのか 書いていきたいと思います。

ルールに基づく会話システム

人工知能、チャットボットの歴史は半世紀以上前に遡ります。 1966年にMITのJoseph Weizenbaumが論文で 『ELIZA』という対話型AIプログラムを発表しました。 カウンセラーを模した対話プログラムなのですが、 例えばこんなやり取りを行います。 「young women」 が被験者である人間で、「eliza」 が AI です。

young woman: Men are all alike.
(男の人はみんな同じようなものだと思います)
eliza: In what way?
(どうしてそのように考えたのですか?)
young woman: They're always bugging us about something specific or other.
(男性はよく具体的なことなどで邪魔をしてきます)
eliza: Can you think of a specific example?
(具体的とは例えばどんなものですか?)
young woman: Well, my boyfriend made me come here.
(ええと、私は恋人に言われてここ(=精神科)に来たんです)
eliza: Your boyfriend made you come here?
(恋人に言われてここに来たのですか?)
young woman: He says I'm depressed much of the time.
(恋人が言うには、私は落ち込んでいることがおおいそうです)
eliza: I am sorry to hear you are depressed.
(落ち込んでいることが多いというのは大変ですね)
young woman: It's true. I'm unhappy.
(本当にそうです。私は今、悲しい気分です)
eliza: Do you think coming here will help you not to be unhappy?
(ここへ来たことは悲しさの解消になると思いますか?)
young woman: I need some help, that much seems certain.
(私が助けを必要としているのは、間違いないと思います。)
eliza: What would it mean to you if you got some help?
(助けはあなたにとってどのような意味を持ちますか?)
young woman: Perhaps I could learn to get along with my mother.
(もしかすると、母と良好な関係を築けるようになるかもしれないです)
eliza: Tell me more about your family.
(あなたの家族について、もっと聞かせてください)
young woman: My mother takes care of me.
(母は私の世話をしてくれます)

...

(スタンフォード大学の研究記録より引用)

よくよく読んでいると、相手の言葉をそのまま繰り返していたり、 言われたことを質問文にして言い返していたり、 なんとなくプログラムの法則が見えてくるような気がします。

ELIZAの1965年版のプログラムはInternet Archive にあります。 SLISPという独特な言語で書かれているので分かりにくいですが、 やっていることは非常にシンプルで

  1. 入力された文章を(大雑把に)構文解析する
  2. 文中に特定の単語が含まれていないか調べる
  3. 特定の単語が含まれていたらテンプレートを使って文章を返す
  4. なかったら適当に相づちを打つか続きを促す

の4つです。

例えば、mother, father, brother, sister, family といった単語があった場合は 「family系のテンプレート」から返します。 上記例の Tell me more about your family. がそれに当たります。 場合によっては Your mother ? (mother の部分は入力された単語を繰り返す)になる場合だったり What else comes to mind when you think of your mother. だったりと、「family系テンプレート」の中でも 何パターンか文章を用意して、同じような会話が出てこないように工夫しています。 他にも sad, unhappy, depressed, sick なら「sad系テンプレート」など 約50の○○系テンプレートと、約200の文章が用意されています。 これだけで、それなりに会話が出来る人工知能ができてしまったので、 業界は沸き立ちました。

個人的に思う Weizenbaum の最大の功績は 人工知能を作るとき「精神科の医師」を模したこと、 もっと言うと、精神科の医師は会話らしい会話をしていないことに 目を付けたことだと思います。 実際に人々が行っている会話を真似するには、パターンが複雑すぎて、 この方法は現実的ではありませんでした。

しかし、この「ありそうなパターンを列挙して、 それに対する回答を用意しておく」というのは チャットボットの基本的なアプローチとして長年使われることになりました。 つまり、内科医に扮する人工知能を作るには 医療に関する知識を大量にインプットする必要があります。 また、入力された言葉を正確に認識させる必要があるため、 言語学の知識も必要になります。

ルールと知識に基づくシステム

80年代から90年代まで、人工知能の分野では 「エキスパートシステム」が話題の中心にありました。

今となっては聞いたことがないかもしれませんが、 過去の資料をみるとその影響力がわかります。 例えば、日本の図書館で使われるNDC分類において、 1995年に制定された第9版を見てみましょう。

コンピュータシステム, ソフトウエアは分類番号 007.63 です。 その下に更に細かい分類があるのですが

  • 007.632 エキスパートシステム
  • 007.634 オペレーティングシステム
  • 007.635 漢字処理システム
  • 007.636 機械翻訳
  • 007.637 図形処理ソフトウェア
  • 007.638 ワープロ用ソフトウェア

と、一番上にエキスパートシステムが来ています。 それ以外にも 007.1 情報論理の下 007.15 にもエキスパートシステムがありますし、 548.963 コンピュータシステム, ソフトウエア の下 548.9632 もエキスパートシステムです。 分類にこれだけ出てくるほど、 当時は書籍として一大ジャンルを築いていたのです。

ちなみになんでこんなことを知っているかというと、 学生時代にエキスパートシステムについて調べるとき、 本が格納されている棚がバラつきすぎていてムカついたからです。

話がそれました。

エキスパートシステムとは、先ほどの例で言うと 「ベテランの内科医の知識をコンピューターに全て入れれば、 人の代わりにコンピューターが名医になるのでは」という 中々に豪快な発想の元で生まれたシステムです。

この時代によく使われていたのが Prolog というプログラミング言語です。 Prolog では「属性(名詞1, 名詞2)」で「名詞1 は 名詞2 の 属性 である」 という表現します。

例えば、サザエさんの家系図の知識および、 一般的な家系図のルールは Prolog ではこのように書けます。

// facts
male(namihei).
male(katsuo).
male(masuo).
male(tarao).
female(fune).
female(wakame).
female(sazae).
child(sazae, namihei).
child(sazae, fune).
child(katsuo, namihei).
child(katsuo, fune).
child(wakame, namihei).
child(wakame, fune).
child(tarao, masuo).
child(tarao, sazae).

// rules
father(X, Y) :- child(Y, X), male(X).
mother(X, Y) :- child(Y, X) ,female(X).
son(X, Y) :- child(X, Y), male(X).
daughter(X, Y) :- child(X, Y), female(X).
grandfather(X, Y) :- child(Y, Z), child(Z, X), male(X), !.
grandmother(X, Y) :- child(Y, Z), child(Z, X), female(X), !.

10年ぶりに書いたので、間違ってるかもしれませんが…。 エキスパートシステムが流行らなかった理由として、 まず、この書式がぱっと見で分かりにくいのが大きな原因だったと私は思います。 エキスパートシステムは専門のコンピュータ技術者でなくても 知識データを記述できることがウリだったらしいのですが、 現役プログラマーの私でも、この記法を見ると面食らってしまいます。

さらに、医師でこれをやろうとすると、 この表記で診療知識を表現する必要がありますが、 Prolog の知識とルールだけで表現できるほど、 診療するときの確認項目は単純ではないことが分かってきました。 この辺りの事情は当時NTTによって書かれた論文に色々と書かれています。 多くの知識はこの書式に落とし込めるほど 単純なものではないことが分かったのです。

1982年には日本で第五世代コンピュータ計画という、 巨額の予算が投じられた人工知能プロジェクトがありました。 予算の総額は540億円デジタル庁がWeb3.0 に対して1億円の予算を計上したことに対して、 批判の声が上がっていましたが そんな人がこのプロジェクトに投じられた金額を見たら憤死してしまうのではと心配になります。 第五世代コンピュータ計画の中枢にあった技術が「エキスパートシステム」でした。 計画が成功したかについては、 今現在、日本が人工知能でどのようなポジションに居るかで、 推して知ることができると思います。

このように、ルールと知識によるアプローチは 限界があることが見えてきました。

大量のデータを使った確率論によるアプローチ

別のアプローチを取った技術もあります。 アマゾンでこんな画面を見たことがあると思います。

Amazon.co.jpのスクリーンショット

  これは人力でやっている訳ではなく、 Amazonの持つアクセスデータから自動生成しています。 大量にあるアクセスデータを元に、 「最大公約数」となるデータを表示しているのです。 いま Nintendo Switch を買う人の多くは ポケモンとマリオカートを一緒に買う傾向があるので ここに表示されています。 私のように 『Gnosia』と『十三機兵防衛圏』をやるために Switch本体を購入した人も居ると思うのですが、 そういった人は確率的に出現率が低いため、 ここに候補として上がってくることはありません。 (もちろん、実際にはもっと複雑なことをしています。 例えば、15年前のNetflixのプログラムコンテストで優勝したレコメンドエンジンは100以上の軸を持っていたそうです。)

ChatGPTもやっていることの本質はこれと同じです。 大量のデータを読み込ませて、 この単語のあとには、この単語のあとには、こんな単語が来るはずというのを確率的に求める。 これをとんでもない文章量と、とんでもないパラメーター量でやると、 まるで人間と話しているかのような、正確な文章が生成されます。 ちなみに、元になった技術の論文によると、 読み込ませたデータはネット上の文章45TB、 その文章をどう分析するかというパラメーターの数は1750億個だそうです。

しかし、それだけデータがあってもこの世の全てをカバーできる訳ではありません。 また、確率的に一番高いものを出しているため、 データ量が少ないものを入力すると、間違った情報が返ってくることが増えます。

有名なもので、DeepL翻訳が書いていない文章まで勝手に翻訳する というものがあります。 このとき、DeepLは元文章に書かれていないことを、勝手に追加して翻訳しています。

DeepLのスクリーンショット

  これは、学習データの大半で「このような先行研究の潮流を受けて」まで書かれているものは「我々はこの機能を開発しました」まで含まれていたため、 勝手に解釈をして表示してしまったものと考えられます。 このような例が、確率アプローチが「中身を理解していない」ことの何よりの証左になると思います。

知識アプローチと確率アプローチ

AIの歴史は「人間の知識を忠実にコンピューターに覚えさせる」アプローチと、 「大量のデータの中で確率的に正しいと思われるデータを返す」アプローチの 2つの間で行ったり来たりを繰り返しています。

知識によるアプローチでは、 知識をインプットすることの手間や、 現実の曖昧さを上手く表現できないという問題があります。 そこで、データを用意すればそれなりの精度を出すことが出来る 確率によるアプローチが優れて見えてきます。

確率によるアプローチでは、 データ内に存在しない知識に対して、 全く正しくない答えを返してしまったり、 多くのデータが誤っているものは、同じように誤って回答してしまいます。 電卓でコンピューターは間違った答えを出しません。 また、多くのSF作品でコンピューターは 正しい答えを出すというイメージが強く刷り込まれています。 コンピューターは間違えないという認識がある限り、 これは問題となるでしょう。 これを解決するには知識によるアプローチが 必要になるでしょう。

今は確率アプローチが全盛です。 私はまたいつか、この振り戻しがあると思っています。 AIが会話能力としては申し分ない域へと達した今、 現実社会へと進出が現実味を帯びてきました。 レシピを教えてくれるAIを商品として売ろうとしたとき、 今のように訳の分からないパスタ名を出してくるような 人工知能では売ることが出来ません。

企業は機械が間違ったときに責任を取りたくありません。 そんなとき、人工知能に正しい知識を持たせることが またクローズアップされるのではと思っています。

今度はもっと誰でも使える表現方法だったり、 楽にデータを増やせる手法だったり、 複雑性を許容するモデリングだったりが出てくると、 また、ゲームチェンジャーになるのではと思います。

(終)