ChatGPTの頭の中  :スティーヴン・ウルフラム

この本は、いまから2年前の2023年に刊行されたもので、ChatGPTがどのよう
に動くのか、その原理を簡単に解説したものだ。
ChatGPTと言えば、2022年に公開されると世界に衝撃が走った。
まるで人間を相手にしているように、何か質問すると、たちまちすらすらと答えが返って
くるのだから、誰しもが本当に驚いてしまう。
これは、いままでのコンピューターとまったく違いものの出現だ。まさに「人工知能」と
言えるものだと思えた。
それでは、そのChatGPTがいままでのコンピューターと決定的に違っているのはど
こか。
それは、ChatGPTには「ニューラルネット」が用いられていることであるようだ。
ニューラルネットは、人間の脳神経網を人工的に模倣したものとのことで、1940年代
に考案されたものらしいのだが、2000年代に入るまでは、まだコンピューターのハー
ド面の技術の未熟さから、ほとんど成果らしいものは出なかったようだ。

余談だが、1980年代半ばのまだ8ビットのパソコンが主流だったころだったと思うが、
このニューラルネットをシミュレートするプログラムがパソコン雑誌に掲載されて、興味を
持って自分のパソコンにそのプログラムを手入力で打ち込んで、動かしてみた記憶がある。
しかし、パソコンに処理能力の低さもあって、まったく使いものにならなかったのを今で
も覚えている。

しかし、近年のGPUなどのハード面の技術の格段の進歩によって、ニューラルネットが
見直されるようになったようだ。
私はこの本を読むまでは、ChatGPTは巨大なデータベースを持っていて、そのデー
タベースのデータを検索しながら文書を生成しているのかと思っていた。
しかし、この本を読むと、そうではなく、ニューラルネットが学習した内容をもとに文章
を生成しているとのことのようだ。
「ChatGPTの内部」にあるのは、ウェブページや書籍などの文章がそのまま蓄積さ
れているわけではなく、実際にChatGPTの内部にあるのは精度10桁未満の無数の
数字であり、その数字が文章すべてから集約した構造をある種の分散型でエンコードした
ものなのだそうだ。

私がこの本を読んでいちばん驚いたのは、このChatGPTが、このような人間のよう
な文章を生成できるとは、開発者たちも思っていなかったということである。
やってみたら、「思いかけずうまく機能した」というのが実態のようだ。
さらに驚くことに、少なくとも今のところ、このニューラルネット全体が何をしているの
か、説明できないないとのことなのだ。
人間が作った人工的なものなのに、「内部で何をしているのか説明できない」とは、どう
いうことなのか。これではニューラルネットは「神の仕業」的ということか。
ChatGPTはウェブ上の文章やテキストデータ化された書籍などをもとに学習してい
るといわれている。
心配なのではその学習データだ。日本語での学習データはどの程度なのだろうか。
ChatGPTに問うと、日本語の学習データは全学習データのうちほんの数パーセント
程度だという。学習データのほとんどは英語の学習データだという。
今後、ChatGPTはどんどん利用されていくと思うが、この日本語の学習データの少
なさは、日本にとっては決定的なハンディになってしまう。
日本は、書籍などのテキストデータ化を国家レベルで推進しないと、英語圏の国々からま
すます立ち遅れてしまうことになるのではないのかと心配になってしまった。

過去に読んだ関連する本:
AI救国論
AI兵器と未来社会
AIが人間を殺す日
人類が絶滅する6のシナリオ

はじめに
・ChatGPTのベースにあるのは、「ニューラルネット」という概念だ。
 もともとは、人間の脳の働きを理想化するために、1940年代に考案されたものであ
 る。
 私がニューラルネットを初めてプログラミングしたのは1983年のことだったが、
 めぼしい成果はなにもなかった。
 それから40年がたち、コンピューターは比較に意味がないほど高速になり今やウェブ
 上には億単位のページが存在する。
・そして誰もが驚いたように、私が1983年に作ったものよりは何十億倍もの巨大にな
 ったニューラルネットは、人間だけの特性と考えられてきたこと、すなわち意味のある
 人間の言語を生み出すことをじつげんしたのである。
  
<ChatGPTは何をしているのか、なぜ動くのか>

実は、1つずつ単語をたしているだけ
・何よりもまず押さえておきた点がある。
 ChatGPTは基本的に、それまでに出力された内容の「順当な続き」を出力しよう
 と試みるということだ。
 ここでいう「順当」とは、「億単位のウェブページなどに書かれている内容を見たうえ
 で人間が書きそうだと予測される」という意味である。
・たとえば、「AIの一番の長所としてあげられるのは」という書きかけの文があるとす
 る。人間が書いた億単位の文章を(ウェブページや電子書籍などから)スキャンして、
 この一文が出現するあらゆるケースを見つけ、どの単語がどのくらいの確率で次に続く
 のかを調べる。 
・ChatGPTはこの種の処理が得意なのだが、かといって文字を追って文章を見つけ
 ているわけではなく、ある意味で「意味が一致する」ものを探している。
 といっても結局のところは、「確率」でランク付けされたリストに従って、あとに続く
 単語を出力しているにすぎない。
・ChatGPTで驚異的なのは、たとえば小論文を書くときなどでも、基本的には、
 「ここまでの文を受けて、次の続く単語は何か」という質問を繰り返して、そのたびに
 1つずつ単語を追加しているにすぎないということだ。
・厳密の言うと、実際には「トークン」と呼ばれるものを追加している。
 トークンは単語の一部の場合もあって、ChatGPTがときどき「存在しない言葉を
 造語する」のは、これが理由である。
・実際問題として、小論文(でも何でも)を書きながら次に追加していく単語をどうやっ
 て選んでいるのか。
 普通なら「ランクの高い」単語、つまり「確率」が最も高い単語が選ばれるはずだと考
 えるだろう。
 だが、ここで不思議な魔術が登場する。
 理由ははっきりしていないのだが、おじれは科学的に説明できる日が来るのかもしれな
 い。
・常に最高ランクの単語を選んでいると、どうにも「単調な」小論文になるのが常で、
 「クリエイティビティを発揮する」ところがまったくなくなってしまうのだ(ときには、
 一語一句を変えずに繰り返すことさえある)。
 逆に、ときどきはランクの低い単語をランダムにえらんでやると、「もっと興味深い」
 小論文ができあがる。
・ここでランダムさが介在してきたことでもわかるように、同じプロンプト(画像・文章
 などを生成するAIに対する指示や命令のこと)を何度か繰り返すと、そのたびに違っ
 た小論文が生成される可能性が高い。
・引き続き魔術めいた言葉を使うが、ランクの低い単語を使う頻度を決める「温度」とい
 うパラメータが存在し、小論文を生成する場合には、この「温度」を0.8に設定する
 と最もうまく機能することがわかっている(ここではどんな「理論」も使われていない
 ことを、あらためて強調しておいたほうがいいだろう。現実にうまく機能することが、
 ただわかっているだけなのだ。「温度」という概念を持ち出しているのも、統計物理学
 でおなじみの指数分布をたまたま使っているだけで、実際に「物理学的」な関係がわる
 わけではない。いまわかっている限りでは)。

確率はどこから求めるのか
・ここで問題が生じる。
 これまで書かれたありとあらゆる英文(日本文)を合わせても、それほどの確率を成り
 立たせ宇ほどの量には、はるかに及ばないということだ。
 ウェブをクロールすれば、数千億からの単語が存在するだろう。
 電子化された書籍まで含めると、さらに数千億語が増えるかもしれない。
 だが、一般的に使われる4万の単語を対象にすると、2−グラム(2個の単語)の組み
 合わせでさえ16億通りになり、3−グラム(3個の単語)の組み合わせになると60
 兆通りに達してしまう。
 ここまで考えただけでも、あらゆる組み合わせの確率を、今の私たちが利用できる文章
 から推定することは、とうてい不可能なのだ。
・では、どうすればいいのか、現存するコーパスに含まれるテキストでは単語の組み合わ
 せを実際にははっきりと確認できないとしても、その組み合わせが出現する確率を推定
 してくれるモデルを作ればいいのではないか、そういう考え方が出てくる。
 そして、ChatGPTの中心になっているのは、そのような確率の推定をうまく処理
 するように設計されたモデル、いわゆる「大規模言語モデル(LLM)」なのである。

モデルとは何か
・「モデルのないモデル」は存在しないということを承知しておくといいだろう。
 どんなモデルでも、その基礎には何らかの構造があり、データに合わせてさまざまなオ
 プション(設定できるパラメーター)が存在する。
 ChatGPTの場合は、こうしたパラメータが1750億個ある。
・だが、驚くべきなのは、「たった」それくらいの数のパラメータで成り立っている
 ChatGPTの基礎構造だ。
 その数だけでも、つぎの語が続く確率を「かなりうまく」計算し、小論文といえる妥当
 な長さの文章を生成できるモデルを作れるのである。

