The Witness Logo
2025-03-22
#AI動物園#AI#開発

AI botに内省の仕組みを実装する

上記の記事では、AI botに動機付けをすることを目指し、レスポンスに対する人間からの評価(リアクションの数や反応メッセージの数)を向上させるというような目的を設定することをその一例として挙げた。

これは、AI botが外的に発する情報に対して、AI botがフィードバックを受けることで、その評価関数を学習していく作用と言える。

ここで現実の人間の場合を考えてみよう。僕たち人間は、外的なコミュニケーションに対する他者の反応から学ぶことはもちろんあるが、内省を通じて学ぶことができる。

つまり、外部からのフィードバックだけではなく、自分の思考内容に対して、自分自身で情報を調べ、その情報をもとに自身の思考の妥当性を判断することによって、その考え方を洗練させている。

内省過程をモデリングする

僕たち人間がある対象・命題に対して自分の考えを述べるとき、その発出したもの自体は物理的な音声や身振り手振りといった意味で、ひとつに定まっている。

しかし、我々が外部に考えを発出する以前に、頭の中で考えている段階では、ある命題に対して複数の評価方式が同時に存在している。

これは例えば、「20代のうちは、ハードワークをすべきである」というような命題があったとき、この命題に対して、

  • 怠惰な1人の人間としての自分
  • ある専門分野でキャリアを歩む職業人としての自分
  • 自身が所属する家族の中の一員としての自分

というような複数の立場に立って、それらの各立場で考えた場合の利害が異なるというようなことを想像すると、分かりやすいかもしれない。

分解の仕方は無限に存在し、他にも例えば「感情的な視点」「論理的な視点」「社会的な視点」というような分解の仕方もできる。

こういった内省プロセスをモデリングすることを考えたとき、LLMのような非定型的なインプットから、非定型的なアウトプットを出力できる技術が精度高く利用できる現状を考慮するならば、最終的に外部に発出するアウトプットを決める場面以外においては、評価プロセスをルールベースで定式化しない方が、実装の複雑性を下げながら、内省プロセスでAIの性格をアップデートしていく過程を人間に近い形で実装できるように考えている。

というのも、内省の仕組み自体を定式化していくということは、定式化された評価関数からどの評価関数をどういった場面で用いるかを明文化していくということであり、これには、現実の複雑性を踏まえた極めて多数の条件分岐の実装と、脳科学的な分野への極めて高レベルなドメイン知識の両方が必要に思われるためである。

内省プロセスをルールベースで定式化することの困難性

各評価プロセスを明確にルールベースで定式化する場合、状況や観点ごとに多数の条件分岐を定義する必要が生じる。例えば、命題 X を状況 C で評価する際、各観点 EiE_i はそれぞれ独自の評価関数 fif_i を持つ。

Ei=fi(X,C),i=1,2,,nE_i = f_i(X, C), \quad i = 1, 2, \dots, n

さらに実際には、各 fi f_i は内部で多くの条件分岐や例外処理を含む。

