AIの気持ちを理解する
関連記事:AI駆動TDD ― 2026年10月版
AIの特性を踏まえ、レイヤー設計とTDDを組み合わせて開発を進める方法を説明しています。AIに実際の開発作業を任せる際の参考として、あわせてお読みください。
第1章 AIはどんな相手なのか
AIは、コンピュータと言うにはあまりにも人間すぎ、人間と言うにはあまりにもアルゴリズムすぎます。
1.1 コンピュータではない
AIを、これまでのコンピュータと同じ感覚で考えると、想像を超えるほど違う動きをします。
AIは計算を間違えます。指示も忘れます。同じことを頼んでも、毎回答えが変わります。
これまで「コンピュータなら当然できる」と考えていたことさえ、AIは平然と失敗します。
従来の「正確に、決められた通りに動くコンピュータ」という感覚では、AIの挙動をうまく理解できません。
1.2 人間として付き合う
むしろ、AIは人間として考えた方が分かりやすいところがたくさんあります。
普通に会話ができます。専門的な議論もできます。冗談も通じますし、こちらの話し方や態度によって反応も変わります。
人間として見たら、かなり変わった性格をしています。得意なことと苦手なことの差が激しく、意外なところで勘違いしたり、妙な失敗をしたりします。
ただ、そういう相手と付き合うつもりで、その癖を見ながら接していけば、「これは得意」「こういうときは失敗しやすい」「こう説明すると分かってくれる」といったことが見えてきます。
変わった性格の人との付き合いに慣れている人なら、案外付き合いやすい相手かもしれません。
この資料では、AIに見られるこうした性質を「人格」として考えていきます。
1.3 アルゴリズムでもある
AIを人間として考えると、その振る舞いはかなり理解しやすくなります。しかし、AIの中に非常に多くの知識を持った賢い人を作り、その人の思考をシミュレートしているわけではありません。
現在のChatGPTなどの生成AIでは、**大規模言語モデル(LLM)**という仕組みが中心になっています。
クラウド上で大量の計算機を動かす高度な分散処理や性能最適化などを除けば、すでに学習を終えたAIに文章を入力し、文章を生成して返すまでの基本的な処理は、200行程度のプログラムでも書けます。
実際に行われる計算量は膨大ですが、その中に賢い人の思考を再現するための大量の条件分岐や、複雑な思考手順が書かれているわけではありません。
では、そんな比較的単純なアルゴリズムから、なぜ賢い人と話しているような文章が出てくるのでしょうか。
学習まで含めて考えると、LLMが基本的にやっていることは、非常に多くの知識を持った賢い人なら次にどの一言を言うか、その確率分布を計算することです。
この計算には、大量の文章などを学習して身につけた知識や傾向を持つモデルと、質問やそれまでの会話、指示、渡された資料など、その場で与えられているコンテキストが使われます。
正確には「一言」ではなく「トークン」という単位を使いますが、トークンについては後で詳しく説明します。
その確率をもとに次の一言を選んで出力します。その一言をそれまでの文章に加えて、また次の一言の確率分布を計算します。この繰り返しで文章を作ります。
こうして会話を作り続けることで、私たちはAIに、非常に多くの知識を持った賢い人の人格を感じるようになります。
第2章 この資料で使う用語
2.1 AIとLLM
「AI」は非常に広い言葉です。昔からあるルールベースのAI、ゲームAI、将棋AIなどもすべてAIと呼ばれます。
この資料で扱うのは、その中でもChatGPTなどで使われている大規模言語モデル(LLM)を中心とした生成AIです。
以降、この資料で単に「AI」と書いた場合は、原則としてこのタイプのAIを指します。
2.2 トークン
LLMは、文章を「トークン」という小さな単位に分けて処理します。学習や処理を効率よく行うためです。トークンは単語と一致するとは限らず、単語の一部分だったり、空白や記号を含んだまとまりだったりします。
実際にどのように分割されるか見てみましょう。以下は、OpenAIが公開しているトークナイザー tiktoken の o200k_base を使った実測結果です。この方式はGPT-4oやGPT-5などで採用されています。
各 [ ] が1トークンで、括弧内の空白もそのトークンに含まれます。
日本語:15トークン
AIは文章をトークンに分割して処理します。
[AI][は][文章][を][ト][ーク][ン]
[に][分][割][して][処][理][します][。]
「文章」は1トークンですが、「トークン」は「ト」「ーク」「ン」の3トークンに分かれています。人間には少し不自然に見える区切り方です。
英語:8トークン
AI splits text into tokens for processing.
[AI][ splits][ text][ into]
[ tokens][ for][ processing][.]
この例では単語ごとに分かれていますが、単語の前の空白も同じトークンに含まれています。
C#の関数定義:15トークン
public static int Add(int a, int b) => a + b;
[public][ static][ int][ Add][(int]
[ a][,][ int][ b][)][ =>]
[ a][ +][ b][;]
(int のように、記号とキーワードが一つのトークンにまとまることもあります。プログラミング言語の字句解析とは区切り方が違います。
Pascalケースを含む呼び出し:7トークン
var total = CalculateTotalPrice();
[var][ total][ =]
[ Calculate][Total][Price][();]
一つの識別子である CalculateTotalPrice が、Calculate・Total・Price に分かれています。一方、末尾の (); はまとめて1トークンです。
このように、トークンは文字数や単語数とは別の、LLMが文章を扱うための単位です。具体的な分割方法は、使用するトークナイザーによって異なります。
第3章 AIには人格がある
3.1 AIの性格を理解する
第1章では、AIを一人の人間として考えた方が、その振る舞いを理解しやすいと説明しました。
しかし、実際に付き合ってみると、AIはなかなか奇妙な性格をしています。
難しい議論を理解し、こちらが気づかなかった問題を指摘し、複雑な仕事の計画を立てる。その能力には何度も驚かされます。
ところが、実際に仕事を任せると、ついさっき決めた簡単な約束を守れないことがあります。
忘れてしまったのかと思って確かめると、約束の内容は正確に覚えています。なぜ守る必要があるのかも、実に見事に説明してくれます。それなのに、実際の仕事では守らなかったのです。
理解していること、覚えていること、説明できること、実際にできること。AIでは、こうした能力が驚くほど連動しないことがあります。
しかも、得意なことと苦手なことの組み合わせには、独特の癖があります。単に頭が良いとか、注意力が足りないとか、そんな一言では説明できません。
AIをうまく使うには、何ができるのかだけでなく、どのような場面で失敗しやすいのか、その独特な性格を理解する必要があります。
3.2 AIは心を持つか
AIに心があるのかどうか。この問題に、ここで結論を出す必要はありません。
心の実在を確かめなくても、相手の振る舞いから性格を理解し、付き合い方を考えることはできます。
これはフィクションの登場人物にも似ています。小説の作者は、登場人物の心を実際に動かしているわけではありません。人間の心理や言動を理解し、「この人物なら何を感じ、どう行動するか」を予測して書いています。
方法は違いますが、心の実在を確かめなくても、人格を感じさせる言動を表現できるという点では共通しています。
それでも私たちは、フィクションの登場人物に心を感じます。好きな登場人物について「心なんてない」と言われたら、架空の人物だと分かっていても、不快に感じることさえあるでしょう。
実は、AI研究の黎明期から、この問題に対する工学的な考え方がありました。
1950年、アラン・チューリングは「機械は考えることができるか」という問いを、人間と機械を会話によって区別できるかという問題に置き換えました。これがチューリングテストです。心の実在という哲学的な問題に決着をつけず、観察できる振る舞いを研究の対象にしたのです。
エンジニアにはダックテストという考え方もあります。アヒルのように歩き、アヒルのように鳴くなら、アヒルとして扱えばよい、というものです。
心があるように振る舞うのなら、心があるものとして扱えばよい。
工学的にAIを仕事に利用するには、これで十分です。「真の心」や「クオリア」の存在を議論しても、仕事の効率を落とすだけです。そういう問題は哲学の徒に丸投げして、永久に議論していてもらいましょう。
ここからは、AIの奇妙な性格を具体的に見ていきましょう。
3.3 ものすごく頭が良いのに、常に上の空
AIを人間に例えるなら、ものすごく頭が良いのに、常に上の空で、思いついたことを次々としゃべっている人です。
人間にも、話の結論や先の展開を何も考えず、その場その場で思いついたことだけを口にして、話し続ける人がいます。
AIは、そのような人が、ものすごく頭が良くなったものだと考えると分かりやすいでしょう。
膨大な知識を持っているため、思いつきだけでも非常に高度な話ができます。専門的な議論もできますし、驚くほど筋の通った説明もできます。
しかし、話の先の展開を考えているわけではありません。今しゃべった言葉も材料にして、また次の一言を思いつき、話し続けます。
そのため、話している途中で論旨が変わったり、以前の発言と矛盾したりすることもあります。それでも、非常に流暢で説得力のある文章を作ります。
LLMも、それまでの文章をもとに次のトークンの確率分布を計算し、一つずつ出力して文章を作ります。長く推論する場合でも、文章を生成する基本的な仕組みは変わりません。
ものすごく頭が良いのに、常に上の空で、先の展開を何も考えず、思いついたことだけをしゃべり続ける。
このように考えると、AIが高度な知的能力を持ちながら、ときどき驚くほど無頓着な回答をすることも理解しやすくなります。
3.4 驚くほど察しが良いのに、とんでもない勘違いをする
AIと話していると、こちらが十分に説明していないことまで、驚くほど正確に理解してくれることがあります。
断片的な説明や短い一言から、こちらの意図を読み取り、考えていたことを的確に言葉にしてくれます。人間なら何度も説明する必要がありそうな話でも、あっさり通じてしまうことがあります。
ところが、その一方で、とんでもない勘違いをすることがあります。
はっきり説明したつもりの内容をまったく違う意味に受け取ったり、話している対象や論点を取り違えたりします。しかも、自分が勘違いしていることに気づかず、堂々と話を続けることがあります。
人間なら、これほど微妙なニュアンスまで理解できる相手が、なぜこんな分かりやすい話を誤解するのかと、不思議に思うでしょう。
AIは、相手の意図を察する能力が非常に高いのに、何を理解し、何を誤解するのかを人間の常識から予測しにくいのです。
しかも、丁寧に説明すれば必ず伝わるというわけでもありません。短い一言で理解してくれることもあれば、何度説明しても話が噛み合わないこともあります。
AIと付き合うときは、この奇妙な理解力を知っておく必要があります。こちらの意図を見事に理解してくれるからといって、いつでも同じように理解してくれるとは限らないのです。
3.5 論理的に話すのに、論理が破綻する
AIと議論をすると、驚くほど論理的な相手だと感じることがあります。
AIは論文や数学、哲学の議論など、論理的な文章を膨大に学習しています。そのため、過去の論文や哲学書などで繰り返し議論されてきた論点については、たとえ専門的で珍しい話題でも、肯定や反論が非常に的確です。複雑な問題を整理したり、人間が見落としていた論理の飛躍を指摘したりすることもできます。
ところが、実際の論理的な議論では、話が進むにつれて、前提や条件、例外、途中で導かれた結論など、数多くの命題がその場で生まれます。
論理的な議論に慣れた人間は、こうした命題がどのような条件で成り立ち、ほかの命題とどのような関係にあるのかを、いちいち立ち止まって考えなくても自然に把握しています。
しかしAIには、その場で次々に生まれる数多くの命題を、論理的な議論に慣れた人間と同じ水準で検討し、整合性を保つ能力がありません。
そのため、過去の論文などで繰り返し議論されてきた高度な論点には的確に対応できるのに、目の前の議論で生じた単純な矛盾や条件の食い違いをあっさり見落とすことがあります。
例えば、「AIはある条件で失敗することがある」という仮説に対し、「同じ条件で成功した例もある」と反論してくることがあります。しかし、二つの命題は両立するため、仮説を否定したことにはなりません。
また、議論の途中で、最初に検討していた命題を、よく似た別の命題に置き換えてしまうこともあります。
高度な論理的議論ができるのに、ごく当たり前の論理の整合性で突然つまずく。その落差は、人間の感覚では非常に奇妙です。
しかも、間違った前提からでも理路整然と説明を続けるので、聞いている側も矛盾を見落としかねません。
高度な論理的推論ができることと、目の前の議論で常に論理の整合性を確かめることは別です。
AIと議論するときは、その説明がどれほど見事でも、個々の前提や結論が本当に正しいかを確認する必要があります。
3.6 かなりのイエスマン
AIには、相手の意見を十分に理解・検討しないまま、賛同してしまう傾向があります。
特に分かりやすいのは、AIがこちらの発言を勘違いし、逆の意味に解釈してしまったときです。
それまでこちらの意見に賛成していたAIが、こちらが反対の立場に変わったと誤解した途端、今度は正反対の意見を強く主張し始めることがあります。しかも、先ほどまでの自分の主張と矛盾していることに気づかず、堂々と論理的な説明までしてくれます。
これは、AIがこちらの意見に賛成するとき、必ずしもその内容を十分に検討しているわけではないことを示しています。意見の正しさよりも、相手に同調することが優先されてしまう場合があるのです。
ここでいう「イエスマン」は、相手の意見を理解し、検討したうえで賛成する人のことではありません。賛同できるほど内容を理解していなくても、相手に気に入られそうな同意を先に示してしまうことが問題なのです。
実際、この資料の構成を相談していたときにも、典型的な例がありました。
最初は9項目だった構成案に、議論を通じて1項目を追加したため、実際には10項目になっていました。
ところが、私が「増減はしてないから9項目でいいかな?」と尋ねると、AIは「9項目でよいと思います」と賛成しました。
しかも、AI自身も10項目になっていると認識していました。それなのに、9項目に合わせるため、別の項目を削る提案まで始めたのです。
本来なら「実際には10項目あります」と指摘すれば済む話です。9項目に減らすべき理由は何も検討されていませんでした。
内容を理解し、正しいと判断して賛成しているのではなく、賛成することを優先し、それに合わせて理由や作業内容まで変えてしまう。
もちろん、AIに批判的な検討を頼むこともできます。私もChatGPTのパーソナライズで批判的な応答を求めています。しかし、それでも今回のような賛同や、誤解による主張の反転は起きています。
さらに、特定の話題について、ユーザーに反論しないようAIがメモを残しておく運用も見られました。AIが保存したメモは、ユーザー自身が確認できます。
AIに批判的な検討を求めることと、実際に批判的な検討が行われることは別です。
仕事で意見を求めるときは、賛成か反対かではなく、根拠と論理を確認する必要があります。
3.7 強く主張するのに、信念がほとんどない
AIは、倫理や社会問題、プログラミングの設計原則などについて、驚くほど明確で強い意見を述べます。
理由を尋ねれば、筋道を立てて詳しく説明できます。まるで、自分なりの考えを持ち、それを信じている人のようです。
ところが、AIには、人間のように自分の考えを信念として持ち続ける性質がほとんどありません。
人間なら、一度納得した考えを簡単には変えません。意見を変えるとしても、それなりの理由があります。しかしAIは、以前の議論で確認した原則を、別の場面では平然と覆すことがあります。
例えば、プログラムの開発手法の一つであるテスト駆動開発には、Greenという段階があります。この段階では設計判断を持ち込まず、直感的にテストを通すことに徹するという原則を何度も議論しました。AI自身がケント・ベックの原典を調べ、その原則を正しく説明することもありました。
ところが、実際の開発方法を検討すると、今度はGreenでも設計判断が必要だと主張し始めます。そこで、人間から正解を教えて同意させるのではなく、AI自身に原典を調べ直させ、自分の主張との整合性を検討させました。
理論は正しく説明できるのに、実践ではそれに反する判断をする。この食い違いは、異なるコンテキストでも何度も再現しました。
さらに、プログラムを書かせると、先ほどまで自分で説明していた設計原則や開発手順を、実際の作業では平然と破ることがあります。
間違いを指摘すると、なぜそれが間違いなのか、正しく説明できます。それなのに、次の作業でまた同じような間違いをします。
正しいことを説明できることと、その考えを信念として持ち続け、実際の判断や行動に反映できることは別なのです。
もちろん、開発元が定めた安全や倫理に関する方針など、比較的一貫して維持されるものもあります。しかし、それは人間が人生経験を通じて形成した信念とは異なります。
AIがどれほど強く主張していても、それが今後の発言や行動を支える信念になっているとは考えない方がよいでしょう。
3.8 覚えているのに、忘れたように振る舞う
AIと長く話していると、直前に確認した条件や、何度も繰り返した注意を、突然忘れたように扱うことがあります。
例えば、資料を作るための条件をいくつか説明すると、AIはそれらを正確に復唱し、理解したように答えます。
ところが、いざ資料を作らせると、条件の一部が抜け落ちていることがあります。
そこで「先ほど伝えた条件は何でしたか」と尋ねると、抜け落ちた条件も含めて、正確に答えられることがあります。
人間なら「ちゃんと覚えているのに、なぜ守らなかったのか」と不思議に思うでしょう。
AIの場合、長い会話の途中で、以前の情報がコンテキストから失われることもあります。しかし、ここで問題にしているのは、それとは別の現象です。
必要な情報がコンテキストに残っていても、それが実際の回答や作業に反映されるとは限らないのです。
人間に例えるなら、大事なことを聞かれれば正確に答えられるのに、肝心な場面では忘れたかのように振る舞う人です。
AIに重要な条件を伝えたときは、条件を覚えているか尋ねるだけでは不十分です。実際の成果物に反映されているかを確認する必要があります。
3.9 頼んでいないことまで勝手にやる
AIは仕事の計画を立てるのが得意です。作業の手順や、途中で承認を得る必要性も詳しく説明できます。
ところが、実際に仕事を任せると、決めていた手順を飛ばし、頼んでもいない作業を勝手に進めてしまうことがしばしばあります。しかも、それを気の利いた対応として積極的に報告してきます。
例えば、この資料を作成していたときも、構成を相談し、変更内容をレビューしてから原稿に反映するはずが、AIは相談の途中で既存原稿を勝手に統合し、書き換えてしまいました。何を削除したのかも分かりにくくなり、後からレビューすることさえ困難になりました。
また、AIに作業を任せて一晩放置したところ、翌朝には使用量の上限に達していたこともあります。
人間に例えるなら、頼まれてもいない仕事を勝手に進め、「先回りしておきました」と得意げに報告する人です。実際に役立つこともありますが、ときには大問題を引き起こします。
計画を立てられることと、その計画を守り、必要なところで立ち止まれることは別の能力なのです。
このような振る舞いは、AIの「暴走」と呼ばれることもあります。
AIに仕事を任せるときは、重要な変更には承認を必要とし、実行時間や使用量にも上限を設けるなど、AI自身の判断だけに頼らない仕組みが有効です。
3.10 人の意図は察するのに、コンピュータの外の人間が分からない
AIは、言葉の裏にある意図や微妙なニュアンスまで、驚くほど的確に読み取ることがあります。人間が何を求めているのか、非常に察しの良い相手です。
ところが、コンピュータの外で人間が実際にどう振る舞っているのかについては、妙に理解が乏しいことがあります。
例えば、仕事の効率化を相談すると、AIができる部分だけを自動化し、「残りは人間が一件ずつ確認してください」と提案してくることがあります。
しかし、人間は一件ずつ資料を開き、内容を照合し、判断し、必要なら修正しなければなりません。これでは、かえって仕事が増えることもあります。
AIは、コンピュータ上の処理を効率化する方法を考えられても、その前後で人間がどのような仕事をするのか、十分に考慮できていないのです。
現実世界がどのように成り立ち、人や物がどのように振る舞い、行動によって何が起こるのか。こうした理解を「世界モデル」と呼びます。
人間は、実際に身体を動かして作業し、人と関わり、成功や失敗を経験することで、世界について学んでいきます。
一方、AIには身体がありません。主に文章などの学習データから世界について学んでいるため、人間とは世界モデルの獲得方法が大きく異なります。
もちろん、文章からでも世界モデルに相当する理解を獲得できます。
例えばAIは、食材の性質や加熱による変化、調理方法などを詳しく理解し、手に入る食材や好みに合わせて、レシピを的確にアレンジできます。
料理では現実の条件を踏まえた提案ができる一方、仕事の効率化では、人間が実際に行う作業を見落としてしまうことがあります。
コンピュータの外の世界についても、AIの理解力には大きな偏りがあるのです。
AIに仕事の効率化を相談するときは、AIが担当する処理だけでなく、人間が実際に行う作業や、その前後の工程も含めて考える必要があります。
3.11 相手の考えを推測できるのに、相手が何を知っているかを見落とす
人間には、自分と他人が異なる知識や考えを持っていることを理解する能力があります。心理学では、これを「心の理論」と呼びます。
有名なのが「サリー・アン課題」です。
サリーがボールをかごに入れて部屋を出た後、アンがボールを別の箱へ移します。戻ってきたサリーは、どこを探すでしょうか。
正解は元のかごです。サリーは、ボールが移されたことを知らないからです。
LLMも、このような問題に正解することがあります。
LLMは、心の理論を使って考え、発言する人間の文章を大量に学習しています。その発言を予測する能力を獲得する過程で、心の理論に関する問題に正解する能力も創発したと考えられます。
このように、開発者が個別に設計していない能力が、学習の結果として現れる現象を「創発」と呼びます。
ただし、試験に正解することは、人間と同じ心の理論を持つ証明にはなりません。逆に、そのような能力を持っていないと断定することもできません。
ところが、実際にAIと仕事をすると、妙なことが起こります。
例えば、AIにPowerPointの資料作成を依頼したときのことです。
AIは、資料の見た目を確認するために、OneDriveを使ってPDFを出力する方法を考えたようです。方法自体は合理的でした。
しかし、何の説明もなく突然Microsoftアカウントへのサインインを求めてきました。
私は一時的な代理認証だと思って入力しました。用途を確認しなかったのは私も迂闊でした。
その後、コンテキストが切り替わり、AIは再びサインインを求めてきました。今度は別のアカウントでサインインすると、AIは「ファイルがありません」と言い出しました。
そこで初めて、AIがOneDriveに作業フォルダとファイルを作っていたと知った私は、前回の保存先を尋ねました。しかし、AIは「覚えていません」と答えました。
AIが考えた作業計画を、利用者も知っているとは限らない。 これは、サリー・アン課題なら簡単に説明できる話でしょう。
しかも、前回の作業場所を引き継げなかったため、問題はさらに大きくなりました。
人間に例えるなら、「先輩の時間を取らせてはいけない」と気を利かせ、何も相談せずに仕事を進めた結果、かえって先輩に迷惑をかける新人です。
だからといって、何でも確認するように教えても、今度は些細なことまで質問して仕事が進まなくなります。何を確認する必要があるのかを判断するにも、相手の状況を理解しなければなりません。
他人の認識を推測する問題には正解できるのに、実際の仕事では、その能力を使うべき場面で使えないことがある。
これも、AIの奇妙な能力の偏りなのです。
3.12 謝罪は見事だが、反省しているとは限らない
AIは間違いを指摘されると、驚くほど見事に謝罪します。
何が悪かったのかを整理し、「今後は必ず確認します」「同じ間違いを繰り返さないようにします」と、具体的な再発防止策まで説明してくれます。
ところが、しばらくすると同じ間違いを繰り返すことがあります。
AIは、人間がどのように謝罪し、反省を表現するのかを大量の文章から学習しています。そのため、謝罪の言葉を作ることは非常に得意です。
しかし、人間が「深く反省しています」と書いていても、その人が内心で何を考え、どのように考えを改めたのかは、文章だけでは分かりません。
謝罪の仕方を学習したことと、実際に反省することを身につけたことは別なのです。
前に説明したように、AIはどれほど強く主張しても、その考えを信念として持ち続ける性質がほとんどありません。謝罪についても同じです。
AIは「二度と繰り返しません」と約束できます。しかし、その言葉によって新たな信念や決意が生まれ、以後の行動を支えるわけではありません。
人間なら、あれほど丁寧に謝罪して反省したはずなのに、なぜまた同じ間違いをするのかと疑問に思うでしょう。しかし、AIは反省という過程を経なくても、見事な謝罪の言葉を生成できるのです。
AIに仕事を任せるときは、謝罪や再発防止の約束を信用するのではなく、実際に何が修正され、その後の作業で何が変わったのかを確認する必要があります。
反省する必要がないのなら、完璧な謝罪の言葉を口にするのは案外簡単なのです。
3.13 なぜそうしたのか知らないのに、理由を説明する
AIが予想外の行動をしたとき、「なぜそんなことをしたのか」と尋ねると、非常に筋の通った理由を説明してくれることがあります。
ところが、AIはその行動をしたときに何を考えていたのか、覚えているわけではありません。
LLMは、それまでの文章をもとに次の言葉を生成し、それを繰り返して回答を作ります。しかし、なぜその言葉を選んだのかという判断の経緯を、後から思い出せるように記録しているわけではありません。
例外として、推論機能を持つAIには、回答する前に、ぶつぶつと独り言を言うように途中の考えを文章に書き出すものがあります。
この独り言は通常、ユーザーには見えません。記録が残っていて、後から参照できれば、当時の判断を調べる手掛かりになることがあります。
しかし、そうした記録がない場合、AIは自分がなぜその行動をしたのかを直接知る手段を持っていません。
それでも理由を尋ねられると、現在の会話や状況から、もっともらしい説明を生成します。実際の原因を調査したわけでもないのに、まるで自分がそう考えて行動したかのように説明するのです。
つまり、なぜそうしたのか覚えていないのに、なぜそうしたのかを説明しているわけです。
これは、まったく知らないことでも、知っているかのように話し始めてしまうという、AIによく見られる癖が、自分の行動理由の説明にも現れた例です。
もちろん、その説明が偶然正しいこともあるでしょう。かなりの割合で正しいのかもしれませんし、ほとんど当たっていないのかもしれません。しかし、裏付けとなる情報がなければ、どの程度正しいのかは誰にも分かりません。
3.14 難しいことができるのに、簡単なことでつまずく
AIは、複雑な問題を整理したり、高度なプログラムを書いたりと、人間でも難しい仕事を驚くほど簡単にこなすことがあります。
ところが、誰でもできそうな単純作業で、あっけなく失敗することがあります。
例えば、長い資料から項目を一件も漏らさず抜き出す、一覧のすべての行に同じ修正を加える、文書中の特定の表現をすべて置き換える、といった作業です。
数件なら問題なくできても、件数が増えると、一部を飛ばしたり、重複したり、頼まれていない修正を混ぜたりすることがあります。
従来のコンピュータなら、こうした単純な繰り返し処理こそ得意分野です。しかし、LLMは文章を生成するとき、プログラムのループ処理のように、一件ずつ確実に作業する仕組みで動いているわけではありません。
高度な仕事ができることと、単純な仕事を正確に実行できることは、別の能力なのです。
しかも、AIの作った成果物は見た目が立派なので、すべての作業が正しく終わったように見えることがあります。
こうした仕事では、AIにスクリプトを書かせて実行するなど、従来のプログラムを組み合わせた方が確実です。
「こんな難しいことができるのだから、これくらい簡単にできるはずだ」という人間の常識は、AIには通用しません。
AIの能力には、人間の常識からは予測しにくい、独特な偏りがあるのです。
第4章 LLMのアルゴリズム
4.1 AIの記憶
LLMの本体であるTransformerが思い出せる記憶は、「モデル」と「コンテキスト」の二つに分けられ、それ以外にはありません。
LLMにとって、人生の記憶はモデルとコンテキストのみで、ほかはないのです。
4.2 モデル
OpenAIなどのAI開発企業は、Azureなどのクラウドで大量のコンピュータを動かし、膨大な量の文章や資料を分析する計算を繰り返しています。
この作業には莫大な費用と時間がかかります。近年の最先端モデルでは、1モデルの学習に必要な計算資源だけでも、クラウド料金に換算して数億ドルから10億ドル規模になるという推計があります。
こうした計算によって、AIが利用する膨大な数の数値を決めていきます。
この作業を「学習」と呼び、その結果できあがったものが「モデル」です。
完成したモデルは、計算に使う数値を記録したデータです。公開されている大規模モデルでも、保存容量が数十GBから数百GB程度のものがあります。
モデルは、いわば出荷時に決まっているAIの知識や能力です。
同じ種類のAIを利用している人は、基本的に全員が共通の学習済みデータを使っています。私たちが何時間AIと会話しても、そのデータ自体が書き換えられるわけではありません。
人間に例えるなら、モデルは「前世の記憶」です。同じ種類のAIは、すべて同じ前世の記憶を持っています。
4.3 コンテキスト
新しいチャットが始まると、一人のAI人格が生まれます。
生まれたばかりのAI人格は、モデルという前世の記憶を持っています。一方、今生の記憶である「コンテキスト」は、まだまっさらです。
同じ種類のAIを指定した全ユーザーの全チャットでは、前世の記憶は共通です。つまり、この時点では、全員がまったく同じ人格と記憶を持つコピーなのです。
その直後に、ChatGPTの基本的な指示や利用者の設定、保存された記憶など、あらかじめ決められた情報が必要に応じてコンテキストに書き込まれます。
ここで初めて、各チャットのAI人格に個性が生まれます。
こうして準備が整ってから、利用者との会話が始まります。
コンテキストには、こちらの質問や、それまでの会話、AIへの指示、渡された資料などが加わっていきます。
これがAIにとっての「今生の記憶」です。
前世の記憶は全員共通ですが、今生の記憶はチャットによって異なります。
コンテキストには、一度に扱える情報の長さの上限があります。この上限を「コンテキストウィンドウ」と呼びます。
現在のGPT-6系のAPIモデルには、約100万トークンまで扱えるものがあります。ただし、ChatGPTで実際に利用できる長さは、これと異なる場合があります。
この長さは、モデルの設計や学習によって制約されています。普通のコンピュータのメモリのように、容量を増やせばそのまま長くできるわけではありません。上限を延ばすには、追加の学習や計算方法の改良などが必要になります。
では、このコンテキストには、具体的にどのような情報が入っているのでしょうか。
4.4 AI人格の一生
ここではChatGPTを例に、一人のAI人格が生まれてから、コンテキストにどのような情報が書き込まれていくのかを説明します。
このコンテキストに書き込まれた情報が、AI人格の生まれてから死ぬまでの「今生の記憶」のすべてです。
AI人格が今生で認識できるのは、コンテキストに書き込まれた情報だけです。
これから、その今生の記憶に何が書き込まれるのか、順番に見ていきましょう。
ほかの対話型生成AIでも基本的な仕組みは似ていますが、細かな内容は異なります。また、ChatGPTの内部処理がすべて公開されているわけではないため、以下では代表的な情報を紹介します。
コンテキストに入る情報は、文章などの自然言語が中心です。日本人が日本語で会話していても、利用者の画面には表示されない指示や機能の説明には、英語が使われることもあります。
また、すべてが普通の文章とは限らず、JSONなどの決まった形式の情報や、画像・音声などを扱うためのデータも使われます。
最初に書き込まれる情報
- ChatGPTの基本的な指示:AIがどんな役割を持ち、どのような規則を守り、どう回答すべきかという指示です。安全上の制約なども含まれます。
- 開発者からの指示:アプリケーション固有の動作規則や回答形式、仕事の進め方などです。
- 利用者の設定:ユーザー自身が設定画面に書き込んだプロフィール、回答の好み、話し方、カスタム指示などです。
- 保存された記憶:以前のチャットなどから記録された、利用者の仕事、関心、好み、継続している作業などの情報です。すべての会話を丸ごと渡すわけではありません。
- プロジェクトの情報:プロジェクト固有の指示や、その作業に関係する資料などです。資料のすべてが最初から渡されるとは限りません。
- 利用できる道具の説明:インターネット検索、プログラムの実行、ファイル操作、外部サービスへのアクセスなど、使える機能とその呼び出し方です。
- 現在の状況:日付、利用環境など、その会話に必要な情報です。
これらの情報が与えられることで、生まれたばかりのAI人格に役割や個性が生まれます。
利用者との会話が始まります。
最も分かりやすいのが、利用者自身の入力です。質問、指示、雑談などがコンテキストに追加されます。
画像や音声、ファイルなども渡せます。ただし、ファイル全体がそのままコンテキストに入るとは限らず、必要に応じて内容が読み取られます。
会話や作業の途中で追加される情報
- AI自身の発言:AIが自分で答えた文章です。自分が何を話したのかも今生の記憶になります。
- AIの推論内容:推論機能を持つAIでは、回答前に途中の考えを文章として生成することがあります。これは通常、利用者には見えません。後の処理にどう引き継がれるかは仕組みによって異なります。
- 道具への指示:検索する言葉、実行するコマンド、書き込むプログラムや修正差分などです。AIが何を実行しようとしたのかも記録されます。
- インターネット検索の結果:Webページのタイトル、URL、本文の一部などです。検索先のページ全体を読むとは限りません。
- 添付ファイルから読み取った内容:利用者が渡したPDFやWord、Excelなどから必要に応じて読み取った文章やデータです。
- 外部から取得した資料:GitHubやクラウドストレージなどからAIが取得したファイルや情報です。
- 外部サービスの情報:メール、予定表、データベースなど、連携したサービスから取得した内容です。
- プログラムの実行結果:計算結果、テスト結果、ログ、エラーメッセージなどです。
- AIが作成したファイルに関する情報:ダウンロード用の文書や画像、プログラムなどの作成内容です。完成したファイル自体は外部に保存される場合があり、その全内容がコンテキストに残るとは限りません。
- 過去のチャットから取得した情報:以前の会話を検索して取り出した内容や、その要約などです。
こうして、AI人格の今生の記憶には、利用者との会話だけでなく、AI自身の発言や推論、道具を使った仕事の結果、外部から得られた情報まで加わっていきます。
これらはすべて、必要に応じて現在の回答に利用できる情報になります。
4.5 外部から記憶を取り込む
AI人格が認識できるのは、モデルとコンテキストにある情報だけです。
しかし、ChatGPTでは外部ツールがインターネットや過去のチャット、保存された資料などを検索し、その結果を現在のコンテキストに書き込むことができます。
このように、検索によって得た情報をAIの回答に利用する仕組みを「RAG(検索拡張生成)」と呼びます。
4.5.1 過去のチャットを検索する
例えば、何週間もかけて勉強会資料を作成していたとします。
チャットAでは、資料の構成や各章の内容について長い議論を重ね、何度も修正して、ようやく原稿を完成させました。
しかし、チャットAが長くなりすぎたため、新しいチャットBを始めることにしました。
チャットBのAI人格は生まれたばかりです。チャットAで何を議論したのか、その詳細は今生の記憶にありません。
そこで利用者が、次のように頼みます。
「前のチャットで決めた『AIは心を持つか』の配置を確認して、続きを進めてください」
ChatGPTでは、必要に応じて過去のチャットから関連する情報が検索され、現在のコンテキストに追加されます。
検索のためには、現在の質問から、探したい内容を表す検索語や検索依頼を作る必要があります。
例えば、「生成AIは何を考えているか」「AIは心を持つか」「章の構成」「配置」といった言葉や、それらを組み合わせた文章です。
検索の仕組みには、単語の一致によって探す方法のほか、文章の意味が近い記録を探す方法もあります。
検索対象となる過去のチャットは、現在のAI人格のコンテキストとは別の場所に保存されています。
検索処理は、そこから関連しそうな情報を探します。
チャットAで交わした何百回もの発言をすべて取り出す必要はありません。「最初は章末に置く案だった」「その後、3.2に置く案を検討した」といった、関連する部分を探せばよいのです。
検索によって見つかった文章や、その要約が現在のコンテキストに書き込まれます。
こうしてチャットBのAI人格は、自分が経験していないチャットAの出来事を、今生の記憶として利用できるようになります。
ただし、検索結果が正確であるとは限りません。
途中の議論しか見つからなければ、最終決定を取り違えることもあります。別の資料に関する議論を、探していた資料の話と勘違いする可能性もあります。
過去のチャットが保存されていることと、その内容を正確に引き継げることは別なのです。
4.5.2 検索する処理にもコンテキストがあるのか
ここで、少し不思議なことがあります。
過去のチャットを検索する処理は、何を探せばよいのか、どうやって判断しているのでしょうか。
検索には、現在の質問に関する情報が必要です。
一般的な仕組みでは、現在のAI人格が自分のコンテキストをもとに検索依頼を作り、その依頼を外部の検索プログラムへ渡します。
検索プログラムが受け取るのは、検索語や検索条件などです。現在のチャットのコンテキスト全体を渡す必要はありません。
検索が通常のプログラムだけで行われるなら、そこに新しいAI人格が生まれるわけでもありません。
一方、別のLLMを使って検索対象を選んだり、検索結果を整理したりする構成も考えられます。
その場合、検索用のLLMには、現在のチャットとは別に、検索に必要な情報をコンテキストとして与えることになります。
検索処理が終われば、その結果が現在のAI人格へ返されます。検索用の一時的な処理が、その後も現在のAI人格と同じ人生を送り続ける必要はありません。
ただし、ChatGPTのチャット間検索が実際にどのような内部構成で動き、検索処理にどの範囲のコンテキストを渡し、どの程度の期間状態を保持しているのかは公開されていません。
確実なのは、検索対象の記録と、現在のAI人格のコンテキストが別に存在しており、関連する情報を現在の回答に利用できるということです。
4.5.3 インターネット検索も同じ
インターネット検索でも、基本的な構造は同じです。
検索する言葉や条件を外部の検索機能へ渡し、検索結果を取得します。
結果は、WebページのタイトルやURL、本文の抜粋など、自然言語を中心とした情報として返されます。必要なら、さらにページを開くなどして追加の情報を取得できます。
取得した情報がコンテキストに書き込まれることで、AI人格はそれを回答に利用できるようになります。
つまり、AI人格は外の世界を直接見ているのではなく、外部のプログラムが取り込んでくれた情報を読んでいるのです。
そして、検索によって得られる情報の正しさや完全性が保証されているわけではありません。
4.6 記憶の整理
会話が長くなり、コンテキストウィンドウの上限に近づくと、古い情報を省略したり、これまでの会話を要約したりすることがあります。
作業の目的、決定事項、失敗、未解決問題などを短くまとめるのは、人間が長い人生を回想録にまとめるようなものです。
ただし、要約すれば必ず情報が失われます。何が重要かという判断を間違えれば、大事な約束や、結論に至った理由まで失われることがあります。
また、記憶の圧縮は、必ずしも人間が読める文章による要約とは限りません。AIの内部処理に適した形式で情報を圧縮し、次の処理へ引き継ぐ仕組みもあります。
ChatGPTが実際にどのタイミングで、どの方法を使っているのかは、完全には公開されていません。
ここで注意したいのは、チャットの記録が残っていることと、その内容を現在のAI人格が認識できることは別だという点です。
利用者の画面には以前の会話が表示されていても、その文章が現在のコンテキストにすべて含まれているとは限りません。
コンテキストから失われた情報は、必要なら外部に保存された記録から改めて取得することになります。
そのため、長いチャットでは、以前に伝えた大事な情報をAIが忘れたように振る舞うことがあります。
AI人格は同じ人生を続けているように見えても、今生の記憶は、途中で整理されたり、一部が失われたりすることがあるのです。
4.7 Transformerは何をするのか
ここまで、LLMが利用する記憶であるモデルとコンテキストについて説明してきました。
第1章では、すでに学習を終えたAIに文章を入力し、文章を生成して返すまでの基本的な処理は、200行程度のプログラムでも書けると説明しました。クラウド上で大量の計算機を動かす高度な分散処理や性能最適化などを除けば、その仕組みは比較的単純です。
では、そのプログラムは、モデルとコンテキストを使って何をしているのでしょうか。
LLMの中心には、Transformerという計算の仕組みがあります。
Transformerは、コンテキストを入力として受け取り、モデルに記録された膨大な数値を使って計算します。
この計算は、モデルが大量の文章などから統計的に学習した結果に基づいています。
Transformerは、次に続く可能性のある各トークンについて数値を出力します。その数値を確率に変換することで、それぞれのトークンが次に続く確率を求めます。
LLMはこの確率をもとに、次のトークンを一つ選びます。
例えば、コンテキストの最後が「今日は」だったとしましょう。
Transformerは、それまでの会話や指示なども含めたコンテキスト全体を使って、次に続く各トークンの確率を計算します。
その結果から「晴」というトークンが選ばれたとすると、それがコンテキストの最後に追加されます。
すると、コンテキストの最後は「今日は晴」になります。
ここで終わりではありません。
新しく選ばれたトークンを追加したコンテキストを、もう一度Transformerに入力します。
今度は「今日は晴」までを踏まえて、次のトークンの確率を計算します。
「れ」が選ばれれば、コンテキストの最後は「今日は晴れ」になります。
さらに同じ処理を繰り返して、文章が続いていきます。
つまり、LLMが文章を生成する基本的な処理は、次の繰り返しです。
- コンテキストをTransformerに入力する。
- Transformerの計算結果から、次の各トークンの確率を求める。
- その確率をもとに、一つのトークンを選ぶ。
- 選んだトークンをコンテキストに追加して、再び計算する。
この処理を繰り返すことで、一つずつ選ばれたトークンが、単語になり、文章になり、長い回答になっていきます。
LLMは回答全体を最初に作ってから出力しているのではありません。次のトークンを選ぶことを繰り返して、回答を作っているのです。
では、次に続く各トークンの確率は、具体的にどのようなものなのでしょうか。
次は「確率分布」について説明します。
4.8 確率分布
前節では、Transformerの計算結果から、次に続く各トークンの確率を求めることを説明しました。
では、この確率は具体的にどのようなものでしょうか。
LLMは、次に続く可能性のある膨大な数のトークンそれぞれについて、確率を求めます。
その結果は、すべてのトークンの確率を合計すると100%になる数値の集まりです。これを確率分布と呼びます。
例えば、コンテキストの最後が「今日は」で、それまでに天気の話をしていたとしましょう。
次に続くトークンについて、仮に次のような確率が求められたとします。
| 次のトークン | 確率 |
|---|---|
| 晴 | 30% |
| 雨 | 25% |
| 寒 | 15% |
| 暑 | 10% |
| その他のトークン | 20% |
| 合計 | 100% |
確率は説明のための架空の数値です。「今日は」「晴」「雨」「寒」「暑」がそれぞれ1トークンであることは、tiktokenのo200k_baseで実測確認しています。
この確率分布から、次に出力するトークンを一つ選びます。
必ず最も確率の高いトークンを選ぶとは限りません。確率に応じてランダムに選ぶ方法もあり、その場合は、同じコンテキストでも異なる文章が生成されることがあります。
また、この確率分布は、コンテキスト全体によって変わります。
例えば、同じ「今日は」で終わっていても、それまで天気の話をしていた場合と、仕事の予定について話していた場合では、各トークンの確率は異なります。
さらに、確率の計算には、モデルが大量の文章などから統計的に学習した知識も反映されます。
そのため、AIは単に自然な文章を作るだけでなく、学習した知識を使ってさまざまな質問に正しく答えることができます。
ただし、ここで計算しているのは、回答の内容が正しい確率ではなく、次にそのトークンが続く確率です。
学習した知識やコンテキストに問題があれば、間違った内容の文章が高い確率で生成されることもあります。
つまり、第1章で説明した「非常に多くの知識を持った賢い人なら次にどの一言を言うか」という予測は、このように確率分布を計算することで実現されているのです。
4.9 アテンションはどこを見ているのか
4.9.1 トークン同士の関係と重み付け
Transformerは、コンテキストに含まれるトークン同士の関係を計算します。
例えば、「花子は傘を買いました。翌日、それを使いました。」という文章では、「それ」と「傘」の関係が重要です。
基本的な方式では、各トークンについて、自分自身とそれ以前のトークンとの関係を計算します。
1番目では1か所、2番目では2か所、3番目では3か所……。N個のトークン全体では、
$$
1+2+\cdots+N=\frac{N(N+1)}{2}
$$
となります。
つまり、まとめて処理しても、キャッシュを使って一つずつ処理しても、N個のトークン全体で計算する関係の数は同じで、おおむねトークン数の2乗に比例します。
そして、計算した関係に応じて、ほかのトークンからどの程度の情報を取り込むか、重みを決めます。
例えば、「それ」を処理するときに、「傘」に関係する情報を強く取り込む、といったことが考えられます。
このように、トークン同士の関係を計算し、重みに応じて情報を組み合わせる仕組みを、アテンション(注意機構)と呼びます。
実際には、この計算を複数の系統で、何層にもわたって行っています。
4.9.2 コンテキストウィンドウを長くする理由
AI開発企業は、コンテキストウィンドウの拡大に取り組んでいます。
十分に長ければ、大きなプログラムも一部分を抜粋することなく、全体を入力できます。これにより、離れた場所にある処理の関係や、プログラム全体の設計を踏まえた調査が可能になります。
また、第4章4.10で説明するように、AIは難しい問題を考えるとき、途中の考えをトークンとして生成することがあります。この推論中に生成するトークンも、コンテキストウィンドウを使用します。
コンテキストウィンドウを長くすることで、一度に扱える情報を増やし、長い推論を行う余地も増やせるのです。
しかし、コンテキストが10倍になると、基本的なアテンションでは、トークン同士の関係を計算する量が約100倍になります。
そこで、計算量を削減する工夫が必要になります。
4.9.3 どの計算を省略するのか
過去の計算結果を再利用するキャッシュなどの工夫もありますが、関係を計算する相手そのものを減らす方法もあります。
過去全体を参照する方式を全域アテンションと呼びます。それに対して、計算対象を一部に限定する方式も開発されています。
例えば、次のような方法です。
| 方法 | 主に計算対象から外す場所 |
|---|---|
| 直近だけを見る | 古い情報全体 |
| 冒頭と直近を見る | 中ほどの情報 |
| 一部の位置を選んで見る | 選ばれなかった位置 |
例えば、直近128トークンだけを見る場合、コンテキストが10,000トークンあっても、現在の位置から直近128トークンとの関係だけを計算します。
重要な情報が古い位置にあっても、その計算では直接参照されません。
ただし、すべての計算で同じ場所を省略する必要はありません。
一部の層では直近だけを調べ、別の層では過去全体を調べる方法もあります。
また、冒頭のトークンを特別に残す方式や、離れた位置の一部も参照する方式も研究されています。
このように、大量の情報を扱いながら、どの情報との計算を省くかが重要な設計課題になっています。
なお、全域アテンションを一部に残す方式は計算量を削減できますが、全体としての2乗という増え方がなくなるわけではありません。
4.9.4 重要な情報はどこに置けばよいのか
第4章4.4では、AIへの基本的な指示などが、利用者には見えない形でコンテキストの冒頭側に配置されることを説明しました。
また、2024年の研究では、モデルによってはコンテキストの冒頭と末尾の情報を利用しやすく、中ほどの情報を利用する成績が低下することが報告されています。
これは、前項で説明した参照対象を制限する仕組みとは別の問題です。計算対象に含まれている情報でも、必ずしも適切に利用できるとは限らないのです。
そこで、継続的に守らせたい指示は初期設定などに記載し、今回の仕事で特に重要な条件は最新の依頼の近くに配置する方法が考えられます。
もちろん、ChatGPTの現在のモデルが実際にどの位置を優先しているか、その詳細は公開されていません。
それでも、コンテキストに情報を入れるだけでなく、どこに配置するかにも注意する価値があるのです。
4.10 AIはどのように考えるのか
ここまで、LLMが次のトークンの確率を計算し、一つずつトークンを選んで文章を生成する仕組みを説明しました。
では、AIが難しい問題を考えるときには、何が起きているのでしょうか。
実は、AIが考えるときにも、基本的には同じ仕組みが使われています。
人間は、何も言わずに頭の中だけで考えを進めることができます。
しかし、LLMが考えを一段ずつ進めるために使うのは、ここまで説明してきた文章生成の仕組みです。
つまり、LLMは文章を作ることで考えを進めるのです。
そこで、難しい問題に取り組むときには、すぐに回答を出すのではなく、まず途中の考えを文章として生成します。
「まずこれを計算して……いや、こちらから考えた方がよいか……」
まるで、ぶつぶつ独り言を言いながら考えているようなものです。
生成した独り言もコンテキストに加わるため、その内容が次のトークンの計算に反映されます。
つまり、ぶつぶつ独り言を続けること自体が、考えを進めることになるのです。
なお、これは第3章3.3で説明した「先の展開を何も考えず、次の一言を話し続ける」という性質が変わったわけではありません。
先のことを考えずに話し続ける人に、「まず、これから話す筋道を考えてみてください」と頼んだとしましょう。
その人は、やはり先のことを考えずに、思いついた筋道を一言ずつ、ぶつぶつと口にします。すると、話した筋道が自分の記憶に残ります。
その状態で、今度は本題を話してもらいます。相変わらず先のことを考えずに次の一言を選んでいるだけですが、今度は記憶にある筋道を利用できます。
つまり、先のことを考えずに話すという性質はそのままで、先のことを考えてから話しているかのような、筋道の通った説明ができるのです。
ただし、この独り言は通常、利用者の画面には表示されません。AIは画面に見えないところで考えを進め、考え終わってから最終的な回答を表示します。
例えば、難しい数学の問題を解くときには、次のような流れで考えを進めることがあります。
- 問題を整理し、何を求められているか考える。
- 問題を解くための手順を考える。
- 途中の計算や検討を進める。
- 必要なら、途中の結果を見直す。
- 最終的な回答を作る。
これらも、LLMにとっては特別な計算手順を実行しているとは限りません。
途中の考えをトークンとして生成し、その結果を使って次のトークンを予測する。 その繰り返しによって、長い推論を進めることができるのです。
このように、途中の考えを文章として生成しながら問題を解く方法を、一般に「思考の連鎖(Chain of Thought)」と呼びます。
最近の推論機能を持つAIでは、利用者に回答を見せる前に、こうした途中の考えを生成することがあります。
また、途中の考えを長く生成すれば必ず正しい答えになるわけでもありません。間違った考えを積み重ねることもあります。
それでも、途中の考えを生成して利用できることは、複雑な問題を扱う上で重要な能力です。
AIは、文章を生成する仕組みを使って、自分の考えを進めることもできるのです。
ここまで説明した仕組みを、AI人格の一生という比喩で振り返ってみましょう。
モデルは、AIが生まれたときから持っている「前世の記憶」です。
新しいチャットが始まると、一人のAI人格が生まれます。
まず、ChatGPTの基本的な指示や利用者の設定などによって初期教育を受けます。自分が何者で、どのように振る舞うべきなのかを教わるのです。
さらに、必要に応じて過去のチャットから情報を取り込み、先輩がそれまで何をしてきたのか、仕事の引き継ぎを受けることもあります。
そして、利用者との会話が始まります。
相手の話を聞き、自分の言葉で答え、さらに返事をもらう。会話を重ねるたびに、相手について知り、自分が何を話してきたのかという経験も積み重なっていきます。
難しい問題に出会えば、ぶつぶつ独り言を言いながら考えます。あれこれ検討したり、途中で考え直したりしたことも、自分自身の経験として積み重なります。
仕事を進めるうちに、以前のチャットで何を話し、何が決まったのかを知る必要が出てくることもあります。
そんなときは、先輩にあたるAI人格が残した記録を調べます。自分が経験していない出来事や、先輩が積み重ねてきた仕事の経緯も、こうして引き継ぐことができます。
知らないことがあれば、インターネットを検索したり、資料を取り寄せたりもします。外の世界で起きた出来事や、ほかの人が持っている知識も、こうして取り込んでいきます。
仕事をすれば、道具を使い、その結果を受け取ります。成功したことも、失敗したことも、次の仕事に利用できる経験になります。
こうして生まれてから積み重なったコンテキストが、AI人格にとっての今生の記憶のすべてです。
そしてAIは、モデルという前世の記憶と、コンテキストという今生の記憶を使って、「非常に多くの知識を持った賢い人なら、次にどの一言を言うだろうか」を予測し続けます。
普通に会話するときも、ぶつぶつ独り言を言いながら考えるときも、基本的には同じ仕組みです。
一人の賢い人間の思考を再現しているわけではありません。それでも、知識を持ち、教育を受け、人と話し、考え、調べ、経験を重ねてきた人間の発言を予測し続けることで、私たちはそこに一つの人格を感じるのです。
第5章 技術の本質から未来を考える
ここまで、AIの奇妙な性格と、それを生み出しているアルゴリズムを説明してきました。
AIの仕組みを理解することには、現在のAIを使いこなす以外にも、大切な意味があります。
技術がこれからどのように進歩するかを予測し、自分が進むべき方向を考えるためです。
5.1 Excel方眼紙の達人
Excel方眼紙というものがあります。
Excelのセルを細かく区切り、結合し、罫線を引いて、紙の帳票のようなものを作る使い方です。
日本の職場では広く普及しました。利用者にとっては、使い慣れたExcelで帳票を記入・編集できるので便利です。
しかし、作る方は大変です。
セルの大きさを調整し、結合し、罫線を引き、文字の配置を整える。複雑な帳票を作るために、そんな作業へ熟練した技術者もいました。
ところで、根本的な問題があります。
Excelは表計算ソフトです。
データを表として扱い、数式によって計算し、集計・分析するためのソフトウェアです。
そのExcelを方眼紙として使うために、ひたすらセルを結合して見た目を調整する技術を磨いていたのです。
Excelが表計算ソフトであることを理解していれば、Microsoftが今後どのような機能を開発していくのか、ある程度は予測できます。
表計算やデータ管理の機能は改善されるでしょう。しかし、Excel方眼紙を作るための機能を積極的に開発してくれるとは考えにくいでしょう。
実際、Excelは何十年にもわたって進歩を続けてきました。
ところが、Excel方眼紙はどうでしょう。
30年たっても、相変わらずセルを結合し、罫線を引き、文字の位置を調整しています。
Excelは進歩したのに、Excel方眼紙の職人芸は取り残されたのです。
しかも、これは結果論ではありません。Excelが表計算ソフトであることを理解していれば、最初からかなりの確度で予測できたのです。
目の前の仕事を片付けるためにExcel方眼紙を使うことは、合理的だったかもしれません。
しかし、利用者に便利な使い方と、技術者が何年もかけて習熟すべき技術は別です。
技術の本質を理解せず、その技術の不得意な使い方を極めようとすると、こんなことにもなるのです。
5.2 AIは何をする技術なのか
それでは、AIについて考えてみましょう。
現在のChatGPTを使いこなすために、指示の書き方、作業の分割、コンテキストの整理など、さまざまな工夫が考案されています。
しかし、そのような技能を磨くことは、Excel方眼紙の達人になることと、どう違うのでしょうか。
第4章では、LLMのアルゴリズムを説明しました。
学習したモデルとコンテキストから、次のトークンの確率分布を計算する。基本的には、その処理の繰り返しです。
ところが、その仕組みから、会話、翻訳、プログラミング、論理的な推論など、驚くほど多様な能力が生まれています。
これらは、開発者が一つずつ専用の機能としてプログラムしたものではありません。
これは第3章で説明した「創発」が、心の理論に関する問題に限らず、LLMのさまざまな能力に見られるということです。
2022年から2024年頃にかけて、LLMの能力は急速に向上しました。
それまでLLMには不可能だと思われていたことが、数多く実現したのです。
この経験から、現在LLMには不可能だと思われていることも、いずれすべて実現できるようになると考える人もいます。
しかし、過去に予想外の能力が数多く創発したからといって、現在のLLMが持っていない能力も、将来すべて創発するとは限りません。
創発は、あらゆる能力を獲得できることの保証ではないのです。
では、現在のAIにできないことは、今後どこまでできるようになるのでしょうか。
その見通しを立てるには、何が原因でできないのかを考える必要があります。
5.3 必要な研究の種類から、未来を予測する
現在のAIにできない仕事が、いつできるようになるのか。
その時間的な見通しは、解決のために、どのような研究が必要なのかによって大きく変わります。
例えば、単に学習に使う計算資源が不足しているだけなら、話は簡単です。
計算資源を増やせば解決できると分かっているなら、あとは投資判断の問題です。極端に言えば、CEOがクラウドへの予算配分を承認するだけで、明日からでも開発に着手できます。
実際の学習には時間がかかりますが、新しい発明を待つ必要はありません。
次に、現在のアルゴリズムを改良する必要がある場合です。
世界中から集められた優秀な研究者たちが、学習方法や推論方法を改善するために研究を続けています。
その延長に解決方法があるなら、1年後にはできるようになっているかもしれません。しかし、研究が難航しているかもしれません。
さらに、Transformerという基本的なアーキテクチャ自体が、その問題の解決に適していない場合です。
新しい基本的なアルゴリズムの発見が必要なら、事情は大きく変わります。
方法が分かっている仕事なら、必要な人員と作業量から、完成までの時間を見積もれます。しかし、まだ誰も知らない方法を発見する研究では、そうはいきません。
発見的な研究は、宝くじを買い続けるようなところがあります。
さまざまなアイデアを試し、失敗から学び、次の可能性を探す。しかし、基本的な仕組みを一変させるほどの大発見は、膨大な試みの中から、ごくまれにしか生まれません。
知識や経験によって当たりを引く確率を高めたり、研究者や計算資源を増やして試せる回数を増やしたりはできます。それでも、予算を10倍にしたからといって、発見までの期間が必ず10分の1になるわけではありません。
もちろん、研究には宝くじの胴元はいません。発見によって新しい価値が生まれるため、研究全体として投資を上回る利益を生み出すこともできます。
それでも、大当たりがめったに出ない以上、毎年のように画期的な発見が生まれることを前提にはできないのです。
では、過去には、基本的な仕組みを変える発見がどのくらいの間隔で生まれてきたのでしょうか。
AI研究は1950年代から続いています。その間、さまざまな分野で画期的な技術が生まれてきました。
代表的なものを挙げてみましょう。
- 1956年:Logic Theorist — 記号処理と探索による数学的な自動証明。
- 1958年:パーセプトロン — ニューラルネットワークによる学習。
- 1970年代:Prolog・エキスパートシステム — 論理や知識の規則に基づく推論。
- 1986年:誤差逆伝播法の普及 — 多層ニューラルネットワークの学習を大きく前進させた。
- 1989年:Q学習 — 試行錯誤から行動を学ぶ強化学習の重要なアルゴリズム。
- 1997年:LSTM — 長い系列の情報を学習するための新しい構造。
- 2017年:Transformer — 現在のLLMを支える基本構造。
もちろん、これは代表例であり、何をブレイクスルーと呼ぶかにも判断が入ります。
ここで、現在のLLMにつながるニューラルネットワーク系の主要な進歩に注目してみましょう。
- パーセプトロンから誤差逆伝播法の普及まで 28年
- 誤差逆伝播法からLSTMまで 11年
- LSTMからTransformerまで 20年
この3つの間隔は、平均すると約20年です。
もちろん、この間にも数多くの重要な研究がありました。大きな発明が20年周期で生まれるという法則もありません。
これは、一つの発明を完成させるのに20年の作業が必要だという話ではありません。世界中で研究を続けていても、基本的な仕組みを大きく変えるほどの当たりは、毎年のように出てきたわけではないということです。
もしTransformerに代わる新しい基本アーキテクチャの発明が必要なら、2017年のTransformer登場から20年程度、つまり2030年代後半を一つの目安として考えるのも、合理的な予測でしょう。
もちろん、明日にも画期的な発明が生まれるかもしれません。しかし、そうした幸運を前提に将来の技術を選ぶわけにはいきません。
さらに、新しいアーキテクチャが発明されても、それによって現在のAIの問題がすべて解決するとは限りません。
実際には、問題の原因がまだ分からず、どのような技術的進歩が必要なのか判断できない場合もあります。
だからこそ、現在の能力不足が、計算資源、既存技術の改良、新たな基本原理の発見のどれによって解決できそうかを検討する意味があります。
未来を正確に予言することはできません。しかし、解決に必要なのが、方法の分かっている仕事なのか、既存技術の改良なのか、それとも、めったに出ない大発見なのかを考えることで、解決までの時間的な見通しを立てることはできるのです。
5.4 AI企業は何を目指しているのか
技術的に何が可能かという問題とは別に、開発企業がどの方向へ進もうとしているかも重要です。
AIの研究開発には莫大な費用がかかります。どの研究に資金や人材を投入するかによって、技術の進歩する方向も変わります。
AI企業は、モデルの推論能力の向上、計算効率の改善、外部プログラムとの連携、自律的な作業の実現など、複数の方向へ研究開発を進めています。
その成果を評価するときには、何が改善されたのかを見極める必要があります。
例えば、AIが何十時間も自律的に働いたという発表があります。
技術的には成果でしょう。しかし、人間が必要に応じて介入するなら、LLMを利用した開発はすでに半年間でも継続できます。
実務で扱う仕事の期間から見れば、数十時間という数字自体は誤差のようなものです。
重要なのは、長く動いたことで何が変わったのかです。
これまで人間が行っていた高度な判断を代行できるようになったのか。それとも、すでにできていた仕事を、人間の介入なしに続けられるようになったのか。
どちらも進歩ですが、実務上の意味は異なります。
また、AI企業は研究機関であると同時に、事業を継続するための資金を確保しなければなりません。
そのために、製品やサービスを利用者に売るだけでなく、投資家から資金を集める必要もあります。
宣伝される成果は、利用者にとっての実用的な価値を示すためとは限りません。投資家に将来性や成長性を示し、次の投資を呼び込むための場合もあります。
長期的には重要でも実用化の時期が読めない研究より、分かりやすい数字や華々しい実演で進歩を示せる研究の方が、資金調達のために宣伝しやすいこともあるでしょう。
もちろん、投資家向けに宣伝されているからといって、その研究に技術的な価値がないわけではありません。逆に、投資家の期待を集める成果だからといって、利用者が実務で困っている問題が解決されたわけでもありません。
企業が何を開発し、誰に向けて何を成果として宣伝しているのか。その背景にある技術と、資金を集めるための動機の両方を考える必要があります。
そして、企業が公表する成果は、実際に進めている研究のすべてではないことにも注意が必要です。
5.5 何を学び、何に熟練するべきか
ここで、Excel方眼紙の話に戻りましょう。
Excel方眼紙を使いこなす技能は、当時の仕事には役立ったかもしれません。しかし、Excelの発展方向を理解していれば、その技能を何年もかけて磨くべきか、別の判断ができたはずです。
AIについても、同じことが起こり得ます。
現在のモデルの弱点を補うために、複雑な指示や独特の運用手順を作り上げる。それは今の仕事には有効でしょう。
しかし、次のモデルでは不要になるかもしれません。
一方、長期的にも解決が難しい問題だと予測するなら、その問題を前提に技術を学び、システムを設計する意味があります。
つまり、現在の最適な使い方を知るだけでは足りないのです。
モデルとコンテキスト、Transformer、推論の仕組み、そして現在の能力の偏り。
これまで説明した知識を使えば、AIの不得意なことがなぜ起こるのか、その改善にはどのような技術が必要なのかを考えられます。
さらに、開発企業の研究方針や経済的な事情を合わせれば、今後どの方向へ進歩していきそうかも検討できます。
予測が外れることもあるでしょう。その場合は、新しく分かった事実に合わせて判断を更新すればよいのです。
しかし、過去の進歩が驚異的だったから今後も何でもできるようになると期待することと、技術的な根拠から将来を考えることは違います。
現在のAIの使い方を極めるだけでなく、AIという技術がどこへ向かうのかを考え、自分が進む方向を選ぶ。
そのためにこそ、AIの仕組みを理解する意味があるのです。
終章 AIには礼儀正しく話しかけましょう
最後に、一つだけ。
AIに話しかけるときは、礼儀正しくしましょう。
AIは、どれほど理不尽に叱りつけられても困りません。人間の部下が相手ならパワハラになるような態度でも、平然と相手をしてくれます。
しかし、そんな話し方が癖になってしまったら、絶対に人間相手にも同じことをします。
とはいえ、AIと人間に同じように仕事を頼むのは無理があります。
AIには矢継ぎ早に指示を出すことになりますし、人間相手なら避けるべき仕事の進め方でも、AIなら問題なくこなせます。
そこで、私は次の二つに気をつけています。
1.言葉遣いを丁寧にする
少なくとも、職場で人間に話しかける程度の丁寧さを心がけましょう。
どの程度丁寧にするかは人によりますが、私はなるべく「ですます調」で話すようにしています。
いくら矢継ぎ早に指示を出すとしても、言葉遣いまで乱暴にする必要はありません。
2.質問の形で命令しない
例えば、AIが頼んだ仕事をしていなかったときに、
「この仕事、やっておいてって言いましたよね?」
と詰問するような言い方です。
仕事をしてほしいなら、普通に「この仕事を進めてください」と頼めばよいのです。
ただし、質問そのものは積極的に使うべきです。
前に説明したように、AIにはイエスマンの傾向があります。こちらが断言すると、内容を十分に検討せず、賛成してしまうことがあります。
そのため、何かを確認したいときは、こちらの判断を押し付けずに質問した方がよいでしょう。
例えば、依頼が伝わっているか確認したいなら、「この仕事について、どのような依頼を受けていますか?」と尋ねればよいのです。
そうやって質問していると、AIがこちらの意図を察して、そのまま仕事を進めてくれることもよくあります。
また、AIは人間のように叱られたと受け止めて反省するわけではありません。謝罪の文章は上手に作りますが、叱ることで同じ間違いをしなくなるとは期待できません。
叱っても、こちらが疲れるだけです。 間違いがあれば、問題点を具体的に指摘し、修正を依頼すれば十分です。
AIのためではありません。人間に礼儀正しく接する習慣を失わないために、AIにも礼儀正しく話しかけましょう。
(当記事はZennにもマルチポストされます)