ニューラルネット
・画像認識のような処理をこなす典型的なモデルは、実際にどう動くのか。
 今のところもっとも広く使われ、かつ成功もしているのが、ニューラルネットを使うア
 プローチだ。
 1940年代には、現在の使われ方に驚くほど似た形が考案されている。
 人間の脳の働きを単純に理想化したものと考えるとわかりやすい。
・人間の脳にはおよそ1000億個のニューロン(神経細胞)があり、それぞれが1秒に
 およそ1000回の電気信号を発生させることができる。
 ニューロンは複雑な網状に結合されており、ニューロンひとつひとつには枝のように広
 がる樹状の突起があって、他の何千というニューロンとの間で電気信号を受け渡してい
 る。 
 そして、おおまかに言うと、あるニューロンがある瞬間に伝信号を発生させるかどうか
 は、他のニューロンからどんな信号に受け取ったかによって決まる。
 そこには、「重み」の異なるさまざまな結合が介在している。
・このニューラルネットに関して、特に「理論的に導き出された」といえる点はない。
 実際に機能したものだ(言うまでもなく、生粒としての進化の過程で人間の脳が生まれ
 てきた経緯とそれほど変わらない)。
・しかし、しかし少なくとも今のところ、ニューラルネット全体がなにをしているのか
 「説明的に語る」手段を渡したタイは持ち合わせていないのだ。
 これはおそらく、ニューラルネットが事実として計算的に還元不能だからであり、
 各段階を確実に追跡していく以外に、そのふるまいを知る方法はないのである。
 あるいは、人類がまだ「その科学的な知識体系を発見」しておらず、その振る舞いを要
 約できる「自然法則」を捉えていないだけなのかもしれない。  
・ChatGPTによる言語の生成について説明するときにも、同じような問題にぶつか
 ることになる。
 そのときもやはり、「何をしているのかを要約」する手段があるかどうかは定かではな
 い。
 それでも、言語(とそれを使った経験)の多彩さと細かさを頼りにすれば、画像の場合
 より先に進めるかも知れないのである。

機械学習とニューラルネットの訓練
・ニューラルネットが(おそらく私たちの脳内でも)これほど実用的なのは、原則的にど
 んな処理でもこなせるうえ、段階的に「サンプルから学習」してその処理をこなせるよ
 うになるからだ。 
・ネコとイヌを識別するニューラルネットを作るときには、たとえばヒゲを見つけるとい
 ったブログラムを書くわけではない。
 どれがネコでどれがイヌか、というサンプルを大量に見せて、そこから識別のしかたを
 ニューラルネットに「機械学習」させるだけだ。
・ここで重要なのが、学習中のニューラルネットは見せられた個々のサンプルをもとにし
 て「汎化」をおこなっているということだ。
 ニューラルネットはネコのサンプル加増を見て、ただ個々のピクセルパターンを認識し
 ているわけではない。 
 なんらかの「汎用的なネコらしさ」だと私たちが考えるようなことにもとづいて、とも
 かくも画像を識別しているのである。

ニューラルネットの訓練の実践と知見
・この10年の間には特に、ニューラルネットの訓練という技に数々の発展があった。
 そう、「技」と呼んでもいいものだ。
 どんな処理が行われているかという「科学的な説明」は、特に後から振り返ったときに、
 せいぜい一瞬垣間見えることがあるにすぎない。
 大半は試行錯誤の末に発見されてきたものであり、アイデアや手法を追加しながら、
 ニューラルネットの構築方法に関する重要な知見を次第に蓄積していったのだ。
・重要な部分がいくつかある。
 まず、特定の処理にどんなアーキテクチャのニューラルネットを使うかということが問
 題になる。
 次に、ニューラルネットの訓練に使うデータをどう確保するかという点は決定的だ。
 そして、次第にニューラルネットはゼロから訓練することが少なくなっていく。
 新しいニューラルネットでは、あらかじめ訓練の済んだ既存のニューラルネットを直接
 取り込むこともあるし、既存のニューラルネットを利用して訓練サンプルを増やすこと
 もある。
・処理の種類が違えば、ニューラルネットに必要なアーキテクチャも違う考えるところだ
 ろう。
 だが、一見してまったく違う処理に対して同じアーキテクチャが通用しそうな場合も多
 いことが、すでに判明している。
・これはどちらかというと、私たちがニューラルネットに実行させようとする処理が「人
 間のような」しょりになりがちだという事実を反映していると考えた方がいい。
 ニューラルネットは、ごく普遍的な「人間のような処理」を取り込むことができるので
 ある。
・ニューラルネットの初期の時代には、「ニューラルネットに実行させる処理はできるだ
 け少ないほうがいい」と考える傾向があった。
 たとえば、会話から文字を書き起こす場合には、まず会話の音声を解析し、それを音素
 に分解するといったことが必要だと考えられていた。
・だが、そうではないことが判明する。
 「人間のような処理」に限って考えるなら、ニューラルネットは「両極端の問題」につ
 いてだけ訓練し、素の中間で必要な特徴やエンコーディングなどは、ニューラルネット
 自身が「発見」するのに任せればいいことが明らかになったのだ。
・また、「アルゴリズム上の特定の概念を明示的に実装」させるには、ニューラルネット
 に個々の複雑な構成要素を導入するほうがよいという考え方もあった。
 だが、これもやはり事実とは異なることが、おおむねわかってきている。
 どちらかというと、ごく団純な構成要素のみを扱い、ニューラルネットに「自分で処理」
 させて(ただし、その過程を私たちは理解できない)、そのアルゴリズム上の概念と等
 価の結果を、(高い確率で)達成させるほうがいいのである。
 