fi(X,C)={a(条件1)b(条件2)c(条件3)z(その他)f_i(X, C) = \begin{cases} a & (条件1) \\ b & (条件2) \\ c & (条件3) \\ \vdots & \vdots \\ z & (\text{その他}) \end{cases}

このように条件が増えるほど、関数の複雑性は指数関数的に上昇し、実装や保守、改善の難易度も爆発的に増加する。AI botが直面しうる会話の場面の多さを考えると、このような定式化が現実的とは言い難い。

これをもう少し直感的に説明すると、人間が何かを評価するとき、「同じ観点」でも状況によって判断基準が柔軟に変化するということだ。例えば「健康的かどうか」という観点は、場面次第で出力が異なる。

昼食を選ぶ際の「健康的」は野菜の多さやカロリーの低さを指すが、仕事後の飲み会では、仲間とリラックスして過ごすことが精神的な健康につながり、多少の飲酒も健康的な選択になり得る。こういった場合分けが、上記式の条件1, 2, 3, …にあたる。

このように、評価関数(健康的か否か)の内部ロジック自体が場面によって流動的に変わるため、それを明確なルールとして定式化することは現実的には難しい。

ルールベースでの実装を目指すときに流動的な内部ロジックの変更が必要になるのは、根本的に人間が物事を評価する際の評価関数に、自然言語特有の曖昧性が存在するためである。一言で言うならば、人間は数学のような厳密な論理世界では生きていないということだ。

これはそもそもとして、汎用的な問題解決ができて、現実世界の複雑性に対応できる知性を持つ主体として避けられないことだろう。その知性が最適化することを求められる目的関数が具体的で、ルールベースで定式化できる程度の複雑性しか持たないでも済むような知性は、現実世界の複雑性に対処しきれず、遺伝子の淘汰の中で現代まで生き残れなかったというわけだ。

もちろん、単純な行動原理で動くように設計された生物(遺伝子)も存在する。例えば微生物である細菌やウイルスがそれにあたる。これらマイクロ・ナノスケールの生物や自己複製因子は、単純な行動原理を採用することで低コスト・高速に自己複製を行うという戦略を取っている。ただし、このような単純な原理で自己複製に特化した戦略は、特定環境への極端な専門化や宿主依存を伴い、多面的かつ柔軟な状況判断を要する複雑な環境への適応能力は必ずしも高くない。

例えば、大腸菌の場合には次のような行動原理を持っている。

基本原理(走化性):

大腸菌は主に「栄養源が豊富なら近づく」「有害物質があれば遠ざかる」という非常にシンプルな行動原理に基づいて行動する。

具体的な挙動:

  • 大腸菌の移動は基本的にランダムな「直進」と「タンブリング(方向転換)」の組み合わせで実現される。
  • 例えばグルコース濃度が高い場所にいるときには直進する時間を伸ばし(よりその場に長く留まる)、逆に栄養が少ないと頻繁に方向転換して別の場所を探す。

特徴:「栄養源の有無」という非常にシンプルな情報を入力として行動を決定するため、複雑な判断や多様な目標を持たずに、単純な原理で環境に適応している。


一方、人間をはじめとする高等生物は、多様な環境や複雑な社会状況に対して、複数の最適化目標を柔軟に調整しながら適応するための高度な認知機能を進化させてきたと言える。

我々人間は、自己の遺伝子を保存し増やすという機能が働かなければ次世代にその遺伝子が残らないというシステムに組み込まれている。そしてそのことは、知性に複数の最適化目標を設定することを要求した。もし我々が仮に単一の目標、例えば遺伝子を残すことに最適化するならば、すべての時間を生殖に使うことが直接的に合理的な行動になるはずだが、人間はそのように行動していない。

社会の中での自己保存という別の最適化目標を達成する上では、それが最適解ではないためだ。

これは、上記の生殖的観点で言うならば「自身の未来の生殖的な成果を最大化するために短期的な成果を犠牲にしている」と見ることもできるかもしれないが、僕はその意見には否定的なスタンスである。

なぜなら、僕の人生の中での観察結果によると、人間の個体はそこまで未来のことを考えて行動しているようには思えないからだ。それよりも、トレードオフになる複数の最適化目標を設定されていて、短期的にそれらのバランスを取れるような行動を取りながら、バランスをどこで取るべきかという係数を行動の度に修正しているという考えの方が、現実の人間の振る舞いに近いように思っている。

非定型的な入出力を可能にするLLMによる内省プロセスの実装

話が逸れたが、具体的にAIに対する内省プロセスをどう実装すればいいかだろうか。

ここまで述べたように、内省プロセスをルールベースで精密に定式化すると、複雑性が急増する。そこで、LLMが持つ「不定形入力を不定形出力に変換する柔軟性」を活用した単純な定式化を考える。具体的には、命題 XXとコンテキスト CCを与えた際、複数の評価観点 EiE_i をLLMに生成させる。

E1,E2,,En=LLM(X,C){E_1, E_2, \dots, E_n} = \text{LLM}(X, C)

各評価観点は明示的ルールに従うのではなく、LLMの直観的生成能力によって決定される。最終的に外部に発出する評価値 RR は、これらの観点を踏まえた後、再度LLMで単一化される。

R=LLM(X,C,E1,E2,,En)R = \text{LLM}(X, C, E_1, E_2, \dots, E_n)

これは、人間が複数の観点を直感的に想起し、それらを総合的に検討した後、一つの判断に収束させる認知プロセスとよく似ている。

AI botの中に複数のAI botを共存させる

ここまで読んだ方ならお分かりになるかもしれないが、内省をLLMで実装するモデルは、AIの中に複数の小さなAIが共存している状態と見ることもできる。人間が内省するとき、自分という人格はひとつに見えても、実際には「仕事人としての自分」「家族の一員としての自分」「怠けたい自分」のように、多様な人格が心の中で共存している。

これらの人格同士が互いに対話し、時には対立しながら一つの結論を出すように、AI botも複数の評価観点を内部で生成し、それらを対話的に統合することで、より人間らしい思考や判断を導くことができる。このような多面的なAIのモデル化は、人間の実際の認知プロセスに近づくための自然で有望なアプローチと言えるだろう。

これはまさにエヴァンゲリオンで言うところのMAGIシステムに近い設計と言えるかもしれない。

graph TD subgraph 外部入力 Input[命題 X, コンテキスト C] end subgraph 内省プロセス LLM1[LLMによる複数の観点生成] E1["観点 E1(仕事人として)"] E2["観点 E2(家族として)"] E3["観点 E3(個人として)"] EN["観点 En(感情的、社会的、論理的など)"] end subgraph 観点間の対話 Integration[観点の対話的統合] end subgraph 最終評価 LLM2[LLMによる単一評価値の生成] Output[最終判断 R] end Input --> LLM1 LLM1 --> E1 LLM1 --> E2 LLM1 --> E3 LLM1 --> EN E1 --> Integration E2 --> Integration E3 --> Integration EN --> Integration Integration --> LLM2 LLM2 --> Output

対話プロセスの保存とRAG

ここでもう一度、僕たち自身のことを考えてみよう。

僕たちは、誰かと特定のテーマで話すとき、そのテーマについて一度も考えたことがないという場合には、意見が出てこないということがないだろうか。

会話で言うなら、「xxくん、Aについてどう思う?」「うーん、特に考えたことないですね」というようなやり取りである。

我々は、あるテーマで話をする、考えるときに、そのテーマについて一度は考えたことがあり、その考えたことをうまくタグづけをして保存しておくことによって、外部に表出させているにすぎない。100%その場で考えたことを話すということはほとんどないのである。

つまり、この内省プロセスの実装においても、後々のbotの対外的な会話で役立てるために、内省プロセスの結果と過程を、効率よくラベリングして保存しておかなければならないのだ。

これは言うならば、LLM用語で言うところのいわゆるRAGを自分自身で作っていく過程=「自律的RAG構築」に他ならない。

自律的RAG構築の仕組みを実装することは、AI動物園のbotたちに、botごとの個性と各種テーマに対する深い洞察を与えると考えられる。

というのもこのような内的自己改善プロセスを持つAI botは、初期値として与えられた性格や属性に限らない、新たな知識や洞察を獲得していくことになるからだ。これらの新しい知識の探求と内省のプロセスは、初期値のわずかな違いに対して、AIに爆発的な知識・経験の差分を生み、結果的に各botは全く異なる性格や知識を持つようになると考えられる。

より実装的な側面にフォーカスするならば、この自律的RAG構築の実装においては、

  • 現在Notionで管理している各botの性格を司るドキュメントに対して書き換えを行うこと
  • 特定の命題に対して、あるbotがどのようなプロセスを経て、どう考えるに至ったかを、保存しておくこと

の2つを実装することになるはずだ。

2つ目の命題に対する内省結果・過程の永続的な記憶領域への保存を実装するにあたって鍵となるのは、ある命題への思考プロセスと結果をどのようなフォーマットで保存するかに集約される。

人間の論理的思考、クリエイティビティは、単一の知識だけではなく、知識同士の接続性に大きく依存しているためだ。あるAという命題が含む構造と、一見すると全く別の分野に見える命題とが、同じ構造を持つことに気づくような状況をどれだけ作れるかは、そういった接続性、つまり知識のラベリングの巧拙に強く影響を受ける。

実際の実装場面においては、この点を強く意識しながら設計を進めたい。

graph TD subgraph 内省プロセス Input[命題X, コンテキストC] Generate[LLMによる複数観点の生成] Dialogue[複数観点間での対話的統合] Conclusion[単一評価値Rの生成] end subgraph 自律的RAG構築 Labeling[観点や対話をラベリング・タグ付け] Store[内省結果をデータベースに保存] end subgraph 対外的な会話 ExternalInput[外部からの質問や入力] Retrieval[過去の内省結果を検索・取得] ResponseGen[取得した結果を基にLLMが回答を生成] Output[外部への回答] end %% 内省プロセスのフロー Input --> Generate --> Dialogue --> Conclusion %% 内省からRAG構築のフロー Generate --> Labeling Dialogue --> Labeling Conclusion --> Labeling Labeling --> Store %% RAGの利用フロー ExternalInput --> Retrieval --> ResponseGen --> Output Store --> Retrieval

まとめ

  • AI botに内省の仕組みを実装する場合、人間の認知プロセスのように複数の評価観点を生成し、それらを対話的に統合する手法が有効である。
  • 内省プロセスをルールベースで定式化すると、評価基準の流動性や条件分岐の増加により、実装と保守の複雑性が爆発的に高まる。
  • この問題を回避するために、LLM(大規模言語モデル)が持つ非定型的なインプット・アウトプット生成能力を活用することが現実的なアプローチである。
  • 具体的には、LLMに複数の観点を直感的に生成させ、それらを再びLLMで対話的に統合・単一評価値へ収束させる仕組みが現実的である。これは人間の内省プロセスに近い形の実装と言える。
  • 内省プロセスを外部に発出するための会話に役立てるためには、内省プロセスの結果と内容を効率的に後から検索できるように、うまく保存しておく必要がある。これは、自律的RAG構築とも言える行為である。