International Essays |
ChatGPTがWolframのSuperpowerを統合
ChatGPTがWolframのSuperpowerを統合
ここで記述されている機能を有効にするためにはChatGPTからWolfram pluginを選んでインストールする必要があります.この機能は現在のところ一部のChatGPT Plusユーザのみが利用できます.詳細はOpenAIのWebページをご覧ください.
ほんの2ヶ月半で...
ほんの2ヶ月半で...
1月の初旬,私はChatGPTとWolfram|Alphaを接続する可能性について書きましたが,そのわずか2ヶ月半後の今それが実現しました! OpenAIとWolframのチームのソフトウェア工学により,ChatGPTでWolfram|Alpha,そしてWolfram言語も呼び出すことができ,私たちが考えるところの「計算Superpower」が提供できるようになりました.これはまだ実現したばかりですが,すでに非常に素晴らしいものとなっています.「ChatGPT + Wolfram」がいかにパワフルで(しかも革命的でさえ)あるかがすぐにお分かりいただけると思います.
1月のブログで私は,大規模言語モデル(LLM)のニューラルネットであるChatGPTは,Webから読み込んだ(ような)資料をテキストで生成するという優れた機能を持つが,それが実際の非自明な計算をしたり,(「ほぼ正しい」ではなく)正しいデータを体系的に生成したりすることは期待できないと指摘しました.しかしWolframプラグインに接続すれば,これらができるようになります.次は1月のブログで使った(非常に簡単な)最初の例を,「Wolfram Superpower」をインストールしたChatGPTで実行したものです.
これは1月に見た結果と異なり,実際の計算で得られた正しい結果になっています.しかも,その場で可視化することが可能になっています.
どうしてこのようなことが可能なのでしょうか?ChatGPTは内部でWolfram|Alphaへのクエリを形式的な表現に替えて,それをWolfram|Alphaに送って計算させ,戻ってきた結果を読んで「どう答えるかを決めている」のです.このやり取りは「Used Wolfram」ボックスをクリックすると見られます.これを見るとChatGPTが「捏造しているのではない」ことが分かります.
ここではChatGPT側でもWolfram|Alpha側でも重要なことが多数起きています.それでも結果は正しく,テキストの中に自然に盛り込まれています.
別の例を試してみましょう.これも1月に私が書いたものです.
Wolframのテクノロジーにふさわしい結果です.さらに可視化もできます.
1月のブログでは,ChatGPTは次のプロンプトに対して,もっともらしいが誤ったデータを「作り上げる」と指摘しました.
以下の例も1月に使ったものですが,今は正しい答が得られています.
ここで挙げた例を実際に試して,私がお見せしている答と違う(よい場合も悪い場合もあり得ます)ことがあっても驚いてはいけません.ChatGPTはランダム性を使って応答を生成しているので,新しいセッションで全く同じ質問をしても返される答が違う可能性があるのです.非常に「人間的」なのです.Wolfram|AlphaやWolfram言語で経験するような,「何度質問しても正しい答は変わらない」というものとは異なります.
次の例は,ChatGPTが最初に「Mercury」の意味を取り違えていたことを知った後,Wolframプラグインと見事に「会話をしている」ところです.
ここで特筆すべきことは,ChatGPTはWebページを見せるといった「行き止まり」の操作をするためにWolframプラグインを使っているのではないということです.むしろWolframプラグインはChatGPTにとって本当の「脳移植」のような働きをしています.ChatGPTは必要に応じてWolframに質問し,Wolframが答を返すとそれを適した形でテキストにするのです.その動作は感動的ともいえます.もちろんもっと洗練すべき部分はありますが,正しく非自明な計算だけでなく,正確で精選された知識やデータを伝える能力(他もありますが)をChatGPTに与えることにWolframは大いに役立っています.
さらにできることはもっとあります.すでに例で見たように,WolframはChatGPTにカスタム生成の可視化を与えることができます.Wolframの計算機能を使うと,「真にオリジナル」のコンテンツ,つまり今までになかった計算を日常的に行うことができます.他にもあります.「純粋なChatGPT」は「訓練中に学習したこと」に限られますが,Wolframプラグインを呼び出すことによってまさにその瞬間のデータを得ることができます.
これはWolframのリアルタイムデータフィードに基づいて行えます(以下では,それぞれの場所について1回ずつ,計2回呼び出されています).
「科学スタイル」の予測計算に基づくことも可能です.
その両方も可能です.
実行可能な事柄の例
実行可能な事柄の例
このうちの(ほとんど)すべてがChatGPTでアクセスできるようになり,新しい可能性の深さと広さを押し広げます.以下の簡単な例をご覧ください.
人間とAIの最新のワークフロー
人間とAIの最新のワークフロー
ChatGPTは人間と会話をやり取りすることができるように設計されています.しかし,その会話に実際の計算と計算知識が含まれていたらどうでしょう.次の例をご覧ください.まずは「世界の知識」についての質問です.
「ボックスを開く」と,ChatGPTがWolframに正しく質問したか,Wolframがどのような答を返したかが確認できます.引き続き地図を作成させます.
「これよりもきれいな」図法が使えた可能性があります.Webを読み込むことに基づいたChatGPTの「一般的な知識」を使うと,もっと良い図法を使うよう指示できます.
代りに温度分布図が欲しいとします.これもただ指示するだけです.表面下でWolframのテクノロジーが使われています.
再び図法を変えてみましょう.今度も「一般的な知識」を使って選ぶよう指示します.
図法は「正しい」ですがセンタリングが違います.修正を求めましょう.
これでOKですね.ここでできたものは「協力して」構築したものです.求めているものを繰り返し要求し,AI(つまりChatGPT + Wolfram)が徐々に構築しました.しかし実際に得られたものは何でしょうか.それはWolfram言語のコードです.「ボックスを開いて」も,単にChatGPTに尋ねるだけでも見ることができます.
(このコードには牛肉生産についての最初の記号的クエリではなく明示的な数値だけしか含まれていないということが多少残念ではあります.これは,ChatGPTがWolfram|Alphaに最初にした質問をし,その結果をWolfram言語に送ったために起きたことです.それでもこのプロセスが動作しているのは非常に素晴らしいと思います.)
動作の仕組み—AIとの論争
動作の仕組み—AIとの論争
内部ではChatGPTとWolframプラグインはどのように動いているのでしょうか.前述の通り,ChatGPTの中核は,与えられたテキストから「妥当な会話」を生成するためにWeb等で訓練した「大規模言語モデル(LLM)」です.しかし訓練の最終部分として,ChatGPTはどのように「会話をする」か,いつ「誰に何を聞く」か,そしてその「誰」が人なのかプラグインなのかも教えられます.特にいつWolframプラグインを使えばよいのかも教えられるのです.
WolframプラグインにはWolfram|AlphaとWolfram言語の2つの入り口があります.Wolfram|Alphaの入り口はある意味ChatGPTにとって扱いやすく,Wolfram言語の方はよりパワフルです.Wolfram|Alphaの入り口の方が簡単なのは,Wolfram|Alphaが,まさにChatGPTが日常的に扱っている自然言語を入力として受け入れるからです.さらにWolfram|Alphaは寛容で,事実上多少取り散らかった「典型的な人間のような入力」を扱うように構築されているのです.
一方Wolfram言語は明確で正確に定義されるよう設定されており,任意の高度な計算を積み上げていくために使えるものです.Wolfram|Alpha内部では,自然言語が正確なWolfram言語に変換されます.実際には「不正確な自然言語」を捉えて正確なWolfram言語に「注ぎ込んで」いるのです.
ChatGPTがWolframプラグインを呼び出すと,自然言語をWolfram|Alphaに送るだけということがよくあります.しかしこの時点までにChatGPTはWolfram言語自体を書くことについてある程度学んでいます.後で述べますが,最終的にはこれがより柔軟で強力な通信方法となるのです.それでもWolfram言語コードが正しくないとうまくいきません.そのようになるまでには訓練も必要ですが別のことも必要です.あるコードの候補が与えられるとWolframプラグインはそれを実行することができます.もしその結果が明らかに誤り(多数のエラーが出る等)である場合,ChatGPTはその修正を試み,再び実行することができます.(さらにChatGPTは実行するテストを生成し,失敗したらコードの変更を試みます.)
開発することはもっとありますが,ChatGPTが何度も行き来するのはすでに見ています.それはWolfram|Alphaのクエリを書き直すこと(無関係の部分を取り除いて簡約化すること)かもしれないし,Wolfram|AlphaとWolfram言語を切り替えることを決定することかもしれないし,Wolfram言語コードを書き直すことかもしれません.このようなことをどのように行うかを指示することが,最初の「プラグインプロンプト」の問題です.
このプロンプトを書くことは不思議な動作です.多分これは私たちにとって真剣に異質な知能とコミュニケーションを取るという初めての体験です.もちろんこの「異質な知能」が,人間が書いた膨大なテキストを使って訓練されているというのはありがたいことです.例えばこの知能は英語を知っています(SF映画のエイリアンのようでもあります).そして「ユーザ入力が英語以外の言語の場合は,英語に訳して適切なクエリをWolfram|Alphaに送り,もとの入力と同じ言語で答を出力しなさい」と指示することができます.
場合によっては非常に頑固でなければならないということが分かりました.「Wolfram言語コードを書くときは変数名には『決して』スネークケースを使わず,『常に』キャメルケースを使え」というのがその一例です.これほど頑固であってもChatGPTは誤ったことを行うことがあります.「プロンプトの設計」のプロセスは動物との論争のようです.ChatGPTに希望することをやらせようとしても,それを達成するのに必要なことを知るのは容易ではありません.
最終的におそらく訓練やプロンプトで対処されるでしょうが,現在の時点ではChatGPTはいつWolframプラグインが助けとなるのかが分からないことがあります.例えば,ChatGPTが次の入力をDNA配列だと推測しても,(少なくともこのセッションでは)Wolframプラグインがそれについて何かできるとはすぐには分かりません.
「Use Wolfram」を指定するとChatGPTはクエリをWolframプラグインに送り,クエリはうまく処理されます.
(「Use Wolfram|Alpha」か「Use Wolfram Language」を指定したい場合もあるかもしれません.特にWolfram言語の場合,ChatGPTが送ったコードを見て,ChatGPTが思いついた名前の関数で実際には存在しないものは使わないように指示した方がよいでしょう.)
WolframプラグインにWolfram言語コードが与えられると,プラグインは基本的にそのコードを評価して結果を返します.結果は多分グラフィックス,数式,テキスト等でしょう.しかしWolfram|Alphaの入力が与えられると,それは特別な「LLM用」Wolfram|Alpha APIエンドポイントに送られ,結果はChatGPTが読み込むことを意図したテキストとして戻り,実質的にChatGPTが書いているテキストに対する追加のプロンプトとして使われます.次の例を見てみましょう.
結果は尋ねられた質問に対する答えのほか,ChatGPTが入れようと決めた追加情報を含むテキストになっています.しかしWolframプラグイン(およびWolfram|Alpha 「LLMエンドポイント」)が内部では実際に何をしているかを見ることができます.
写真を含め,多量の追加情報があります.しかしChatGPTはそのうちのいくつかだけを答えに加えようと「決定」しました.
ところでここで強調したいのは,答が希望通りのものであるかどうかを確かめたい場合は,ChatGPTがWolframプラグインに実際に送ったものおよびプラグインが返したものをチェックするとよいということです.Wolframプラグインに加えている重要な機能の一つに,ChatGPTの出力の真実性を確立し,いつChatGPTが「その想像力」を使っていて,いつ確固たる事実を返しているのかを知る方法があります.
何が起きているのかを理解しようとする際には,Wolframプラグインに送られたものをWolfram|AlphaのWebサイト,またはWolfram言語システム(Wolfram Cloud等)に直接入力してみるとよいでしょう.
人間とAIのコラボレーションのための言語としてのWolfram言語
人間とAIのコラボレーションのための言語としてのWolfram言語
ChatGPTの素晴らしい(そして率直に言って思いもよらない)ことの一つに,最初は大雑把な記述を,エッセー,手紙,法的書類等の洗練された最終出力にする能力というものがあります.これまでは「決まり文句」から始めて,それを修正し,「繋ぎ合せる」,といった「手作業」で行おうとしていたでしょう.しかしChatGPTはこのプロセスを時代遅れとしたも同然です.実際,ChatGPTはWeb等で読んだことから多岐に渡る決まり文句を吸収し,それをユーザが必要なものにシームレスに適用することをうまくやってのけるのです.
ではコードはどうなるでしょう.従来のプログラミング言語では,コードを書くには多くの「お決まりの作業」が必要であり,そのような言語のプログラマーの多くはWebから多量のコードをコピーしてきて自分のプログラムを構築することに多くの時間を費やします.しかし今は突然ChatGPTがこのほとんどを過去のものにするかのようです.ほんのわずかの「人間からの入力」さえあれば,ChatGPTはどのような種類のお決まりのコードでも自動的に効率よく組み合せることができるからです.
もちろん人間の入力も必要です.そうでないとChatGPTはどのようなプログラムを書けばよいのか分からないからです.なぜコードに決まり文句がなければならないのかと思われるかもしれません.「決まり文句」なしで人間の少量の入力だけしか必要としない言語を持つべきではないのか,と.
ここで問題となるのは,従来のプログラミング言語はコンピュータに「この変数を設定しろ」,「あの条件をテストしろ」等,コンピュータの言葉で指示することが中心だということです.しかしその通りでなくても構いません.逆方向から始められます.人が自然に考えるように物事を捉え,それを計算で表し,それを実際にコンピュータ上に実装する過程を自動化するのです.
自然言語から始めてみましょう.Wolfram|Alphaの成功が示すように,自然言語はある点まではうまくいきます.しかしより緻密なことを指定しようとすると,(法律用語のように)扱いにくくなるため,もっと構造化された表現が必要になります.
数学における歴史的な例があります.約500年前までは,「数学を表現する」唯一といっていい方法は自然言語でした.その後数学表記が発明され,数学は代数,微積分,そして多数の数理科学に発展していきました.
私がWolfram言語で大きく掲げた目標は,「計算で表現」することができるあらゆるものに対して,同じようなことができる計算言語を作ることです.これを達成するために,多くのことを自動的に行うと同時に多くのことを本質的に知っている言語を構築する必要がありました.しかし結果は人が便利に「計算的に表現」できるように設定されている言語であり,従来の数学表記が「数学的に表現させる」のと同じようなものです.大切な点は,Wolfram言語は従来のプログラミング言語とは異なり,コンピュータだけではなく人間も読むことを意図しているということです.換言すると,Wolfram言語は「計算アイディアのコミュニケーション」をコンピュータに対してだけではなく人に対しても構造的に行うことを意図しているのです.
この考えは現在,ChatGPTによって,突然これまでになく重要なものになっています.上で見たようにChatGPTでWolfram言語が使えるようになったので,ある意味自然言語だけを使って計算アイディアを積み上げることができます.ここで重要なのは,Wolfram言語は我々が話題にするいろいろなことを直接表現できるということです.そしてまた,Wolfram言語は私たちが持っているものを知る方法を提供してくれるということも重要です.私たちはChatGPTが生成したWolfram言語コードを現実的かつ経済的に読むことができるのですから.
ChatGPTのWolframプラグインではすべてのことがうまく動作し始めています.次の簡単な例では,ChatGPTが,尋ねられたことについてのWolfram言語バージョンをすぐに生成できることを示しています.
別の例です.
私だったら少し違った書き方をしていたかもしれませんが,これも非常に読みやすいものです.
希望することを表現するのに,Wolfram言語と英語のピジン語を使うことができる場合もあります.
次の例でもChatGPTがうまくWolfram言語を構築しています.そして,私たちが確認できるようにそれを表示しています.実際,これも正しく計算しています.
ところで,これを動作させるにはWolfram言語がある意味「自己完結型」であることが大切です.上記のコード片は標準的な一般のWolfram言語コードに過ぎません.それは外部の何にも依存していません.ここに現れるすべての定義はWolfram言語ドキュメントで調べることができます.
もう1つ例を挙げましょう.
明らかにChatGPTは困っています.しかしChatGPTが提案しているように,生成されたコードをノートブックで直接実行することができます.Wolfram言語は記号的なので,各ステップでの結果を明示的に見ることができます.
惜しい!ちょっと手助けして,ヨーロッパの国々の実際のリストが必要だと言ってみます.
結果が出ました!少なくとも結果といえるものが出ました.この計算を見ると,結果は望んでいたものとは違うかもしれません.例えば,国ごとに複数の主要な色を選んでそのうちのいずれかが紫に近いかどうかを見た方がよかったかもしれません.それでもここでのWolfram言語全体の設定によって,望むものまたはするべきことを見付け出すための「AIとのコラボレーション」がしやすくなっています.
ここまで基本的に自然言語から始めてWolfram言語コードを積み重ねてきました.しかし疑似コードまたは低レベルプログラミング言語のコードから始めることもできます.ChatGPTはそのようなものからよく書かれたWolfram言語コードを生成することにおいて優れた仕事をします.コードは常に正確という訳ではありませんが,(Wolframプラグイン等で)そのコードを可能性として1行ずつ(Wolfram言語の記号的性質による)実行してどうなるかを見ることは常に可能です.つまり,Wolfram言語の高レベル計算言語としての特徴によって,コードは十分に明確で(少なくとも局所的に)シンプルである傾向があるため,人間はコードの動作が簡単に理解でき,AIを使ってそれについてのやり取りが繰り返せるのです.
やろうとしていることが十分シンプルな場合は,それを指定するのが現実的でしょう.その場合は数段階に分けて,何があるかを見て実際にそれを実行することができる方法として「だけ」Wolfram言語を使います.しかしWolfram言語が本当に真価を発揮するのは物事がより複雑になったときです.私たちが求めているものを,基本的に人間が理解可能でありながら正確な唯一の実行可能な表現として提供するのです.
このことは私が「An Elementary Introduction to the Wolfram Language」という書籍を執筆していたとき,特に明らかになってきました.本を書き始めたあたりでは,求められることを英語で説明する練習問題が簡単に作成できました.ところが内容が複雑になるにつれ,問題作成も難しくなっていきました.私はWolfram言語を「使い慣れて」いるので,希望することをWolfram言語で表現する方法がすぐに分かります.しかしそれを英語だけで説明するのはどんどんややこしく複雑になっていき法律用語のようになりました.
だからWolfram言語を使って何かを指定するのです.ChatGPTができる素晴らしい機能の一つにWolfram言語コードを読みやすく書き換えてくれるというものがあります.まだ常に正しい訳ではありませんが,人間が書いたWolfram言語コードとは異なる妥協をしているのはおもしろいと思います.例えば人間は物事の名前を考えるのは難しいと思う傾向があり,ネストされた関数列を使うことによって名前を避けたほうがよい(少なくとも混乱が少ない)ものとします.しかし言語と意味のコマンドを持つChatGPTは,比較的簡単に適切な名前を考えます.たとえその名前が予想もしなかったものであっても,その名前を使い,「アクションを広げる」ことでそれまでよりも簡単にWolfram言語コードが簡単になることがあります.そしてそれは自然言語と同じぐらい簡単に理解できるけれど正確な意味を持ち計算結果を生成するために実際に実行できる定式化された自然言語のように読めるのです.
苦手分野の克服
苦手分野の克服
「どんな計算が行いたいかが分かっている」場合,短い自然言語で記述することができます.そうするとWolfram|Alphaはその計算を直接行うよう設定され,できるだけ簡単に「見て分かる」ように結果を提示します.しかし答を説明文や小論文で欲しい場合はどうでしょう.Wolfram|Alphaはそのように設定されていませんがChatGPTはできます.
次はWolfram|Alphaの結果です.
ChatGPTで上と同じWolfram|Alphaの結果を尋ね,「それをもとに小論文を書け」と指示します.
Wolfram|Alphaにとっての別の「苦手分野」は数学の文章題です.「明確に提示された」数学問題ならWolfram|Alphaはうまく解けるでしょう.しかし「不明瞭な」文章題の場合はどうでしょうか.ChatGPTはそのような問題を「解きほぐす」のが得意で,「明確な数学問題」に変換してくれます.それならWolframプラグインで解くことができます.以下がその例です.
次はもう少し複雑な例で,七面鳥の数が負にはならないということを認識する「常識」が含まれています.
数学の文章題以外で,ChatGPT + Wolframによって解決された別の「苦手分野」として,物理学者が「フェルミ推定」と呼ぶものがあります.これは世の中の数量的知識に基づいて行われる,一見予想もつかないような数量に関しての推定です.
ChatGPT + Wolframに関わる
ChatGPT + Wolframに関わる
ChatGPT + Wolframは非常に新しいもので,本当に新しい種類のテクノロジーです.新しいテクノロジーが開発されるたびに起こるように,このテクノロジーもとてつもなく新しい可能性を開いています.その中にはすでに出始めたものもありますが,これから数週間,数ヶ月,数年で現れるものもあるでしょう.
急速な技術的,そして概念的成長を迎えるエキサイティングな時代を約束するものに,どのように関わればよいのでしょうか.まずはChatGPT + Wolframを使ってみることです.ChatGPTとWolframはそれぞれ膨大なシステムであり,それらの組合せは理解するのに何年もかかります.しかし最初のステップは,何が可能であるのかを知るだけです.
例を見付けてください.そしてそれを共有してください.うまくいく使い方を見付けてください.そして何より最高の価値をもたらすワークフローを見付けてください.このようなワークフローは非常に複雑なものかもしれません.しかしとてもシンプルでもあり得ます.どのようなことができるかが分かったら,すぐに納得できます.
ワークフローはどのように実装するのが一番よいでしょうか.Wolframはそのために最適なワークフローを考案しようとしています.Wolfram言語内で,プログラムだけまたノートブックインターフェースのコンテキストの両方でChatGPTのようなものを呼び出す柔軟な方法を設定しようとしています.
しかしChatGPT側からはどうでしょうか.Wolfram言語のアーキテクチャは非常にオープンなので,ユーザはほぼ何でも必要なものを加えたり変更したりすることができます.これをChatGPTからどのように使うか.一つの方法として,ChatGPTにいくつか「最初の」Wolfram言語コードを(ドキュメントとともに)加えるよう指示し,上のピジンのようなものを使って,関数やその最初のコードで定義した他のものについてChatGPTに話すことができます.
私たちはChatGPTで使えるWolfram言語コードの処理と共有のための,さらに合理化されたツールを構築する予定です.しかしすでに使えるアプローチとして,Wolfram Function Repositoryで公開したい関数を登録し,公開されたらChatGPTとの会話の中でこれらの関数に言及するというものがあります.
ChatGPT内部ではどうでしょうか.Wolframプラグインと最適に交流するためにはどのようなプロンプト作成が必要なのでしょう.これについてはまだ分かっていません.AI教育やAI心理学での練習問題として調べる必要があります.通常のアプローチとしては,ChatGPTとの初期のセッションで「予備的プロンプト」を与えておき,後になってもそれに「まだ注意を払っている」ことを期待するというものがあります.(ChatGPTの「集中力の持続期間」は限られているので,繰り返す必要があるかもしれません.)
私たちは,ChatGPTにWolframプラグインの基本的な使い方を指示する一般的なプロンプトを与えました.そして私たちがもっと多くのことを知りChatGPT LLMが更新されるにつれて,このプロンプトが急速に進化することを期待しています.しかし皆さんは「Wolframを使うときは必ず写真を入れろ」,「SI単位を使え」,「可能な限り複素数は避けろ」等,自分にとっての予備的プロンプトを加えることができます.
また,ChatGPT内で基本的に「関数を定義する」予備的プロンプトを設定してみることもできます.例えば,「数字からなる入力を与えたら,Wolframを使ってその数の辺を持つ多角形を描画しろ」と指示できます.もっと直接的に「数字からなる入力を与えたら,その入力に次のWolfram関数を適用して...」として明示的なWolfram言語コードを与えることもできます.
これらは非常に初期のものであり,ChatGPT + Wolframを「プログラミング」するために発見される他の強力なメカニズムが間違いなくあるでしょう.今後しばらくは,関わっている人たちが手軽に達成できる多くの目標がある,大きな成長が期待できる刺激的なときだと感じています.
背景と展望
背景と展望
1週間前ですらChatGPT + Wolframがどのようなものになるか,またどれほどうまく動作するか不明瞭でした.しかし今これほど急速に動いているものは何十年にも渡るこれまでの開発の上に構築されています.ある意味,ChatGPT + Wolframの到来は,重なり合わない,互換性がないと長い間見られてきた,AIに対して歴史的に取られている2つの主たるアプローチの結合です.
ChatGPTは基本的に非常に大きなニューラルネットワークであり,Web等で見たテキストの「統計的」パターンに従うよう訓練されます.ニューラルネットワークの概念は,1940年代に端を発しますが,ChatGPTで使われるのに驚くほどよく似た形式でした.1950年代に人気が出た後,関心は薄れていきました.1980年代初期にその人気が復活しました(私自身そのとき初めてニューラルネットを見ました).2012年になって初めて,ニューラルネットで何ができるだろうということについての関心が高まり始めました.そしてその10年後の現在,かかわった人にとってすら大きな驚きとなった開発の成功によりChatGPTがあるのです.
AIの「記号的」という伝統はニューラルネットの「統計的」という伝統からは離れていました.ある意味,その伝統は数学(および数理論理学)に対して発展した形式化の過程の延長として,特に20世紀初頭に生まれました.しかし,大切なのは,それは計算の抽象的な概念だけではなく,1950年代に出現し始めた実際のデジタルコンピュータのようなものにもうまく協調したということです.
「AI」と考えられるものの成功は,せいぜいむらがあるものと長い間考えられてきました.しかしその間ずっと,計算の一般概念は驚異的で多大な成功を収めていました.では「計算」はどのように人々のものの考え方に関連したのでしょうか.私にとって決定的な開発となったのは,記号式の変換規則は「人間」レベルとみなされる計算を表すよい方法かもしれない,という1980年代初頭の私の研究(数学論理から以前の形式主義の上に構築)でした.
当時私が注目していたのは数学計算と技術計算でしたが,すぐに同様の考え方が「一般的なAI」にも当てはまらないだろうかと考え始めました.私はニューラルネットのようなものが果たす役割があるのではないかと思いましたが,そのときは何が必要であるかについて少し考えただけで達成する方法は考えませんでした.その間,記号式に対する変換規則の中核的な考えが現在Wolfram言語の基礎となり,今日使っているフルスケールの計算言語を数十年に渡って開発することが可能になりました.
1960年代から,AI研究者の中には「自然言語を理解し」,「知識を表現し」,それから質問に答えることのできるシステムを開発しようとする人がいました.そこで開発されたものの中には,大掛かりではないけれど実践的なアプリケーションになったものもあります.しかし概して成功とは言えませんでした.その間,私が1990年代に行った基本科学の哲学的結論に達した研究の結果として,私は自然言語で問われた事実に基づく質問や計算問題に広く答えることができる汎用の「計算知識エンジン」を構築してみようと2005年ごろ決心しました.そのようなシステムが構築できるかどうかは分かりませんでしたが,根底の計算言語や研究を重ねることでそれが構築できたのです.そして2009年にWolfram|Alphaをリリースすることができました.
ある意味,Wolfram|Alphaが可能だったのは,Wolfram|Alphaが世界の物事を表し,それについて計算を行うための明確で形式的な方法を内部に持っていたからです.私たちにとって「自然言語を理解すること」は抽象的なことではありません.それは自然言語を構造化された計算言語に変換する具体的なプロセスなのです.
世界について知り,世界について計算するのに必要なすべてのデータ,メソッド,モデル,アルゴリズムを組み合せることはまた別のことです.我々はこれをほぼ自動化しましたが,最終的に「正確にする」ためには,実際の専門家が関与する必要があることも分かりました.Wolfram|Alphaの自然言語理解システムには「統計的AI」として考えらるものはあまりありませんが,Wolfram|AlphaとWolfram言語のほとんどは少なくとも従来の記号的AIの名残りである難しい記号的方法で動作します.(これはWolfram言語の個々の関数が機械学習や統計手法を使っていないと言っているのではありません.近年では,機械学習がもっと使われるようになっており,Wolfram言語にも機械学習を行うためのフレームワークが含まれています.)
ここ以外でも言っていますが,分かってきたことは,ChatGPTから学んだように自然言語およびその根底にある「思考」を含む,私たち人間が「素早く行う」タスクに「統計的AI」(特にニューラルネット)が適しているということだと思います.しかし,より大きい「概念的」または計算的な「タワー」を構築する際には,記号的,ある意味「 より厳密に計算的」なアプローチが必要です.これは数学,精密科学,そしてすべての「computational X」の分野で見られます.
今,ChatGPT + Wolframは初の真に大規模な統計的+記号的「AI」システムと考えることができます.Wolfram|Alpha(Siri知能アシスタントのようなもののオリジナルの中核部分)には,「理解」が実際の計算表現と計算に直接繋がった,幅広い自然言語理解が初めて備わりました.その13年後の現在,ほぼすべてのWeb等から訓練されると,純粋なニューラルネットテクノロジーは「人間のような」「意味のある言語」の「統計的な」生成を驚くほどうまく行える,ということをChatGPTで見てきました.そしてChatGPT + Wolframでは,Wolfram|Alphaの「計算的に支えられた」自然言語理解を介して,ChatGPTの純粋な「統計的ニューラルネット」からWolfram言語の計算言語および計算知識までのすべてを利用することが可能なのです.
最初にWolfram|Alphaを構築していたころ,有用な結果を得るためには,ユーザとの会話を行うしかないのかもしれないと思っていました.しかし,豊かな「見てすぐ分かる」結果を即座に生成するなら,少なくともユーザが求めそうな種類の情報や計算では,シンプルな「仮定」または「パラメータ」のインタラクションしか必要ないということを発見しました.(それでもWolfram|Alpha Notebook Editionには自然言語でどのように複数ステップの計算が行えるかというパワフルな例が含まれています.)
私たちは自然言語を使った典型的なWolfram|AlphaのクエリのWolfram言語コードだけでなく,「プログラム全体」を生成する実験を2010年にはすでに始めていました.しかしそのときはまだ最新のLLMテクノロジーがなかったため,それほどの成果は出ませんでした.それでもそのときに分かったことは,Wolfram言語の記号構造のコンテキストでは,コードになるものの小さなかけらを自然言語で生成させることですら非常に有用であるということでした.例えば,私は自然言語から記号的な実体や数量を構築するため等に,毎日Wolframノートブックで何度も「+=」メカニズムを使います.これに対する最新の「LLM対応」バージョンがどのようなものかはまだ分かりませんが,これまでお話ししてきたような,そしてChatGPT + Wolframで初めて実際に機能している,人間とAIの豊かな「コラボレーション」が関与しているでしょう.
今見ていることは歴史的瞬間だと思います.50年以上にわたり,「AI」と呼ぶものへの統計的なアプローチと記号的なアプローチは全く別々に進化してきました.しかし今,ChatGPT + Wolframによってそれらは統合されようとしています.これは始まったばかりですが,この組合せにはとてつもない力が期待できると思っています.そしてある意味,ChatGPTの到来,そして今ChatGPT + WolframでWolfram|AlphaおよびWolfram言語と組み合されたことによって可能となった「AIのような計算」の新しいパラダイムと言えるでしょう.
© 2023 Wolfram. All rights reserved.