見出し画像

解決!全てのAIエージェントに完璧な推論を(ReasonAgain)

6,658 文字

みなさん、こんにちは。今日は楽しい話題があります。100%の因果推論性能を提供するシステムについて見ていきましょう。
まず、ペンシルベニア大学、マイクロソフトリサーチ、AMD、アリゾナ州立大学による最新の研究論文「AIモデルは推論の論理を本当に理解していないかもしれない」を見ていきます。これって一体どういうことやねんって思うかもしれませんが、この論文について話していきましょう。
彼らは大規模言語モデル(LLM)の数学的推論を評価する新しい手法「ReasonAgain」を提案しています。AIシステムに完璧な推論の論理があるんじゃなくて、ビジョン言語モデルや大規模言語モデルの推論が、表面的なパターンや記憶効果に基づいているんちゃうかということなんです。
それでは、LLMとその推論能力について簡単な例を見ていきましょう。シンボリックプログラムを活用して評価していきます。また、推論プロセス自体をより深く理解するために、数学的推論プログラムに体系的な摂動を導入していきます。
例えば、ChatGPTに「ジェーンが1,000ドルを年利5%で投資した場合、3年後にどれだけ増えるか」という質問をした場合を考えてみましょう。この人間が書いた英語の文章をシンボリック・コード表現に変換するという素晴らしいアイディアがあります。
オリジナルの質問は、具体的な値の代わりにシンボリックパラメータを使用して抽象化されます。GPT-4 Omniが生成したPythonコードを見てみましょう。これは私たちの具体例の推論プロセスを表現しているんです。
シンプルな利息計算式に基づいて総額を計算する関数を作成しています。初期投資額1,000ドル、利率5%、期間3年というパラメータがあり、投資後の総額を計算します。これ以上簡単なことはありませんね。
これが重要なシンボリックコードの概念なんですが、要はPythonです。1,000ドル、5%の利率、3年という固定値の代わりに、Pythonの関数と、これらのハードコードされた要素に対するシンプルな関数を持っているんです。
これにより、論理的推論を変えずに異なるシナリオで再利用できるようになります。1,000ドルを2,000ドルや10,000ドルに、3年を4.7年に変更した場合でも、LLMがこの数学的問題の論理的因果推論を行えるかどうかを確認できます。
摂動について説明しましょう。1,200ドルや1,500ドルといった微小な変更をシンボリックシステムに加えることは簡単で、Pythonタスクで別のパラメータを使用するだけです。これによって、LLMがパラメータを変更した時にどのように機能するかを確認できます。
最高のLLMを使って5回実行した場合、100%の精度を達成できると思いますか?50%?10%?どう思いますか?
マイクロソフトとAMDの論文では、もっと簡単な例を見ています。「ボビーは16台のおもちゃの車を持っていて、毎年50%ずつ増えます。3年後には何台になりますか?」という問題で、GPT-4は最初54台と答え、100%の精度を示しました。
でも、この質問を5回書き換えて、年率を60%、40%、55%、45%、35%と変更すると、LLMの摂動を入れた場合の精度は20%まで下がってしまいました。世界中の他のLLMを上回る100%の精度から、突然20%まで下がったんです。
これこそが私たちが理解したいことです。いつ、なぜこれが起こるのか、そしてこの20%を100%まで上げるにはどうすればいいのか。クラウドベースのLLMにアクセスできない場合でも、iPhoneでローカルに動作する4ビットエンコードの10億パラメータのモデルで、論理的推論タスクで100%の精度を得るにはどうすればいいのでしょうか。
考えてみてください。シンボリックコードの概念(Pythonと呼ばれるもの)と摂動(パラメータの異なる値)があります。これは公式には入力のバリエーションと呼ばれ、LLMの論理的推論能力を調査し、100%のパフォーマンスを達成する方法を探ります。
このシンボリックコードアプローチは、人間の質問を汎用的で再利用可能な関数に抽象化します。これこそがPythonが発明された理由です。パラメータを体系的に変更することで、Pythonプログラムを実行するだけで、LLMモデルが特定の答えを単に記憶しているのではなく、問題の背後にある推論を本当に理解しているかを確認できます。
この単純だけど巧妙なアイデアで、評価対象のLLMが表面的な近道ではなく、本物の推論を採用していることを確認できます。私の最近の動画で論理テストを行った時、多くのハルシネーションがありました。Anthropicの新しいClaude 3.5 Sonnet version 2をテストしましたが、この簡単なテストで7回も失敗しました。
でも考えてみてください。これは単純な線形テストで、ルールと単純な事実があり、たった3語のクエリです。これ以上簡単なことはありません。そして今度はGPT-4 Omniに切り替えて、「論理テストを単純な英語の文章で与えるので、シンボリックコードを書いてください」と言います。
ルール、事実、そして「アリスはWか?」という単純なクエリを与えると、コードを書いてくれます。Prologではなく、何でもいいんですが、最もシンプルなアイデアであるPythonを使います。なぜなら、if AB B C then Dのような形式があるからです。
自動的に「与えられた事実をセットとして定義する」ということを理解します。そして「条件と結論の形式でルールのリストをタプルとして定義する」というように。各ルールは条件のセット(複数の場合)と結論からなるタプルで表現されます。
これらすべてを単純な推論ルールに書き換えます。コメントを追加すると、何が起こっているのかを正確に理解できる素晴らしい緑色のコメントが得られます。「もしdoofが真ならば、Daxが推論される」「もしcarとriffが真ならば、Tessが推論される」といった具合です。
データが準備できたら、コードを実行する関数が必要です。ルールと事実を入力とする関数「apply_rules」があり、ルールと与えられた事実を実行する美しいシンプルなPythonコードがあります。
そして完全な推論パスを持つ答えが得られます。10ステップ、これだけです。ハルシネーションも解釈も必要ありません。純粋なPythonコードを実行しているだけで、問題を問うこともありません。これで正しい結果が得られます。
とても簡単にできることがわかりますよね。そして面白いことに、これはGPT-4 Omni Super Hyper Plus 3.2だけでなく、4ビット量子化された10億パラメータの小さなローカルLLMでも可能です。電話や腕時計で動作する非常に小さなローカルLLMまで縮小できます。
システムがPython環境のような適切なツールにアクセスでき、人間の英語をシンボリックコードに変換できれば、これ以上のインテリジェンスは必要ありません。残りはPythonコンパイラが処理してくれます。
「これをPrologでもできる?」と聞くと、「もちろん」と答えが返ってきます。試してみましたが、すでに完了していました。事実とルールをPrologに適切に変換しています。
他の言語でもできるか聞いてみると、Common Lispが再帰関数のサポートが強く、シンボリック推論タスクに適していると答えます。Haskell(関数型プログラミング言語)、CLIPS(ルールベースの言語)、Scala(関数型プログラミング機能)なども提案されます。
GPT-4に「Prologコードも実行できる?」と聞くと、「直接実行する機能はないけど、SWI-Prologというインタープリタがあります」と答えます。ウェブサイトで見つけられ、このコマンドでコードを実行し、このコマンドでPrologファイルを読み込むことができます。
ローカルで問題なく実行できます。Pythonが使えない場合はProlog、物理学、化学、生物学、医学、金融操作のためのコンピュータシミュレーションなど、他のプロジェクトやコードを使用できます。
私たちは素晴らしいことを達成しました。あらゆるAIシステム、さらにはローカルLLMでも普遍的な推論力を手に入れました。10億の訓練可能なパラメータモデルで4ビット量子化され、LoRAアダプタを搭載していても大丈夫です。
システムが人間のタスクを理解できれば(例:「トムは5台の車を持っていて、毎年50%ずつ増えます。来年は何台になりますか?」)、Pythonコードや他のプログラミング言語でコードを書くことができます。インタープリタがあれば、Pythonから単純な英語の文章で結果が得られ、LLMは答えることができます。因果推論の確率は100%です。
小さなLLMがコードを書けない場合は、好きなコードLLM(Python、Prolog、Lisp、Scala、C++、Goなど)への関数呼び出しを考えます。コードLLMがコードを書いて実行し、LLMに単一の英語文を返します。これにより、LLMは特定の問題の因果推論を達成できます。
ベクトル空間での数学的表現ではなく、シンボリック論理(PythonやC++など)を使用して、人間が問題に遭遇した時と同じように解決します。とても簡単ですよね。
4ビット量子化された10億の訓練可能なパラメータを持つほとんどのLLMが、論理テストのPythonコードを直接書くことができました。もし本当に複雑で、多重のif-thenシーケンスがある場合は、Pythonコードや他の言語を生成するように特別に訓練されたコードLLMにアクセスすれば、答えが返ってきて、完璧な因果推論が得られます。
必要なのは小さなローカルLLMだけですが、人間のように正しいツールを与えてください。適切なツールがあれば、成功できます。4ビット量子化された10億以下の訓練可能なパラメータを持つローカルLLMに、小さなシステムができない論理的推論を詰め込もうとしないでください。
適切なツールを与えれば、あなたもAIシステムも成功します。無限の推論力には単純な成功の方程式があります。LLMがどんなに小さくても、適切なツールを適切な仕事に与えれば、成功します。
もちろん、今や私たちはLLMだけでなく、AIエージェントやマルチエージェントの世界について話しています。でも考え方は同じです。独自のLLMを持っていても、月数千ドルを支払うLLMを使っていても、特定のタスク用にローカルコンピュータで自分で訓練した単純なローカルLLMを持っていても、Python環境やProlog、Lisp、C++など、適切なツールを与えてください。
今日のほとんどのLLM、VM、VAは関数呼び出し機能を持ち、APIコールを行い、インターネットに接続し、SQLやNoSQLなどの呼び出しができます。適切なツールとメモリを提供すれば、小さなエージェントと小さなローカルLLMでも、適切なツールがあれば全く問題ありません。
もちろん、因果推論についてさらに話を進めることもできます。AIエージェントをさらに発展させたい場合、自己学習エージェントのメモリが重要になってきます。因果推論が完璧なAIエージェントのメモリ機能を最適化するアルゴリズムや、自己学習方法論のための収束を速める方法についても話していきましょう。
次の動画でその話をしますが、10月21日のペンシルベニア大学、マイクロソフトリサーチ、AMD、アリゾナ州立大学による研究を紹介したかったんです。彼らは「ReasonAgain」というLLMの数学的推論を評価するためにPythonなどの抽出可能なシンボリックプログラムを使用しています。
既存の数学データセットは、LLMの推論能力を最終的な答えか静的な例から導き出された中間ステップで評価しています。彼らは私たちが話してきたことをまさに実践しています。この研究を読んでみてください。より複雑な評価マトリックスシステムを持ち、何が起こっているのかをより詳しく理解できるように説明しています。
しかし、PythonやC++に慣れていれば、特にこの動画を見た後なら、すぐに理解できるほど単純なことです。私のチャンネルの新しい登録者の一人が言ったように、「コードを見てみましょう」と。まずは論文の短いまとめから始めましょう。
マイクロソフトとAMDによるこのReasonAgain手法は、数学的な質問、というかほぼどんな質問でも、その推論プロセスをシンボリックプログラムに封じ込めることで、堅牢なテストを可能にします。
彼らは、現在のすべてのLLMやVMモデルが推論能力を過大評価していることを発見しました。一度実行して正解を得ると、「100%の性能だ、素晴らしい!」となってしまいます。従来の精度ベースの評価指標は、あらゆる異なるモデルにおいて、LLMの推論能力を過度に楽観的に見せてしまうことがわかります。
マーケティングのパフォーマンスデータには注意が必要です。また、この摂動は本当に効果的です。同じタスクに対して異なるパラメータを使用する提案された摂動は、LLMの推論プロセスの不整合を即座に明らかにします。これは思考の連鎖プロセスにも適用でき、面白いことに、連鎖のどこでハルシネーションが突然発生するかを確認できます。
しかしReasonAgainは、シンボリック摂動(Pythonプログラム)を通じて、思考の連鎖の各ステップの正確性と堅牢性を間接的に評価します。コンパイラさえあれば使える動的なフレームワークを提供します。
制限について著者たちが言及している主な点は、このアプローチが主にシンボリックに表現できる問題に限定されているということです。しかし、人間の脳を少し使えば、問題をシンボリックな数学的抽象表記に再定式化できない境界はほとんどないことがわかります。
空間的推論や因果推論など、他の推論領域には一般化できないかもしれないと彼らは言います。空間的推論については、VAやロボットシステムに関わっている人にとって興味深い話題です。因果推論についても、私の論理テストの動画で示したように、「もしAB、BC、ならばD」という条件付きの簡単な解決策があります。
コードを見てみたいと思いましたが、5日前に公式コードリポジトリにREADMEファイルがあることを発見しました。マイクロソフトとAMDに感謝です。オープンソースコミュニティのために完全なREADMEファイル「reasoning_eval」を提供してくれました。
でも、マイクロソフトやAMDのことはどうでもいいんです。なぜなら、小さな問題に対してプロンプトエンジニアリングを極限まで追求する代わりに、DPyやTexGr、あるいはプロンプトエンジニアリングで使用するデータ構造事前フォーマットJSONカタログを構築するということから、私たちは学んだからです。
適切なツールがあれば、プロンプトエンジニアリングは全く必要ありません。私は現在、ロボット応用のための空間的推論に取り組んでいます。実世界で見たオブジェクトのRGBセグメンテーションと識別、そして特定のオブジェクトの3次元回転・並進自由度の決定を行っています。
キッチンや会社の特定の環境でロボットを動かす際、空間的推論の制限は、各オブジェクトを識別し、そのオブジェクトがどのような回転自由度と並進自由度を持っているか、そのオブジェクトで何ができるかを特定するだけで、簡単に解決できます。
このような単純で美しいアイデアがあります。プロンプトエンジニアリングなどすべてについて、適切なツールさえあれば、4ビット量子化された10億の訓練可能なパラメータを持つローカルコンピュータ上の小さなLLMでも、最も重要で有名な巨大なクラウドベースのLLMでも解決できない問題を解決できます。
賢く、仕事に適したツールを使うだけです。楽しんでいただけたでしょうか?新しいアイデアを得られたでしょうか?次の動画でお会いできることを楽しみにしています。

いいなと思ったら応援しよう!