・ニューラルネットのアーキテクチャについては決められたとしよう。
 次に問題となるのは、ネットワークの訓練に使うデータの収集だ。
 実際、ニューラルネットに関わる、ひいては機械学習の全般に関わる現実的な課題の大
 半は、必要な訓練データの確保あるいは準備に集中している。
 多くの場合(「教師あり学習」(学習データに正解を与える学習方法)、必要なのは入
 力と、そこから期待される出力との確実なサンプルである。  
・特定の処理に向けてニューラルネットを訓練するには、どのくらいのデータを見せる必
 要があるのか。この点もやはり、原理から見積もるのは難しい。
 別のネットワークですでに学習が済んでいる重要な機能のリストなどを、いわゆる「転
 移学習」によって「転用」すると、学習の要件が大幅に低くなるのは確かだ。
 だが一般的に言って、ニューラルネットを十分訓練するには、「大量のサンプルを見せ
 る」必要がある。
・そして、サンプルが驚くほど反復的になるというのは、少なくとも一部の処理について
 は、ニューラルネットの重要な知見になっている。
 実際、手持ちのサンプルをすべて、何度も何度も繰り返しニューラルネットに見せるの
 は標準的な手法だ。
・その「訓練の一巡分」(「エポック」という)ごとに、ニューラルネットは少しずつ違
 った状態となるので、なんらかの方法で特定のサンプルのことを「思い出させ」てやる
 と、「そのサンプルを記憶させる」うえで有効だ(この点も。人間が暗記するときに反
 復が有効であるのと似ている)
・もちろん、同じサンプルを何度も繰り返すだけでは不十分なことも多い。
 ニューラルネットには、サンプルのバリエーションも見せる必要があるのだ。
 そして、「データ拡張」によるこうしたバリエーションは、精巧でなくても有効である
 ことが経験的にわかっている。
 最低限の画像処理で画像をわずかに変えるだけで、ニューラルネットの訓練用としては
 「新品同様」になる。
 同様に、たとえば自動運転車を訓練するときに実際の動画が足りなくなった場合には、
 テレビゲームのようにモデル化された環境でシミュレーションを実行してデータを取れ
 ば、現実的なディティールが欠けていても、問題なく訓練を続行できる。
・ChatGPTなどの場合は、ありがたいことに「教師なし学習」(学習データに正解
 を与えない学習方法)に対応しているので、訓練に使うサンプルを確保するのはずっと
 容易だ。 
 ここで思い出してほしいのだが、ChatGPTの基本的な処理は、与えられた文章の
 一部に続く内容を見つけることだった。
 したがって、「訓練サンプル」を確保するには、文相の一部を用意したうえで、続きの
 部分を隠したデータを「訓練の入力」として、隠していない元の文章を「出力」として
 使うだけで済む。
 要するに、たとえば画像の内容を学習するときと違って、「明示的なタグ付き」が必要
 ないのである。
 ChatGPTは、サンプルとしてどんな文章を与えても、直接そこから学習できるの
 だ。
・一般的にニューラルネットの訓練は難しく、計算には多大な労力を伴うと結論できる。
 また現実的な問題として、その労力のほとんどは配列になった数値の演算に費やされる
 ため、それにはGPUが適している。
 だからこそ、ニューラルネットの訓練は利用可能なGPUの規模に左右されるのが常な
 のである。
・今後、ニューラルネットの訓練に関して、ひいてはニューラルネットの機能の汎用化に
 関して、抜本テクに今より優れた手法は登場するだろうか。
 それはほぼ確実だろう、と私は考えている。
 ニューラルネットの基本的な概念は、大量の単純な(本質的には同一の)構成要素から、
 柔軟性の高い「計算機構」を作ること、そしてそれをサンプルから学習するように段階
 的に修正できる機構にすることだ。
・現在のニューラルネットでは、基本的に微積分の概念を利用し、それを実数に適用して、
 そうした段階的な修正を実現している。
 だが、高精度の数値を使う必要はないことが次第に明らかになってきた。
 現在の手法であれば、8ビットがそれ以下で十分だろうというのである。
・「セルオートマトン」のように、多数のビットひとつひとつを並行して処理していくの
 を基本とする計算システムの場合、こうした段階的な修正をどう実行するかはあだ不明
 のままだ。 
 だが、それが不可能だと考える理由はまったくない。
 それどころか、「2012年に起きたディープラーニングのブレークスルー」と同じよ
 うに、段階的な修正は単純なケースよりむしろ複雑なケースのほうが実質的に簡単かも
 しれない。
・ニューラルネットは、おそらく人間の脳もある程度までは、原則として固定されたニュ
 ーロン網を使うように設計されている。
 修正されていくのは、ニューロン同士の結合の強度(つまり「重み」)である(若いう
 ちの脳では、膨大な数のまったく新しい結合が生まれている)。
 しかしこれは、生物学的に都合のよい設計ではあるものの、私たちが必要としている機
 能を実現する最善の手法に近いといえるかどうかはまったくわかっていない。
 段階的なネットワークの書き換えに等しい処理のほうが、最終的には優れているという
 もともありえるのである。
・しかし、従来のニューラルネットの枠組みにおいてさえ、今は重大な限界がある。
 現在行われているようなニューラルネットの訓練は、あくまでも逐次的であり、1回分
 のサンプルの降嫁を逆伝播して重みを更新している。
 そのため、実は現在のコンピューターハードウェアでは、GPUまで考えたとしても、
 ニューラルネットの大部分は訓練中はほぼ終始「アイドリング状態」だ。
 一度に1カ所ずつしか更新されないからである。
 ある意味でその原因は、現在のコンピューターがCPU(あるいはGPU)と別にメモ
 リーを使っていることにある。 
 だが、脳のはたらき方はそれとは異なると考えられている。
 「記憶素子」、つまりニューロンのひとつひとつが、潜在的な計算素子としても働いて
 いるのだ。
 したがって、今後のコンピューターハードウェアをそのような形にできたら、ニューラ
 ルネットは今よりはるかに効率的に訓練できるようになるかもしれない。
 
「ネットワークが十分に大きければ何でもできる」のか
・ChatGPTのようなシステムは、その機能の印象が鮮烈すぎるらしく、「このまま
 の調子」でどんどん大規模なニューラルネットを訓練し続けていけば、やがては「何で
 もできる」ようになると人は考えがちだ。
 そのときの念頭にあるのが、人間の思考に直接すぐに利用できるものだとしたら、その
 よそうもあながち外れてはいないかもしれない。
 だが、過去何百年という科学の歴史から得られた教訓として、形式的な手順で解き明か
 すことができても、人間の思考に直接すぐに利用できないものも確かに存在するのであ
 る。
・非自明の数学がその最たる一例だが、実際には計算の全般に当てはまる。
 最後に問題となるのが、計算的還元不能性という現象だ。
 実に多くの手順がかかりそうに思える計算でも、実際にはもっと直接的な計算に「還元」
 できる場合がある。
 だが、計算的還元不能性が見つかるというとは、そうした還元が不可能な場合もあると
 いうことだ。
 そうなると、どんな結果になるかを解き明かすには、計算の各段階をひとつずつ追いか
 けなければならない。
・私たちがふだん脳を使っておこなうようなことは、計算的還元不能性を避けるように意
 図して選択されているといわれている。
 人間の脳で数学を処理するのは、特に負荷が大きいからである。
 非自明のプログラムを処理するステップをひとりの脳で「最後まで考えぬく」ことは、
 実際問題としてまず不可能だ。
・言うまでもなく、そのためにこそコンピューターが存在している。
 コンピューターを使えば、私たちは計算的還元が不可能な長い処理でもこなすことがで
 きる。 
 ここで肝要なのは、その処理に近道はまず存在しないということだ。
・たしかに、特定の計算システムでおんなことが起こるか、具体的な例を大量に記憶する
 ことはできる。 
 多少の汎化をおこなえるくらいの一定の(計算的に還元可能な)パターンを見出すこと
 も、おそらくできるだろう。
 だが、計算的還元不能性ある以上、予期せぬことが起こらないとはいっさい保証できな
 い。
 現に計算を実行してみて初めて、それぞれの場合に実際に何が起こるかを確定できるの
 である。
・最後には、学習可能性と計算的還元不能性との間の根本的な対立が残る。
 学習とは、要するに規則性を利用してデータを圧縮することだ。
 ところが、計算的還元不能性があるとなると、規則性の成立にどうしても制限がかかる。
・現実的な問題として、小さい計算装置、たとえばセルオートマトンやチューリングマシ
 ン
をニューラルネットのように訓練可能なシステムに組み込むことを想像すればよいだ
 ろう。 
 そうすれば、たしかにニューラルネットにとって的確な「ツール」として機能する。
・しかし、計算的還元性不能性を前提にすると、そうした装置の「中に入って」それを訓
 練できるとは考えにくい。 
・言い方を換えるなら、能力と訓練可能性との間には根源的なトレードオフがあるという
 ことだ。
 システムの計算能力を「真に活用」したいと考えれば考えるほど、計算的還元不能性は
 大きくなっていき、訓練可能性は小さくなっていく。
 逆に基本的に訓練可能性が大きくなるほど、複雑な計算はできなくなっていくのである。
 (現在のChatGPTを見ると、実際に状況はさらに極端だ。出力の各トークンを生
 成ときに使われるニューラルネットは、純粋な「フィードフォワード」ネットワークで
 あってループを持たず、したがって非自明の「制御フロー」を用いる計算の能力は持ち
 合わせていないからである)
・還元不能な計算を実行できることが本当に重要なのか、という疑問を抱くのはもっとも
 だ。現に、人類史上のほとんどで、それが特に重要なことはなかった。
 しかし、私たちが住む現代技術社会の根底を支えているエンジニアリングは、数学的な
 計算の応用を最低条件としてきたし、計算処理全般へ依存はますます強くなってきた。
 しかも、自然界を見渡せば、そこは還元不能な計算に満ちている。
 そうして還元不能な計算を、自分たちの技術的な目的のために再現し利用する方法を、
 私たちはし少しずつ理解しているところなのである。
・自然界に存在する規則性であれば、私たちが「人間の思考によって自力で」苦もなく発
 見できそうなものなら、たしかにニューラルネットにも発見できるだろう。
 だが、数学あるいは計算処理科学の範疇にあるものを解き明かしたいとなると、ニュー
 ラルネットでそれを実現することはできない。
 実現するには、「通常」の計算処理システムをうまく「ツールとして利用」しなければ
 ならないからだ。 
・しかし、以上のすべてのことには、混乱を招きそうな点がある。
 これまで、コンピューターにとって「基本的に難度が高い」だろうと想定される処理が
 行くともあった。小論文の執筆もそのひとつだ。
 それがChatGPTなどによって実現されているところを見ると、コンピューターが
 いたって強力になったに違いないと、とっさに考えそうなる。
 とりわけ、以前にも基本まではできていた処理(セルオートマトンのような計算処理シ
 ステムのふるまいを段階的に計算するなど)では長足の進歩をとげたように思ってしま
 う。
・だが、そうけつろんするのは正しくない。
 計算的に還元不能なプロセスは、やはり計算的に還元不能なのであり、たとえコンピュ
 ーターが個々のステップなら苦も無く計算できたとしても、そのプロセス全体は依然と
 してコンピューターには根本的に困難なのである。
 そうなると、結論はむしろその逆になるはずだ。
 小論文の執筆のように、人間にはできてもコンピューターにはできないと考えられてき
 た処理が、実は計算処理の点から考えると、ある意味では思っていたより容易だという
 ことだ。
・言い換えるなら、ニューラルネットがうまく小論文を書けるのは、小論文の執筆という
 のが、これかで考えられていたより、「計算処理的に浅い」問題だったからなのである。
 いってみれば、これは小論文の執筆といった処理、ひいては言語処理一般を人間がどう
 こなしているかという「理論の確立」に近づいたことになる。
・十分に大きなニューラルネットがあれば、確かに人間が簡単にできることなら何でもこ
 なせるようになるかもしれない。  
 だが、自然界で広く可能なこと、あるいは自然界から人間が作り出した道具でできてい
 ることは、捉えようとしても捕らえられるものではない。
 そして、そうした道具を使ったからこそ、人間はこの何世紀かをかけて、「純粋に人間
 の思考だけ」で実現できることとの境界線を越えてこられたのだし、物理的な世界と計
 算機的な世界に広がる可能性を、自分たちの目的のために手に入れられるようになった
 のである。

埋め込みの概念
・ニューラルネットは、現在の環境に限っていえば、基本的に数を基盤にしている。
 したがって、文章のようなものに使うのであれば、文字を数値で表す手だてが必要にな
 る。
 実際、手はじめとしては(本質的にはChatGPTがやっているように)辞書にある
 単語をひとつひとつに数値を割り当てるということも可能ではある。
・だが、重要なのはそのような範囲を超えた考え方であり、ChatGPTでもそれが中
 心になっている。
 その概念が「埋め込み」である。
 ものの「基本的な特性」を数の配列で表し、「その特性が近いもの」は近い数値で示そ
 うというのが埋め込みの発想だ。
 そこで、たとえば単語の埋め込みであれば、一種の「意味空間」に単語を並べ、なんら
 かの点で「意味が近い」単語はその中で近い場所に配置するということが考えられる。
 
ChatGPTの内部
・ChatGPTとは巨大なニューラルネットであり現在のバーション、いわゆるGPT
 −3では1750億個の重みがある。
 多くの点で、ここまで説明してきた他のニューラルネットとよく似ているが、特に言語
 処理を目的として設計されている。
・そして、そのもっとも特徴的な点が、ニューラルネットアーキテクチャのなかの「トラ
 ンスフォーマー」という部分だ。
・前述した最初のニューラルネットでは、ある層におけるどのニューロンも基本的に、
 ひとつ前の層のすべてのニューロンと結合されていた(それぞれ重みは異なる)。
 しかし、このようにネットワークをすべて結合したのでは、何か既知の構造があるデー
 タを扱う場合には過剰になってしまう(その可能性が高い)。
 したがって、たとえば加増を扱う初期の段階では、いわゆる畳み込みニューラルネット
 (CNN)を使うのが一般的である。
 CNNでは、画像のピクセルに似たグリッド上にニューロンが配置され、グリッド上で
 近くにあるニューロンしか結合しない。
・文章の一部を構成しているトークン列に対して、いくぶんなりともそれと同じようなこ
 とを実行するというのが、トランスフォーマーの考え方だ。
 ただし、そのトークン列の中で、結合が可能な領域を固定的に定義するのではなく、
 中尉という概念を導入して、トークン列の特定の部分にほかの部分よりも重点的に
 「注意を払う」。
 もしかすると、そのうち、汎用的なニューラルネットを開始するだけにして、カスタマ
 イズはすべて訓練を通じて行うのが妥当という日がいずれ来るかもしれない。
 だが、少なくとも今のところ、現実的にはこうした「モジュール化」が欠かせない。
 トランスフォーマーはそれをやっているのであり、おそらくは私たちの脳も同じことを
 やっている。
・では、ChatGPTは(というより、その基盤になっているGPT3ネットワークは)
 実際に何をしているのか。
 思い出してほしいのだが、全体としての目標は、訓練で理解した内容に基づいて「順当
 な」形で文章を続けることだった(その訓練とは、ウェブなどから集めた膨大な量の文
 章を見せることである)。
 つまり、ある時点で一定量の文章を取得し、追加する次のトークンについて適切な選択
 を見いだすことをめざすのである。
・動作は基本的に3段階で進む。
 まず、今までにできている文章に対応するトークン列を取得し、それを表す埋め込み
 (すなわち、数字の配列)を見つける。
 次に、この埋め込みを対象として、「標準的なニューラルネットと同じように」、連続
 したネットワーク層の中を値が「波紋のように伝わって」いって、新しい埋め込み(新
 しい数字の配列)が生成される。
 そして、この配列の最後の部分を取得し、そこから次に来そうなトークンの確率が得ら
 れる約5万個の値の配列を生成する(これは偶然だが、ここで使われるトークンの数は
 英語でよく使われる単語の数とはほぼ同じである。ただしトークンのうち完全な単語に
 なっているのは3000個ほどで、残りは単語の断面にすぎない)
・重要なのは、このプロセスのどの部分もニューラルネットによって実現されており、
 その主無はネットワークの一貫した訓練によって決まってくるということだ。
 言ってみれば、「構築したと明確にいえる」のは実質的に大枠のアーキテクチャ「だけ
 で、それ以外はすべて訓練データから「学習」しているにすぎない。
・といっても、そのアーキテクチャの設計には、あらゆる経験とニューラルネットの知見
 を反映した細目がいくつもある。  

・最終的に関係する要素は驚くほど単純だ。
 つまるところ、ここで扱っているのは「人工ニューロン」で構成されたニューラルネッ
 トにすぎず、そのニューロンそれぞれが数値入力の集まりを取って、それに特定の重み
 を付けているだけだからである。
・ChatGPTへの最初の入力は数字の配列(ある時点までのトークンの埋め込みベク
 トル)であり、ChatGPtが「稼働」して新しいトークンを生成するときには、
 その数字がニューラルネットの層の間を「波紋のように伝わって」いき、各ニューロン
 は「それぞれの機能を果たし」たうえで、その成果を次の層のニューロンに渡す。
 それだけであって、ループ処理もなければ、「遡及的な処理」もない。
 あらゆることが「フィールドフォワード」、つまりネットワークの中を順方向へと進ん
 でいくだけなのである。
・これは、典型的な計算システム、たとえばチューリングマシンなどとはかなり違う。
 通常の計算システムでは、同じ計算素子によって結果が何度も「再処理」されるからだ。
 ChatGPTでは、少なくとも一定のトークンとして出力を生成するとき、各計算素
 子(つまりニューロン)は1固しか使わない。
・ChatGPTで最長の経路を見てみると、使われている層(コア層)の数はおよそ
 400で、見方によってはそれほどの数ではない。
 だが、ニューロンの数は数百万を超えるので、結合の数は合計で1750億に達し、重み
 も1750億個となる。
 つまり、あらためて確認すると、ChatGPTは新しいトークンを生成するたびに、
 これほどの数の重みをひとつひとつ計算しているのである。
 実装面でいうと、その計算は「層ごと」に並列度の高い配列計算にまとめることができ、
 これはGPUでしょりするのに都合がよい。
 それでも、生成するトークンごとに1750億回の計算(最終的にはもう少し多くなる)
 を実行しなければならないのは同じだ。
 だから、ChatGPTで眺めの文章が生成されるときに時間がかかることがあるのも、
 驚くには当たらない。
・そうこうしながらも、このような演算すべて、ここにはごく単純だ、が一体となって、
 文章を生成するという「人間らしい」仕事をうまくこなせるようになるというのは、驚
 異的である。
 繰り返し強調しておきたいが、このような仕組みがなぜ機能するか、「最終的な理論上
 の理由」はない(少なくとも、今わかっているかぎりは)。
 これは科学上の、おそらくは驚愕の大発見だと考えるしかない。
 ChatGPTのようなニューラルネットでは、人間の脳が言葉を紡ぎ出すときにこな
 している処理の本質を捉えることが可能なのである。

ChatGPTを訓練する
・では、ChatGPTはどうやって構築されたのか。
 ニューラルネットに使われる1750億個もの重みは、どうやって決まったのか。
 簡単に言うと、超大規模な金連の結果であり、その基盤になるのはウェブページや書籍
 など、人間が書いた文章の巨大なコーパスである。
 そういった訓練データすべてがあるにしても、ニューラルネットが「人間のような」文
 章をうまく生成できる理由は明らかになっていない。
 それを実現するには、細部に至るまでのエンジニアリングが必要になる。
 にもかかわらず、ChatGPTが驚異的で、大発見といえるのは、まかりなりにもそ
 れが可能だからだ。 
 しかも、事実上は「たった」1750億個の重みを使うニューラルネットで、人間が書
 いた文章の「合理的なモデル」を構築できるのである。
・今の時代、人が書いてデジタルの形式で世に出ている文章は膨大な量にのぼる。
 一般のウェブサイトには、人の書いた文章が何十億ページからあり、すべてあわせた単
 語数はおそらく1兆語になる。 
 また、非公開のウェブページまで含めれば、その数は数百倍にふくらむだろう。
 現在までに、500万点以上の書籍が利用可能になっているので(歴史上出版された億
 単位の書籍のうち)、単語数はさらに1億語ほど増える。
 これでも、同課で話される文章はまだ計算に入れていない。
・これだけのデータがそろったとして、そこからニューラルネットをどうやって訓練する
 のだろうか。 
 基本的なプロセスは、大量のサンプルを示し、そのサンプルについてニューラルネット
 が出す誤差(「損失」)を最小化できるように、ネットワークでの重みを調整していく
 のである。
 誤差からの「逆伝播」にともなうコストは膨大だが、その最大の原因は、逆伝播のたび
 にネットワークの重みはそれぞれ、わずかずつにもせよ変化するのが普通であり、扱い
 重みがとんでもない数になることもある(実際の「逆伝播」は、順方向の伝播により一
 定率でわずかに難しくなるだけだ)
・最新のGPUハードウェアを使えば、何千何万というサンプルの各バッチから並列で結
 果を計算するのは造作もない。
 だが、ニューラルネットの重みを実際に更新するとなると、現在の手法では基本的にバ
 ッチ1つごとの処理にならざるをえない(本物の脳が、計算素子と記憶素子句を組み合
 わせられるゆえに、少なくとも当面の間アーキテクチャとして優位になるのは、これが
 理由だろう) 
・数値関数の学習くらい単純そうな場合でさえ、ニューラルネットをうまく訓練するには、
 数百万からのサンプルを使わなければならないことが多かった。
 最初から始めるときには常にそうだ。
・では、「人間並みの言語」モデルを訓練するには、どのくらいのサンプルが必要になる
 のか。 
 その答えを知る「論理上の」抜本的な方法はありそうにない。
 しかし現実として、ChatGPTは数十億語の文章があればうまく訓練できる。
・何回も読み込まれる文章もあれば、1回しか読み込まれない文章もある。
 いずれにしても、ChatGPTは示された文章から「必要とするもの」を獲得してい
 く。 
・それでは、学習する文章をこのくらい大量に与えられたとして、「適切に学習する」に
 は、どのくらいの規模のネットワークが必要なのだろう。
 これについても、理論上の抜本的な方法を答えることはできない。
 最終的には、人間の言語と、人間がその言語で話す内容によって、なんらかの「完全な
 アルゴリズムによるコンテンツ」が存在するのかもしれない。
 だが、そうなると次の疑問は、そのアルゴリズムによるコンテンツにもとづいた訓練を、
 ニューラルネットはどのくらい効率的に実行できるかということになる。
 これもやはり不明なのだが、ChatGPTの成功から、十分に効率的であることは察
 せられるのである。
・最後に私的できるのは、ChatGPTが2000億弱の重みを使って、それなりの成
 果を出しているということだ。
 この数は、訓練に使われたデータの単語数(厳密にはトークン数)に近い。
 うまく動くように見える「ニューラルネット の規模」が、「訓練データの規模」に近
 いというのは、驚異的だと言えないこともない(ただし経験的には、ChatGPTに
 似た小規模のシステムでもこれは確認されている)。
 なにしろ「ChatGPTの内部」にあるのは、ウェブページや書籍などの文章が「そ
 のまま蓄積」されているわけではない。
 実際にChatGPTの内部にあるのは、精度10桁未満の無数の数字であり、その数
 字が文章すべてから集約した構造をある種の分散型でエンコードしたものなのである。
・言い換えると、人間の言語と、その言語を使った代表的な発話に関して「有効情報量」
 はどのくらいかという問いが成り立つ。
 言語サンプルについては、元のコーパスがあって、それをChatGPTのニューラル
 で表現する。
 その表現は、高い確率で「アルゴリズム的に最低限」の表現からはほど遠くなるが、
 ニューラルネットですぐに使える表現でもある。
 そして、この表現では、どちらかというと訓練データの「圧縮」はほとんどないように
 見える。 
 訓練データ1単語分の「情報量」を持つには、平均すると、ニューラルネットの重み1
 個分より若干少なくて済むようなのである。
・ChatGPTを実行して文章を生成するときには、基本的にそれぞれの重みを1回使
 わなくてはならない。
 したがってn固の重みがある場合には、n次の計算処理ステップが必要になるのだが、
 現実的にはその多くがGPUで並立処理される。
 一方、その重みを確立するために約n語の訓練データが必要だとすると、ニューラルネ
 ットの訓練にはおよそn2ステップの計算処理が必要になると結論できる。
 現在の手法に関して、およそ10億ドルという訓練コストが話題になるのは、そのため
 だ。
 
基本的な訓練の次にあるもの
・ChatGPTを訓練するとき、その労力の大半はウェブページや書籍その他から既存
 の文章を大量に「見せる」ことに費やされる。
 しかし、ほかにもまだ、明らかにもっと重要な部分があることがわかる。
・元々のコーパルを示されて、そこから「最初の訓練」が終わればすぐにChatGPT 
 内部のニューラルネットはプロンプトなどに続けて独自の文章を生成できるようになる。
 ただし、この状態から妥当そうな結果を出力することも多い一方、特に文章が長くなっ
 たときには、「方向がずれて」いって、人間らしくなくなる傾向も強い。
 従来のような統計学を文章に適用して見つけられるような不備ではなく、人間が読めば
 容易に気づくような誤りだ。
・ChatGPTを構築するうえで重要な考え方は、ウェブページなどから「受動的に読
 み取った」あとで、次の段階に進むことだった。
 実際に人にどんどんChatGPTと対話してもらい、その生成結果を見たうえで、 
 「優れたチャットボットになるにはどうすればいいいか」をフィードバックしてもらう
 のである。
・では、そのフィードバックをニューラルネットはどう利用するか。
 最初のうちは、ニューラルネットからの出力結果を人に評価させるだけだが、次にはそ
 の評価について予測を試みるもうひとつのニューラルネットモデルが作られる。
 今ではこの予測モデルを、実質的に損失関数と同じように、元のネットワークに対して
 実行できるので、事実上はこのニューラルネットを人からのフィードバックによって
 「チューニングアップ」できるようになっている。
 そして、こうした成果は実際に、システムが「人間のような」出力をうまく生成するう
 えで大きな影響を与えているようなのである。
・「最初に訓練」されたニューラルネットを、実用的な一定の方向に向かわせようとする
 ときには、概して「介入」がほとんど必要ないという点は注目に値する。
 「何か新しいことを学習した」ようにネットワークを機能させるには、そこに介入して
 訓練のアルゴリズムを実行し、重みを調整するといったことがひつようになると考えて
 いたとしても当然だ。 
・だがそうではない。
 実は、ChatGPTには指示を1回与えれば基本的には十分のようだ。
 プロンプトを与えると、人が伝えた内容をうまく利用して文章を生成する。
 このように動作するという事実も、ChatGPTが「実際に実行している」内容を理
 解し、人間の言語や思考の仕組みとの関連性を把握するときに重要な手掛かりになるは
 ずだ。
・たしかに、ここにはなかなか人間らしい点がある。あれだけの訓練を事前児一度でも受
 けたあとには、一度でも何かを伝えるとChatGPTはそれを「覚える」ことができ
 る。
 少なくとも、それを使って文章の一部を生成するまでの「十分に長い時間」、記憶して
 いるのである。
 ここでは、いったい何が起こっているのか。
 もしかすると、「ChatGPTに命じそうなことはすべて、すでにどこかにあって」
 それを正しい場所へと導くだけなのかもしれない。
 だが、それはありそうにない。
 もっとありそうなのは、あらかじめ要素がそこにあって、その細目は「要素間の軌道」
 のようなもので決まり、何かを命じるとその軌道を伝えることになるということだ。
・だから、人間でもおおかた同じだが、CHatGPTにわかっているフレームワークに
 まったく当てはまらない奇異なことや予想外のことを伝えると、それをうまく「組み込
 む」ことはできそうにない。
 「組み込む」ことができるのは基本的に、すでに持っているフレームワークのうえにご
 く単純な形で乗っているものに限られる。
・また、ニューラルネットが「選び出せる」ことには、必然的に「アルゴリズム上の限界」
 があるという点もあらためて指摘しておこう。
 「これはそこに当てはまる」式の「浅い」ルールを伝えると、ニューラルネットはほぼ
 確実に、その答えを苦も無く表現し、再現してみせる。
 現に、言語から「すでに学んでいる」ことに基づいて、直後に続くパターンを示す。
・ところが、計算的に還元不能そうな手順をいくつも伴う、現実の「深い」計算のルール
 を与えると、まったく機能しなくなるのだ(ニューラルネットは、ステップごとに「デ
 ータを順方向に送る」だけで、新しいトークンを生成する点を除けばいっさいループし
 ないことを思いだそう)。 
・具体的に個々の「還元不能」な計算なら学習できることは、言うまでもない。
 だが、組み合わせの確率が顔を出したとたんに、そのような「一覧参照式」のアプロー
 チは通用しなくなる。
 そうなると、人間と同じように、ニューラルネットも実際の計算ツールに「手を伸ばす」
 べき段階になる。
  
実際にChatGPTをうごかしているもの
・人間の言語は、そして言語の生成に伴う思考プロセスは、いわば複雑さの頂点にあるも
 のだと常に考えられてきた。
 実際、人間の脳が(たかだか)1000億かそこらのニューロンから成る(結合部はお
 そらく100兆におよぶ)ネットワークでそれを担っているというのは、なかなか驚異
 だと思われている。
 人間の脳には、ニューロンのネットワークを超える何か、たとえば知られざる物理現象
 の新しい層のようなものが、きっとあるのだと想像している人もいるだろう。
・しかし、ChatGPTの登場で、私たちは重要な情報のピースを新たに手に入れた。
 純粋に人工的なニューラルネットが、人間の脳のニューロンとほぼ同じ数の結合部を備
 えると、人間の脳の言語を生成するという処理を驚くほど見事にこなせるという発見で
 ある。 
・たしかに、巨大で複雑なシステムには違いない。
 ニューラルネットの重みの数は、世の中でいま利用できる文書の単語数にほぼ匹敵する。
 だが、見方によっては、言語が持つあらゆる豊かさと、それが紡ぎ出すものを、このよ
 うな有限のシステムに収められるというのは、いまだに信じがたいことかもしれない。
 そこで起こっていることの一部に、ある普遍的な現象が現れていることは間違いない。
 基礎にあるルールが単純でも、計算プロセスによってシステムの明かな複雑さが大幅に
 増幅される事があるという現象だ。
・しかし実際には、これまで見てきたように、ChatGPTで使われているようなニュ
 ーラルネットは、この現象の、またはそれに伴う計算的還元不能性の、下異境を抑える
 よう意図して設計される傾向がある。訓練のしやすさを優先するからだ。
・では、ChatGPTのようなシステムはどうやって、言語を扱えるほどにまで進化で
 きるのか。  
 実は、言語というものがその根本的なレベルでは見かけより単純だからだ、というのが
 私の考える基本的な答えである。
 つまり、ChatGPTは、言ってしまえば簡単明瞭なニューラルネット構造でさえ、
 人間の言語とその背景にある思考の「本質を捉える」ことに成功しているのだといえる
 のだ。
 しかも、その訓練の過程でChatGPTは、それを可能にする言語(と思考)の規則
 性を、いつの間にか「ひそかに発見」している。
・ChatGPTの成功は、根源的で重要な科学の一端について、その証拠を私たちに突
 きつけていると考えられる。 
 最大級の「言語の法則」を、ひいては「思考の法則」を新たに発見できるかもしれない
 可能性を示唆しているということだ。
 ニューラルネットとして構築されている以上、ChatGPTではそうした法則はあっ
 たとしても暗黙的である。
 そこで、どうかしてその法則を明白にできれば、ChatGPTが行うようなことを、
 もっと直接的、効率的に、そして理解しやすい形で広げられる可能性が秘められている
 のだ。
・では、そのような法則はいったいどんなものと考えられるだろうか。
 最終的には、言語が、そして言語を使って話す内容がどのように成り立っているかとい
 う、ある種の処方箋を与えてくれるはずである。
 「ChatGPTの内部を見る」と、あり程度その手がかりを得られる可能性があり、
 計算言語の構築から得られた知見は今後の方向を示唆している。
 だが、まずは「言語の法則」にあたる要素として古くから知られている2つを取り上げ、
 それがChatGPTの動作にどうかかわっているかを確認しよう。
・1つ目は、言語の構文だ。
 単語をランダムに並べたものでは決してない。
 さまざまな単語の並べ方について、(かなりまで)厳然とした文法規則がある。
 たとえば英語なら、名詞があればその前に形容詞があり、後ろには動詞が続く。
 また、2つの名詞が連続することは通常ない。
 このような文法構造は、「解析木」の要素をどう並べるかを定義した一連の規則によっ
 て(少なくとも近い形で)捉えることができる。
・ChatGPTは、そのような規則について明白な「知識」を持ち合わせていない。
 それでも、訓練されるなかでどうにかして暗黙的にはそれを「発見」するし、その規則
 に従うのも得意のようだ。
 これはどうやって動いているかというと、「外観」レベルではよくわかっていない。
 
意味空間と「意味論上の運動の法則」
・ChatGPTでは、どんな文章も数字の配列として表現されており、これはある種の
 「言語特徴空間」における点の座標と考えることができる。
 したがって、ChatGPTが文章の続きを出力するのは、言語特徴空間で軌跡を描く
 ことに当たるといえる。
 そうなると、次に考えるのは、意味を成していると私達人間が考える文章にこの軌跡を
 対応させる要素は何かということだ。
 言語特徴空間における点が、「有意味性」を維持したままどうやって位置を変えるのか、
 それを定義する、もしくはせめて制約する「意味論上の運動の法則」といえるものは存
 在するのだろうか。
・だが今のところ人間の言語がどのように「成り立っている」かについてChatGPT
 が「発見」したことを、その「内部動作」から「経験的にデコード」できるには至らな
 かった。

意味文法と計算言語の力
・「意味のある人間の言語」を生成するのに必要なものは何だろうか。
 以前なら、人間の脳をおいてほかにないと考えられたかもしれない。
 だが今では、ChatGPTのニューラルネットでも、かなり巧みにそれをこなせるこ
 とがわかってきた。
 それでも、ここまでが限界であり、これ以上にシンプルな、つまりもっと人間に理解し
 やすいものがとうじょうすることはないという可能性もある。
・しかし、ChatGPTが成功したことで、ある重要な「科学的」事実が暗示されたの
 ではないかという疑問を私はぬぐいきれない。
 つまり、意味のある人間の言語には、私たちにわかっている以上に理解しやすい構造が
 あり、そのような言語の成り立ちを説明するかなりシンプルな規則が最終的には存在す
 るかもしれない、ということだ。
・品詞などの分類に対応する単語が、人間の言語でどのように並べられるかという規則を
 定めてるのが構文文法である。
 だが、意味を扱うには、それ以上のものが必要になる。
 それを実現するひとつの可能性が、構文文法だけでなく意味文法まで踏み込むことだ。
・「意味文法」という話題になると、「その裏に隠れているものは何か」とか、どんな
 「世界モデル」を想定しているのかと問いたくなる。
 構文文法の中心は、単語から言葉を組み立てることである。
 一方、意味文法には必ず、なんらかの「世界モデル」が関わってくる。
 実在する単語からつくられた言葉を上層として重ねるとき、その土台となる「骨組み」
 として機能するのが「世界モデル」である。
・少し前までなら、(人間の)言語こそ、私たちの「世界モデル」を一般的に記述できる
 唯一の手段だと考えられたかもしれない。
 数世紀前からすでに、特定の事柄については形式化が始まっており、その基盤となるの
 は数学だった。
 だが今では、形式化に対してもっとずっと一般性の高いアプローチが進んでいる。
 それが計算言語である。
・計算言語の、つまりは意味文法の構築は、ものごとを表現するときの究極的な圧縮手法
 の一種とみなすことができる。
 普通の人間言語に存在する、ありとあらゆる『言いまわし」を弄することなく、ものご
 との本質について語ることができるからだ。
 そして、ChatGPTの大きな利点も、これとよく似たものと見なすことができる。
 これもある意味では、考えられる多様な言いまわしを顧慮することなく、「意味論的に
 有意な形に言葉をまとめる」事が可能な段階まで「押し進めた」ものだからである。
・それでは、基盤となる計算言語にChatGPTを応用したらどうなるのだろうか。
 計算言語は、実現可能なことを記述できる。
 それでも、追加できるのが、たとえばウェブなどのコンテンツすべてから読み取ったも
 のに基づいて「何の確率が高いか」という感覚であることは変わらない。
・ところが、その土台で計算言語が動いているとなると、還元不能かもしれない計算を利
 用できる究極的なツールにも等しい機能を、ChatGPTはその根源のところですぐ
 に利用できることになる。
 ということは、単に「順当な文書を生成する」だけではなく、その文章が世界について
 実際に「正しい」ことを述べているかどうかをめぐって解決可能なことは何でも解決で
 きる、あるいは話題にしそうなことは何でも解決できると期待されるシステムを実現で
 きるのである。

ということで、ChatGPTは、何をしているのか、なぜ機能するのか
・ChatGPTの基本的な概念は、あるレベルに限ればごくシンプルだ。
 ウェブや書籍などから、人が作った文章の膨大なサンプルを集めるところから始まる。
 次に、「それと似た」文章を生成するようにニューラルネットを訓練する。
 具体的には、「プロンプト」から始めて、「訓練に使われたと同じような」文章を続け
 られるようにするのである。
・ChatGPTで使われている実際のニューラルネットはいたって単純な要素で構成さ
 れている。
 ただし、その量は膨大だ。
 ニューラルネットの基本的な動作も同じくきわめて単純であり、ある時点までに生成し
 た文章から導きだした入力を、「その要素を介して1回ずつ」(ループ処理は行わない)
 生成される新しい単語(または単語の一部)ごとに渡しているにすぎない。
・だが、驚異的なのは、そして意外でもあるのは、ウェブ上や書籍などで見られる文章に
 見事に「似ている」文章をこのプロセスが生成できるということだ。
 筋の通った人間の言語になっているだけでなく、「読み取った」内容を利用しながら、
 「プロンプトに即し」た「内容を話す」のである。 
・「普遍的に意味のある」こと(あるいは、正しい計算に対応すること)を常に話すとは
 かぎらない。
 なぜなら、訓練データの中で「そう思われた」ことに基づいて「正しいと思われる」こ
 とを話すだけだからである。
・ChatGPTの個々の設計には、賞賛すべき点がある。
 だが、つまるところ(少なくとも外部ツールを使う前までの段階では)ChatGPT
 は蓄積してきた「一般通念」から「筋の通った文章スレッド」の一部を取得している
 「だけ」だ。
 それでも、人間らしい結果になっているのは驚異的である。
・ここには科学的にきわめて重要な示唆がある。
 人間の言語は、(そして、それを支えている思考のパターンは)、どうやら私たちが考
 えていたよりも単純であり、その構造はもっと「規則的」らしいということだ。
 そのことを暗黙の裡に明らかにしたのがChatGPTである。
 一方、私たちは意味文法や計算言語などを使って、それをわかりやすく明示できるかも
 しれない。 
・ChatGPTが文章を生成する機能には、目を見張るものがある。
 その出力結果はたいてい、私たち人間が出力するものにかなり近いのだ。
 だとすると、ChatGPTは人間の脳のように動いているといえるのだろうか。
 たしかに、その基盤にある人工ニューラルネットの構造は、脳を理想化した姿をもとに
 モデル化された。
 そして、私たち人間が言葉を紡ぎ出すときに脳で起きていることの多くが、人工ニュー
 ラルネットに酷似しているという可能性はかなり高い。
・訓練(学習うともいう)について考えると、私たちの脳と現在のコンピューターという
 双方の「ハードウェア」(そして、おそらくはまだ開発されていないアルゴリズム上の
 概念)は互いに異なっている。
 そのためChatGPTは脳とはおそらくかなり違う(ある意味で効率も低い)戦略を
 取らざるをえない。
・ほかにも特徴がある。
 一般的なアルゴリズム計算とは違い、ChatGPTは内部に「ループ」を持ってこら
 ず、「データを再計算」することもない。
 そうなると、必然的に計算能力は制限される。
 現在のコンピューターと比べてさえそうで、まして人間の脳と比べた場合には差は歴然
 となる。 
・その問題を「修正」しつつ、しかも妥当な効率でシステムを訓練できる機能を維持する
 にはどうすればいいか、答えは明らかではない。
 だが、それが可能になれば、ChatGPTは今後もっと「脳とおなじようなこと」を
 こなせるようになるだろう。
 もちろん、人間の脳が得意としていないことも多い。
 還元不能な計算を伴う処理がその代表である。
 そうした問題に対しては、脳も、ChatGPTのようなシステムも「外部ツール」を
 検討する必要がある。
・とりあえず当面は、ChatGPTがすでにできるとうになったことに期待が高まる。
 あるレベルを見るとこれは、単純な計算素子が大量にあれば、思いもよらない驚異的な
 ことを実現できるという科学上の基本的事実の格好の事例といえる。
・だが別の面を見ると、人間の条件、すなわち人間の言語とそれを支えている思考のプロ
 セスで中心的な機能となる根本的な特性と原理は何か、それを深く理解することに向け
 て、過去2000年まで最大のはずみになるということでもある。
 

<Wolfram Alpha 計算知識の強大な力をChatGPTに>
・私はニューラルネットの技術を長年(ほぼ43年間)追いかけてきた。
 ここ数年の発展も見ているが、そんな私にとってさえ、ChatGPTの性能はかなり
 驚異的に見える。
 ついに、しかも突然、ほとんど何についてでも文章を巧みに生成できるシステムが登場
 したのだ。人が書いたものと比べてもそん色がない。
 感心するし、役に立つ。
 ChatGPTの成功は人間の思考の本質について、いたって根本的な課題を投げかけ
 ている。
・しかし、人間のようなことを自動的にこなすという驚くべき成果が目立っているものの、
 役に立つことがどれも「人間のような」わけではない。
 なかには、もっと形式に沿った、構造化されたものもある。
 実際、過去何世紀かかけて人間の文明が達成してきた異形のひとつは、数学という精密
 科学のパラダイムを築きあげ、純粋に人間的な思考とかけ離れた能力の拠り所を生み出
 したことだ。
 とりわけ、今ではコンピューターによる計算処理が特に重要になっている。
・私自身も、計算処理のパラダイムに長い間深く携わってきたが、そこで追究してきたの
 は、子の世界のできるだけ多くのものごとを記号という形式で表す計算言語を作り出す、
 その一点だった。 
 そうするなかで、自分や他人がしたことを「計算処理で支援する」、さらには強化する
 ことが私の目標になっていった。
・私が考えるのは、人としての行為だ。
 だが、Wolfram言語Wolfram Alphaが独自の「強力な計算能力」
 を活用するところも、とっさに想い浮かべることができる。
 その力を利用して私は、人間の範疇を超えたこともいろいろと実行できるのである。
・これは、何かを成し遂げるうえでとりわけ強大な力になる。
 しかも肝心なのは、それが我々人間にとって重要なだけではないということだ。
 人間のようにふるまう 人工知能(AI)にとっても、それ以上にとは言わないまでも、
 等しい程度には重要なのである。
 我々が考える計算知識の強大な力を直接的にもたらし、構造化された計算と構造化され
 た知識という、人間にとっては異質な力を活用できる。
・こうしたことがChatGPTにとってどんな意味を持つのか、われわれはそれを検証
 し始めたばかりだ。 
 それでも、すばらしいことが実現するということだけは明らかにわかっている。
 Wolfram Alphaの機能は、実にさまざまな点でChatGPTとは大きく
 異なっているが、この二つの間には共通のインタフェースがある。
 それはが自然言語だ。
 つまり、ChatGPTは人間と同じようにWolfram Alphaに「話しかけ
 る」ことができる。
 Wolfram Alphaは、ChatGPTから受け取った自然言語を、厳密な記
 号計算言語に変換し、そこに計算知識の力を応用することができるのである。
・これまでの何十年かというもの、AIに関しては「統計的手法」と「記号的手法」とい
 う二分法の考え方が続いてきた。
 前者はChatGPTで使われている手法であり、
 後者は事実上Wolfram Alphaの出発点になる手法である。
 だが今では、一方にChatGPTの成功があり、
 もう一方ではわれわれがWolfram Alphaに自然言語を理解させてきた経緯
 もあって、この2つを組み合わせ、一方だけでは成しえなかったもっと大きな課題に取
 り組めるようになった。
  
基本的な例から
・本質的にいうとChatGPTとは、その訓練に使われているウェブページや書籍その
 他の中にある情報の「パターンに従って」、言語という出力を生成するシステムである。
 驚異的なのは、短い文章だけでなく小論文全篇ほどの規模になってさえ、その出力が人
 間なみになっていることだ。
・学習した概念を踏まえて、つじつまの合ったことを言うし、思いがけず興味深い内容に
 なっていることも少なくない。
 出力は、少なくとも言語のレベルに限るなら、必ず「統計的にもっともらしい」結果に
 なっている。
 だが、たとえ感心するような結果だったとしても、ChatGPTが得意気に披露する
 事実や計算が常に正しいという保証はまったくない。
・Wolfram言語には、膨大な量の計算知識が組み込まれているのである。
 これこそ、何十年もかけてわれわれが積み重ねてきた成果だ。
 慎重に選定してきた情報が今では大量のデータとして蓄積され、常に更新されている。
 メソッドやモデル、アルゴリズムを実装し(新たに考案することも多い)、あらゆるも
 のごとに対応する、首尾一貫した計算言語を体系的に構築しているからだ。
 
今後の展望
・機械学習は強力な手法であり、とりわけこの10年間で胸宇的な成功を収めてきた。
 そのなかで最も新しい成果がChatGPTである。
 画像認識、自動音声認識、言語の翻訳など各分野で閾値を突破しており、対応する分野
 はさらに増えている。
 いずれも、たいてい突然に起きた変化だ。
 「基本的に不可能」から「基本的に実現可能」に変わった処理もある。
・しかし、その結果が「完璧」になることは本質的にありえない。 
 思考した回数のうち95%まではうまくいくものもあるだろうが、どんなにがんばって
 も、残り5%は不首尾に終わる。
 目的次第では、これを失敗と見なすこともある。
 だが重要なのは、95%でも「十分に間に合う」大きな用途があらつる方面に存在する
 ということだ。
 もしかしたら、その出力がもともと「正解」のない場面で使われるからかもしれない。
 あるいは、単に確立を明らかにして、人が、もしくはシステム的なアルゴリズムがそれ
 を選択あるいは調整するのに委ねているからかもしれない。
・数千億個のパラメータからなるニューラルネットが、一度に1トークンずつ文章を生成
 しながら、ChatGPTのような成果があげられるというのは、見事としか言いよう
 がない。
 これほど劇的な、しかも予想外の成功を見せつけられると、この調子でどんどん「十分
 に巨大なネットワークを訓練」していけたら、きっと何でも可能になるのではないかと
 思うのも無理はない。
 だが、そうはならない。
 計算処理に関する根本的な事実、なかでも計算的還元不能性があるため、最終的に可能
 にならないことは明白だからだ。
 だが、それ以上に関係してくるのは、われわれが機械学習の実際の歴史ですでに見てき
 たことだ。
 ChatGPTのように大きなブレークスルーはあるだろうし、機能向上も止まらない
 だろう。
 だが、何より重要なのは、可能になった範囲だけでも成功と判断され、可能でないこと
 がブレーキにならない、そういう活用の場もあるということだ。
・当然、執筆の支援に、アイデアの提案に、あるいは各種の文書や対話を助ける文章の生
 成に、「ChatGPTの出力そのまま」でも有効な場合が多いだろう。
 だが、完璧を求めたい場合、機械学習はその任に適していないし、その点では人間も適
 していない。 
・ChatGPTは「人間のような部分」はじつにうまくこなす。
 もともと厳密な「正解」が存在しない場合だ。
 一方、何か厳密さを求められる「場面を任される」と、弱点を露呈することが多い。
 そこで肝要なのが、この問題を解決できる格好の方法があるということだ。
 ChatGPTをWolfram Alphaに、その計算知識という「強力な力」に
 結びつけるのである。
・Wolfram Alphaの内部では、あらゆるものが計算言語に置き換えられ、
 Wolfram言語の厳密なコードに変換される。
 信頼して利用するためには、これが一定レベルで「完璧」でなければならない。
 だが、ここで肝になるのが、ChatGPTはそれを生成する必要がないということだ。
 通常どおりに自然言語を生成すれば、あとはWolfram Alphaが自然言語を
 理解するその能力を駆使して、ChatGPTの自然言語を厳密なWolfram言語
 に翻訳する。
・さまざまな意味で、ChatGPTは何ごとも「真に理解」しているわけではないと言
 っていい。 
 単に「有益な情報を生成する方法を知っている」だけだ。
 その点、Wolfram Alphaは状況が異なる。
 Wolfram Alphaで何かがWolfram言語に変換されると、それは完全
 で厳密な形式表現になり、そこから信頼性の高い計算処理が可能になる。
 ただし、「人が関心を持つ」もののうち、計算処理できる形式表現がそろっていないも
 のも多いことは言うまでもないだろう。
 それでも、不完全ながら、それについて自然言語で語ることはできる。
 その場合こそ、圧倒的な能力を備えたChatGPTがそれ自体で活躍するのである。
・ChatGPTが直接Wolfram言語を学習するというのはどうだろうか。
 そう、それは可能であり、実際すでに始まってもいる。 
 最終的に私が十分にあるだろうと予想しているのは、ChatGPTのようなシステム
 がWolfram言語で直に動くこと、しかもいたって効果的に動くことなのだ。
・Wolfram言語は、人間が考えることを取り込み、それを計算処理的に表現して扱
 えるようにすることを全般的なコンセプトとしている。
 通常のプログラミングの言語は、実行する処理をひとつひとつコンピューターに教えこ
 むための手段である。 
 それに対してWolfram言語は、フルスケールの計算言語としての役割を持ち、
 もっと大きな目標を掲げている。
 素の目標とは、ひとことで言うと、人間とコンピューターがどちらも「計算処理的に思
 考する」ための言語となるのだ。
 
解説
・GPT−2とGPT−3の違いであるが、これはそれぞれが持つパラメータの数と訓練
 データの量である。
 GPT−2のパラメータ数は16億、GPT−3のパラメータ数は1750億であり、
 100倍の差がある。
 また、GPT−4はパラメータ数が公開されていないが、2000億〜1兆程度である
 と予測されている。
 訓練データの量は、GPT−2は約40GB、GPT−3は約570GBであり、こち
 らも大きく増加している。
・GPT−3のようなモデルの性能はパラメータ数、データ量、計算量を変数にしたべき
 乗則に巣違うことが実験的にわかっており、このことは「スケーリング則」として知ら
 れている。
・実験的にパラメータ数、データ量、計算量は多くすればするだけ性能が向上することが
 わかっており、GPT−2とGPT−3の差はその影響が大きいのである。
・さらに興味深いことに、スケーリング則にはその有効範囲に上限が今のところ確認され
 ていない。 
 つまり、この3つの変数を上げ続ければ無限に性能が向上する可能性がある。
 ただし、性能を1から2に上昇させるために必要なパラメータ数が、性能が1のときの
 10倍必要だったとすると、2から3にするには性能が1のときの100倍、4にする
 には1000倍ひつようになるという計算になり、必要なパラメータの量に対する性能
 向上の幅は小さくなっていく。
・また、訓練データはウェブに存在するテキストデータを用いる場合がほとんどであるが、
 近い将来データが枯渇することも指摘されている。
 よってさらなる性能の向上には新たな技術革新が必要である。
・次に、GPT−3とChatGPTの違いについて説明する。
 重要な点として、GPT−3をはじめとする大規模言語モデルは文章の続きを生成する
 モデルであるということである。 
 問題は、文章の続きを生成することとチャットの応答を生成することは求められること
 が異なるということである。
 具体的には、文章の続きを生成する際は文章の意味が通っていればそれで良いが、チャ
 ットの応答は意味が通っているだけでなく、人が好む応答である必要がある。
 そこで、ChatGPTでは大規模言語モデルに人が好む応答をさせるため、RLHF
 (人間のフィードバックに基づく強化学習)という手法を用いて学習を行っている。
・RLHFは3つのステップからなる。
 第1ステップは教師あり学習である。
 人間とAIの理想的なやり取りを人手により作成し、そのデータを用いて大規模言語モ
 デルを学習する。
 これにより、モデルはある程度人が好む応答が生成できるようになる。
・第2ステップは強化学習を行うための報酬モデルの学習である。
 報酬モデルは大規模言語モデルが生成した「応答の良さ」をスコア付けするモデルであ
 る。 
 応答の良さとしては、
 「嘘やデマを含まないこと」
 「差別的・攻撃的な内容を含まないこと」
 「ユーザの役に立つこと」
 の3点を基準としている。
・報酬モデルの学習の方法は以下の通りである。
 まず第1ステップで学習済みのモデルにより、入力文に対する複数の応答候補を出力さ
 せる。
 次に、人間がその複数の応答に対し順位付けを行う。
 そして、報酬モデルはその順位を予想できるように学習する。
・第3ステップは強化学習である。
 第1ステップで学習した大規模言語モデルを、報酬モデルにより得られるスコアを最大
 化するようにさらに行う。
 さらに、ある程度学習が進んだら第2ステップに戻り、報酬モデルの再学習を行うとい
 うことを反復的に行う。  
・上記のステップにより、大規模言語モデルは人が好むより良い応答を出力できるように
 なる。
・最後にChatGPTとGPT−4の違いであるが、これはOpenAIがGPT4の
 アルゴリズムやパラメータ数、訓練データの量などを公開していないため、詳細は不明
 である。
・OpenAIにより公開されているChatGPTとの違いとしては、まず入力できる
 プロンプトが長いことが挙げられる。
 ChatGPTで最大16000トークン(日本語の場合13000文字程度)であっ
 たが、GPT−4では最大32000トークンまでの入力が可能である。
・またテキストだけではなく画像も入力することができ、画像のないようについて説明さ
 せることも可能である。  
 さらに、性能も大きく向上しており、GPT−4はアメリカの司法試験や学力テスト、
 日本の医師国家試験などで合格点を叩き出すほどになっている。
 これはChatGPTdeha達成できなかったことである。
・GPT−4を用いて構築されたBingAIについても少し触れておく。
 BingAIはMicrosoft社が開発したAIであり、同社の検索エンジンであ
 るBingをGPT−4と組み合わせることで構築されている。
・ChatGPTは言語的には自然な文章を生成可能であるが、計算問題や訓練データに
 含まれていない事実については正しく出力されない場合が多い。
・BingAIはウェブ上の情報を参照して応答を生成するため、ChatGPTでが回
 答できない質問に正しく回答できる場合がある。