
32,202 文字

みなさん、こんにちは。今日はOpenAIの最新モデルについてお話しします。gpt-o1、あるいはSam Altmanが言うところのストロベリーと呼ばれるモデルです。このモデルがどのように推論を行っていると主張しているのか、そしてこれがどのように実現できるのかについて、可能なアーキテクチャを分析していきます。アーキテクチャの部分については、OpenAIが何も公開していないため、あくまで推測になりますが。
では、始めましょう。gpt-o1の主なアイデアは、従来のLLMのように一度だけ出力を得るのではなく、その応答を使ってさらに思考の連鎖を行うということです。例えば「次に何をすべきか」「前の応答は正しかったか」などと考えることができます。つまり、モデルは以前の出力を見て、「他に何かすべきことはあるか」「以前の間違いを修正すべきか」などを判断できるようになっています。これが思考の連鎖(Chain of Thought)と呼ばれるものです。
この思考の連鎖は、多くの論文で使われてきましたが、ここで使われている方法は従来のアプローチとはかなり異なります。後ほどのスライドで詳しく説明しますが、重要なのは、モデルが一度だけ出力するのではないということです。以前の結果を分析し、複数のステップで出力を行います。
もう一つ興味深いのは、同じ問題に対して複数の同じような出力ができるということです。例えば「ストロベリー」の中に「r」がいくつあるかを数えるとき、文字を調べて数えたり、配列を使って数えたりと、複数の方法があります。これは、モデルが実際に複数のサンプルを生成していることを示唆しています。同じプロンプトを与えられても、多様な出力を生成し、後でその結果を統合できるということです。
これがgpt-o1の主な2つの特徴です。ベンチマークの結果を見ると、この複数サンプリングが非常に重要であることがわかります。1000サンプルまでスケールアップすると、競技プログラミングのトップ10%に入るほどの性能になります。複数回サンプリングしないと、おそらく50パーセンタイル程度になってしまいます。これらの2つのアイデアは非常に重要で、新しいアイデアではありませんが、モデル自体の一部としてマーケティングされるのは初めてです。
ベンチマークを見てみましょう。gpt-o1は、この3つの分野でかなり優れています。数学、コード、科学の質問です。PhD学生を雇って答えを書かせ、それを学習させたのかもしれません。これはかなり印象的です。GPT-4と比較すると、少なくとも10%の性能向上が見られます。一部では40%、50%の向上もあります。これはかなり説得力があると思います。実際、私もo1を使ってみましたが、確かにより複雑で難しい問題を解くことができます。単に思考の連鎖による推論が追加されただけでこれだけの向上が見られるのです。
最も大きなベンチマークの改善は、数学や物理、化学、論理などの分野です。これは、このような分野のデータセットに多くの労力をかけて微調整したことを示しています。数学、コーディング、論理パズルなどですね。英語や広報などの分野ではゲインは最小限ですが、それでも転移学習が起こっています。おそらく、o1の訓練ではこれらのデータセットは使われていないのでしょう。
彼らが主に訓練したと思われるのは、これらの複数のステップを必要とする答えを推論するようなタスク、つまり数学、物理、化学、生物学などです。彼らのビデオでも、これらの例をたくさん示しています。
では、どのようにしてこれを実現したのでしょうか。数学の40%という性能向上は印象的です。数学はLLMにとって簡単ではありません。もしこれがコンピュータプログラムなしで行われているのであれば、LLMが数学を解けるということになります。しかし、私の以前のセッションでもお話ししたように、私はLLMが数学を解けるとは思っていません。
もしgpt-o1がこのような性能を示しているのであれば、計算機なしで行っているとすれば、私は疑問を感じます。このデータセットに過学習しているのかもしれません。なぜなら、コンピュータプログラムを使わずに、例えば二次方程式の解を見つけるようなことは、非常に難しいと思うからです。
gpt-o1は、テキストを行動空間として使用している可能性が非常に高いです。つまり、大規模言語モデルを使って出力し、以前の応答に基づいて以前の出力を修正するというものです。GPT-4とo1の違いを確認しましたが、例えばo1に素数を生成させると、異なるステップについて話し、計算機やプログラムなしで素数を与えてくれます。一方、GPT-4に1000番目の素数を求めると、プログラムを作成し、実行して答えを出します。
o1にはコンピュータプログラムが全く含まれていない可能性が非常に高いです。Zも大きな数の掛け算を試みましたが、その方法は100や1000の単位で四捨五入し、引き算を行うというものでした。計算機なしで大きな数の計算ができるというのは、かなり印象的です。
これはo1の主な特徴の1つで、外部ツールを統合していないということです。これは改善の余地がありますね。外部ツールを使えばより信頼性が高くなる可能性がありますが、o1は純粋に、少なくとも私の知る限りでは、ツールを全く使用していません。
ベンチマークのベースラインはかなり印象的ですが、訓練されていない分野でも本当にそれほど優れているのでしょうか。これはARC(Abstract Reasoning Challenge)の結果です。ARCについては以前の動画で説明しましたが、これはIQテストのようなもので、正方形のグリッドを入力とし、例えばこのグリッドの中に赤い正方形があり、出力のグリッドではその赤い正方形が右にシフトしているというようなものです。
プログラムには何をすべきかの説明は与えられず、入力から出力を推測し、ルールを導き出す必要があります。見てわかるように、o1 previewはかなり良い性能を示しています。GPT-4よりもずっと優れています。ARCの課題を解決したい人にとって、o1 previewはかなり decent な選択肢です。
ただし、Claude 3.5とほぼ同等の性能です。ここでの検証スコアは少し高いですが、所要時間がClaudeの少なくとも10倍かかっています。つまり、高度な推論パイプラインは数学、物理、化学、生物学など、訓練された分野では有用かもしれませんが、おそらくPhDを雇って答えを提供してもらったような分野では、この高度な推論能力が他の分野にうまく転移しない可能性があることを示しています。
確かに、ここでも性能向上は見られますが、他のモデルと比べてそれほど大きな向上ではありません。ただし、他の人がIQテストなどでベンチマークを行った結果を見ると、Claude 3.5よりもずっと優れた性能を示しています。ですので、IQテストの内容が訓練セットに含まれていた可能性も疑っています。
また、o1 previewがGPT-4よりもはるかに多くの幻覚(hallucination)を起こす可能性があるという証拠もあります。技術報告書でも、これが強調されています。これは、モデルにこのような高度な推論をさせようとすると、時には考えすぎてしまう可能性があることを示しています。この点については後ほど議論で触れます。
これは非常に興味深いことです。なぜなら、より多くのことを考えるようにモデルに要求することは、ある種のバイアスを導入することになるからです。このような問題、さらにはARCのような課題でもうまく機能する可能性があります。ルールについて深く考える必要があるからです。しかし、もっと単純な問題、例えば明らかなことを答える場合などでは、逆効果になる可能性があります。
「外科医は男の子の父親です」という文を2回繰り返すような場合、「ああ、外科医は別の男の子の父親だ」などと考えすぎてしまう可能性があります。つまり、特定の状況では考えすぎてしまうのです。
TERさんが質問していますね。「ビジョンタスクはどうやって行うのですか?」ここで比較しているモデルはビジョンを使用していないと思います。テキスト配列として扱い、テキスト配列を生成するように求めていると理解しています。少なくとも、ここでのベースラインについてはそうだと思います。
では、有名なストロベリーの例を見てみましょう。OpenAIがこれをストロベリーと名付けたのは、おそらくこの例が理由だと思います。これはGPT-4の例です。昨日試してみましたが、まだ同じ結果が出ます。「strawberry」の中に「r」がいくつあるか尋ねると、答えは「strawberryには2つのrがあります」となります。
人々はよく、GPTは高校生レベルの知能だと言いますが、これは数えることさえできていません。ここを見ると、実際には3つのrがあります。しかし、これは実際にはLLMの欠点ではありません。なぜなら、このような単語のトークン化を見てみると、BPE(Byte Pair Encoding)などを使用すると、「straw」と「berry」と「y」のように符号化される可能性があります。正確な符号化は覚えていませんが、このようなものです。
ここで強調したいのは、LLMは文字を全く見ていないということです。すべてがトークン化の観点から見られています。「straw」、「berry」、「y」のようなものが見えているのです。「r」の数を数えたいのであれば、それはうまくいきません。
これがLLMにとってこのタスクを難しくしている一つの理由です。実際、単語を分解して理由を説明するように求めると、「s t r a w b e r r y」という文字が得られ、それを数えると2つの「r」があると回答します。
ここには2つの問題があります。1つ目の問題は、文字を実際に見ることができないこと。2つ目の問題は、文字を正確に数えられないことです。ここを見ても、このような応答を得ても、正しく数えることができていません。
LLMに数学や論理を扱わせることについて、私はどれほどうまくできるか疑問に思っています。実際、先ほど見たo1のベンチマークについては、かなり疑問に思っています。過学習の可能性があるからです。ベースモデルについては知らないので、あまりコメントできませんが、タスクの内容だけを見ると、これが正しいアプローチなのかどうか疑問に思います。
サブワードを入力として受け取るモデルに文字を数えさせるのは、そもそも無理があります。これは評価すべき正しい領域ではありません。数を数えるようなタスクは、コードで行う方が良いでしょう。LLMをこのために使うべきではありません。
しかし、gpt-o1ではこれがうまくいくと強調されています。gpt-o1では、「strawberry」の中に「r」がいくつあるかを尋ねると、次のような思考プロセスを示します。
「rの出現回数を数えています。」
「出現回数を数えています。」
そして、これが要約です。ここで注意してほしいのは、この要約は実際の推論トークンではないということです。これは要約されたバージョン、あるいはセーフガードを取り除いたフィルタリングされたバージョンです。OpenAIは実際にモデルが行うステップを提供していません。トークンを解釈するための後処理方法を使用し、これらが要約された内容です。
最初の部分では、「rの数を数える方法を説明しています。これには単語をリストアップし、各rにタグを付けて合計を出すことが含まれます。」次に、「rの位置を数え、3つのrが3番目、8番目、10番目の位置にあることを見つけています。」つまり、3、4、5、6、7、8、そして9番目の位置ですね。
正直に言って、かなり良い結果だと思います。このように文字の位置を示せるということは、文字の位置に関する理解がかなり進んでいるということです。
これが起こっている理由として考えられるのは、gpt-o1に文字ベースのデータセットを与えている可能性があります。このタスクのために特別に訓練したか、あるいは一部のタスクに対してトークン化が異なっている可能性があります。
いずれにせよ、gpt-o1は時々この数え上げタスクを正しく行えます。オンラインで他の例を見ると、例えば「starberry」のような単語で「r」の数を尋ねた場合、このような間違いを犯すこともあります。これは、訓練セットにこのような例が含まれている可能性を示唆しています。
訓練セットから少し、あるいは大きく逸脱すると、LLMを使って数えるこの方法はあまり信頼できない可能性があります。しかし、「strawberry」の場合はうまくいき、少なくとも一部の文字ベースのタスクで機能するという点で、これは改善だと言えるでしょう。
ただし、先ほど述べたように、これは推論に対してスケーラブルなアプローチではないと思います。なぜなら、ドメインが間違っているからです。LLMは入力空間にさえない種類のタスクに使うべきではありません。
ここでtask genについて少し触れたいと思います。というのも、gpt-o1のこのストロベリーのタスク、ここにあるこのタスクが、私が構築している探索的フレームワークのサブタスクにかなり似ているなと思っていたからです。
タスクをサブタスクに分割するというフレームワークですが、このフレームワークの方が優れている点は、任意の関数を呼び出せることです。LLMだけを使うのではなく、エージェントに渡すこともできます。
そこで、このようなタスクをサブタスクに分割し、探索的フレームワークにマッピングして、o1と同じくらいうまく機能させる方法はないかと考えました。試してみたところ、一般的なエージェントを定義し、「タスクをより小さなステップに分解し、それらを批判的に推論する」ように指示しました。実際、これを省いても同じように機能することがわかりました。
GPT-4は明示的な推論データセットで訓練されていないので、デフォルトでは推論が得意ではありません。このようにラップすると、「strawberry」の中に「r」がいくつあるか尋ねた場合、まず「strawberryの中のrの出現回数を数える」というタスクを特定します。これはo1とかなり似ていますね。
次に、このようにタスクを分解し、rの文字を3つとカウントします。最初はこれにかなり感心しました。さまざまな単語のバリエーションを試してみましたが、しばらくすると分解が難しくなります。o1は、GPT-4上にこの探索的ラッパーを使用するよりも、頻繁に壊れることはありません。おそらく、o1の訓練データセットにはこのような例がもっと多く含まれているのでしょう。
タスクが完了したら、エージェントに「各サブタスクを簡潔にまとめ、このフォーマットでユーザーに表示してください:サブタスク:要約」と指示することができます。ここを見ると、これはo1が示す思考の連鎖にとてもよく似ています。ここにステップがあり、ここに説明があります。
ほとんどの部分をPythonで再現できます。最後の答えは、ユーザーに「答えは3です」と返すだけです。この種の探索的構造は、少なくとも推論時には、o1が行っていることとよく似ていると思います。強化学習などを使用していると言及していましたが、推論時に強化学習を使用しているとは思いません。おそらく、データセットを改善するために使用されているのでしょう。
これは次の点につながります。LLMにこのような思考を組み込むにはどうすればよいでしょうか。
ここで一旦止まって、o1について質問があれば聞いてみましょう。可能なアーキテクチャについて話す前に、何か聞きたいことはありますか?あるいは、o1を使った経験を共有したい方はいますか?
エヴァンが先ほど質問していましたね。少なくともオンラインのサーバーでの議論で触れましたが、「グロッキング」について考えていました。「グロッキング」について読んだことがありますか?今話している一般化の問題、つまり推論やすべてについて、その問題を克服する方法のようなものです。
答えを正しく出すことを目指すのではなく、基本的には鈍感になるまで訓練するのです。ブルートフォースで答えを正しく出すようにしますが、最近のグロッキングに関する興味深い文献では、暗黙の推論について触れています。一般化のポイントをはるかに超えてモデルを過学習させ続けると、かなり良い暗黙の推論で一般化するというのです。
ここでLLMをこのポイントまで持っていくための可能な訓練テクニックについて興味があります。完全にそこまで行ったとは言いませんが、グロッキングからのテクニックを使用して、LLMをこのポイントまで持っていった可能性があります。
システムがまだ非常に脆弱だと思いますし、全体的にこのアプローチは好きではありません。少ない見返りのために多くの作業が必要だからです。グロッキングは非常にコストがかかりますが、OpenAIのような企業なら負担できるでしょう。このシステムでどの程度グロッキングを使用しているか見てみるのは興味深いですね。それほど複雑ではないかもしれません。強化学習プロセスやデータキュレーションで、より単純な何かを使用している可能性もあります。
後でデータキュレーションについてもう少し話せると思います。スライドにはありませんが、論文を見ると、「自己教師型推論者(Self-Taught Reasoner)」というスター論文があります。これは基本的に、質問と答えがあって、LLMに根拠を与えるよう求めるというものです。
この根拠を、質問プラス根拠でテストし、答えが得られれば、これをデータセットに追加できます。本質的に、質問と生成された推論を取り、これがデータセットの一部になります。これは、モデルが暗黙のうちに推論するのに役立ちます。なぜなら、データセット自体に推論の例を見たからです。
クールなのは、LLMが間違った答えを出した場合でも、正しい答えを与えて根拠を求めることができることです。このやり方で、根拠を得る方法は2つあります。1つはLLMが自動的に生成する方法、もう1つは正しい答えを与えて根拠を求める方法です。
これにより、すべての根拠を含むデータセットをキュレートすることができます。モデルが改善されるにつれて、この根拠はどんどん高度になっていきます。改善されたモデルに根拠を与えてもらうことができるからです。
例を挙げましょう。後で見ますが、質問が「1+1は何ですか」の場合、根拠は「これを行う方法は、指を数えることです。1本の指に1本の指を加えます」となり、答えは「2」となります。
根拠がなければ、「1+1は何ですか」という質問に対して、この答えにたどり着くのはそれほど明白ではありません。この根拠は、思考の連鎖による推論としても知られています。物事をどのように考えるべきかを教えてくれるからです。
このスター論文の面白い点は、多くの引用がされていますが、LM自体でデータセットを拡充できることです。自身の学習をブートストラップしているようなものです。LMが考え出したこの根拠が、訓練するデータセットの一部になります。
これに基づいて、より良い根拠が得られ、データセット全体に一般化されるにつれて、さらに良い根拠が得られます。これには利点があると思います。o1も似たようなものを使っていると思います。なぜなら、根拠の中に「rを数えるために、総数に達するまでrにタグ付けする必要がある」というようなことが含まれている可能性があるからです。
これは他の似たようなタスクに転移学習できる可能性があります。しかし、タスクが訓練前のタスクと大きく異なる場合、この根拠が進歩を妨げる可能性があります。これはどういう意味でしょうか。
既にこの根拠を生成する方法を学習していて、以前とは全く異なるタスクを与えられた場合、例えば「1+1は何ですか」という答えが「10(2進数)」である場合、訓練セットには2進数に関する情報が何もないかもしれません。「1+1」については、モデルに2進数の知識があるかもしれませんが、この根拠がプロセスを上書きしてしまうため、データセットに含まれているため、次のトークン予測はこの根拠を予測し、2進数のルートを通って答えにたどり着けない可能性があります。
これは、あの有名な例、「外科医は男の子の父親です」というケースです。ここにテキストの塊があって、「外科医と男の子の関係は何ですか」と尋ねる場合です。実際の答えは「父親」です。なぜなら、それが既に与えられているからです。
ちなみに、この問題を見たことがある人はいますか?
o1でこれをテストしていませんが、オンラインで読んだところによると、私の推測では、論理的なデータセットでは、この種の頭を悩ます問題の答えは常に単純明快ではありません。少なくとも私がLinkedInの投稿などで見た限りでは、これが単純明快な答えではないと推測しようとしているようです。
この答えに対して、異なる種類の反応を推測しようとしています。単純明快ではない答えを推測しようとするのです。得られる答えは「外科医は男の子の別の父親だ」とか「外科医は男の子の母親だ」といったものです。
これは、おそらくこの種の根拠の訓練を行うと、タスクが異なる場合に正しい答えを得るのが難しくなるためだと思われます。これは一種のバイアスです。o1もこれを行っているのではないかと推測します。
根拠を、おそらく根拠のブートストラッピングや、PhDの学生に正しい方向性を書いてもらうことなどで、モデルのデータセットの一部として取り込んでいるのでしょう。これはGPT-4に比べて明らかな改善です。確かに大きな改善です。なぜなら、GPT-4はそれほど優れていないからです。
このような根拠のブートストラッピングを使用している場合、スター方式のような方法を使用している場合、改善は非常に大きいです。しかし、これらの改善は、おそらくこれらのドメインに限定されています。全く異なることをしようとすると、転移するかどうかはわかりません。
皆さん、「学校で人間の学生が学ぶのとそれほど変わらない」とおっしゃいますね。そうかもしれません。良い教師から学べれば、これは良いでしょう。しかし、ブートストラッピングの場合、推論はLM自体によって生成されます。LMが推論や根拠の生成が得意でない場合、良い結果は得られません。
私の推測、あるいはどこかで見たことがありますが、彼らは自己学習する際にも人間のデータを使ってブートストラップしています。自己生成した推論の訓練バイアスを生成する際にも、人間のデータを使用してSTRを強化しています。AlphaGoの初期段階で専門家の人間のデータを使用したのと考え方は同じです。
そうですね、それはあり得ます。人間の専門家のデータで根拠を始め、その後モデルが将来の根拠を自己生成するというのは十分にあり得ます。スライドには入れませんでしたが、実際にはよくわからないんです。強化学習の方法があると言っただけで、それ以外は何も言っていません。YouTubeのプレビューを見ると、研究者の一人が少し触れていましたが…待てよ、違いました。彼らは生成的なものを使用したと言っただけで、ブートストラッピングについては本当に何も言っていませんでした。
心配しないでください。内部がどのように機能しているかについては全く分かりませんが、少なくともこのブートストラッピングのアイデアは私には理にかなっています。オンラインで見たことに基づいて、これが当てはまると思います。
そうですね。効率的なサンプルについて言及していたのを覚えています。以前の訓練方法よりもはるかに効率的だと。サンプル効率という意味では、彼らはそのアプローチを考えているように思えます。
はい、その通りです。強化学習の部分について個人的に思うのは、実際には強化学習ではなく、おそらく正しい根拠を得て、それをブートストラップすることだけかもしれません。それを強化学習と呼んでいるだけかもしれません。
伝統的な強化学習、つまりスカラー値で答えの良し悪しを判断する報酬モデルを使用するのは、良いアプローチだとは思いません。ここで少し先走ってしまいましたが、スライドを見ていけば、結局強化学習の部分に戻ってきます。
では、スライドを見ていきましょう。まず、伝統的な思考の連鎖から始めます。伝統的な思考の連鎖はこのようなものです。数学の問題があります。「ロジャーはテニスボールを5個持っています。さらに2缶のテニスボールを買います…」答えは11です。これは正解です。
しかし、ワンショットの例では、「今、カフェには23個のリンゴがあります。20個を使ってランチを作り、6個買います。カフェにはいくつのリンゴがありますか?」答えは27です。これは間違いです。
モデルがこのワンショットの例から学ぶのは、答えだけです。なぜならテニスボールがどのように足されたのかわからないからです。しかし、答えに根拠を含めると、例えば「5個のボールと2缶の3個のボール、6個。5+6=11」とすれば、モデルに出力を求めた場合、同様のスタイルで「最初に23個のリンゴがあり、ランチに20個使った。23-20=3。さらに6個のリンゴを買った。3+6=9」というように答える可能性があります。
より良い答えを使用することで、高校の教師に答えにラベルを付けてもらったと思います。これはOpenAIが行ったことかもしれません。PhDの学生に時給を高く設定して雇い、これらの質問に拡張された推論で答えてもらったのではないでしょうか。
数十億ドルの企業にとって、PhDの学生に時給数百ドルを払うのはたいしたことではありません。このような答えの巨大なデータセットを持つことができ、これらの答えはLMのタスク解決能力を向上させるのに役立つ可能性があります。なぜなら、ステップがよく定義されており、これらの各ステップが問題を単純なステップに分解するのに役立つからです。
ここでは、全体を一度に行うのではなく、まず23-20=3を行い、次に3+6=9を行うと言っています。他の論文を見ると、「Let’s think step by step」と呼ばれるものがあります。LMはゼロショットの推論者になれるという有名な論文です。
彼らは、このような詳細な推論の答えを与える代わりに、単にLMに「Let’s think step by step」とプロンプトを与えるだけで、数学の問題に対してこのような推論を生成できると言っています。
私が最も好きなフレームワークは、REACT(推論と行動)フレームワークです。彼らは基本的に環境から観察を取り、モデルに思考を出力させ、そして行動を出力させます。「Let’s think step by step」と言う代わりに、これはより構造化されたアプローチです。
例えば、「床に缶がある」と観察したら、「私の目標は缶を拾うことだ、拾うべきだ」と思考し、行動として「拾う」を出力する、といった具合です。このREACTフレームワークは非常に有用で、実際、私も似たようなバリエーションを広く使用しています。
これは環境自体により良く根ざすのに役立ちます。「Let’s think step by step」よりもずっと良いです。この種の推論は、o1が使用しているものよりも優れていると思います。なぜなら、o1は一般的な問題に対してこれを行っているからです。一般的な問題に対して、おそらくどんなドメインにも適用できるとされていますが、あまりに一般的すぎるのは良くないかもしれません。
あまりに一般的すぎると、ここに示すような方法で思考を導くことができなくなる可能性があります。これは環境ベースのシミュレーションです。環境から何かを取り、推論を求め、行動を取るように求める方が良いかもしれません。このようなアプローチの方が、「Let’s think step by step」と言ったり、ここにある例を与えたりするよりも、より構造化されており、より堅牢だと思います。
これらが思考の連鎖が従来どのように行われてきたかの例です。時間の都合上、次のスライドに進みます。後で質問の時間を設けますね。
OpenAIが行っているのは、LMをエージェントでラップし、そのエージェントに次のステップを見つけるよう求めることに似ています。Task genは本来的にこれを行います。例えば、タスクは「pと押韻する単語を見つけて、それについてポエムを書いてください」というものかもしれません。
最初のステップは「pと押韻する単語は’cool’です」かもしれません。2つ目のステップでは「これがポエムです」と言って、ポエムを書きます。最後のステップでは「修正しましょう」と言って、洗練させるかもしれません。
このような流れは、初期のプロンプトを改善するための数ステップとしてごく自然なものです。各ステップは前のステップからすべての情報を取ることができます。なぜなら、それが必要だからです。’cool’という単語が使われたことを知る必要があります。2つ目のステップに進んでポエムを得て、そのポエムを3つ目のステップで使用して改善します。
実際の探索的思考の連鎖では、ユーザーに出力を表示することもできます。gpt-o1は安全上の理由からこれを表示せず、代わりに要約を示すと主張しています。
ここで強調したいのは、前のステップからすべての情報を取ることは理にかなっているということです。次のトークンを生成する際に、以前のすべてをコンテキストとして使用できるからです。この探索的思考の連鎖は、gpt-o1のようにさまざまなサブタスクを生成する上でもLMのコンテキストで理にかなっています。
唯一の欠点は、無関係なコンテキストを得る可能性があることです。すべてを次のタスクのコンテキストとして使用すると、時々最初のステップで「Xは1です」と言い、次のステップで「Xは2です」と言うかもしれず、混乱する可能性があります。
私が考えるに、既に固定されたタスクがある場合、全体を渡すのではなく、関連する情報だけを渡す方が良いかもしれません。これは、一般的なシステムと特定のシステムの間のトレードオフだと主張します。
私の主張は、特定のシステムや特定のタスクに使用するべきだということです。実行時に定義されていないタスクに対しては一般的なモデルを使用します。既に特定のタスクがあり、単語と押韻するポエムを作成したい場合、以前のすべてのコンテキストを渡す必要はありません。必要なものだけを渡せばいいのです。
プロセスを既に知っている場合はこれが可能ですが、実行時にどのようなタスクになるか分からない場合は、以前のすべてをコンテキストとして入れることが理にかかっています。必要なものが分からないからです。
これはトレードオフです。これは産業界のニーズにより適しています。非常に特定のプロセスを正確に行いたい場合は、各ステップに必要なものだけを次のステップに渡します。gpt-o1のようなものは、後者のケース、つまり実行時に何をする必要があるか分からない場合に有用です。その場合、推論にもっとコストがかかっても、仕事が完了すればいいのです。
私はgpt-o1がこの探索的思考の連鎖を非常に密接に模倣していると信じています。コメントや質問はありますか?
あなたの、前のステップから関連するコンテキストを選択することについてのコメントですが、それは些細な問題ではありません。しかし、それを解決すれば信頼性を大きく向上させることができます。ステップ3が必ずしもステップ2から最も関連する情報を持っているとは限らないからです。
その通りです。以前のものから何が必要かによります。このフローを事前に知っている場合は、既に「これらは得たい変数だ」と指定できます。これは再びo1のコンテキストに基づいていますが、o1の場合、安全のために以前のすべてを渡していると仮定するのが安全だと思います。
わかりました。これは探索的思考の連鎖を使ってo1のような振る舞いを実現する一つの方法です。私が発見したのは、彼らが実際に同じステップを複数回、私の実験では約2回行っているということです。
私の推測では、すでにメタステップがあり、そのメタステップ内で2つの異なるモデルや異なるバイアスを持つ2つのモデルを使用して2つの異なる出力を得て、その出力を統合し、次のステップに渡している可能性があります。
これが複数のサンプリングと統合を行う一つの方法です。もう一つの方法、これはOpenAIのケースではより実行可能かもしれませんが、1つのエージェント、1つのモデルがここにあり、タスクを入力して出力を得ます。そして別のエージェントにタスクを入力して出力を得ます。
そして、これらすべての推論トレースを3つのモデルまたは2つのモデルのすべてに渡すことができます。これもタスクを完了する一つの方法です。
もう少し堅牢性を求める場合は、2つまたは3つの異なるエージェントにタスクを行わせ、共通の答えを統合することもできます。前のスライドで見たのはステップベースの統合でしたが、エージェントベースの統合も可能です。
実際、これは好ましいかもしれません。なぜなら、各エージェントを並列で実行でき、すべてのエージェントが各ステップを終えるのを待つ必要がないからです。これはより速い可能性があります。
ARCチャレンジなどでも示されているように、出力を複数回サンプリングするだけでも、モデルが答えについてある程度のアイデアを持っていれば、全体的により良い結果が得られる可能性があります。通常、複数サンプリングはパフォーマンスを損なわず、通常はパフォーマンスの向上につながります。
これは実際にo1に組み込まれている可能性が高いと思います。o1は単なるLMモデルではなく、2つのLMモデルかもしれません。後でなぜそう思うのか説明します。少なくともウェブ版のo1 previewではそうだと思います。
これが、複数ステップの思考の連鎖の最後の変種として考えられるものです。単に異なるエージェントを使用する代わりに、ここにタスクがあり、「これを1回サンプリングしよう」と言うことができます。ここで1ステップを得て、タスクの解決にどれだけ近いかを何らかの報酬モデルでスコア付けできます。
次のステップでは、「これが最高スコアだ、これをすべきだ」と言うかもしれません。ここでスコア0を得ます。モンテカルロ探索のようなものを行う場合、「スコア1だとわかっているが、他のことをまだ探索していない」と言うかもしれません。探索ステップを行って別のステップを見つけ、「ああ、スコア0.5か。あまり良くない」となります。
次のステップでは再び活用するかもしれません。これは、探索と活用の方程式に基づいています。興味があれば、UCB(Upper Confidence Bound)またはUCT(Upper Confidence Bound for Trees)と呼ばれています。通常、モンテカルロツリー探索でこの種のものが使用されます。Googleしてみてください。
次のステップでは活用したいかもしれません。これを得て、「ああ、スコアが1だ。とても良い」となります。ここから最も有望な枝を選びます。ここでは上位Kパスを示していますが、最も有望なパスであるこのパスを選んで、答えを得ます。
このようなツリーアプローチは、複数のエージェントや各ステップでの繰り返しプロセスよりも優れている可能性があります。最も有望な枝に時間を費やすことができるからです。
しかし、欠点は何でしょうか。欠点は、毎回最も有望なノードを選んで展開する必要があるため、ノードを評価する方法が必要になることです。答えにどれだけ近いかを見る必要がありますが、LMに関する私の理解と使用経験から言えば、LMは最終的な答えにどれだけ近いかを判断するのが非常に下手である可能性があります。
時々、「ああ、とても近い、これが正しいアプローチだ」と考えるかもしれませんが、自信を持って間違っている可能性があります。信頼度スコアを求めても、LMも間違える可能性があります。この正確性の判断は、おそらく誤りだらけでしょう。
一つのドメインでこのスコアをうまく訓練できるかもしれません。人間のラベラーにどれだけ近いかをラベル付けしてもらい、そのスコアでRHF(Reward Hacking Framework)などを行うことができます。しかし、問題は、このスコアが非常に恣意的だということです。
LMベースの場合、誤りだらけになる可能性があります。人間からのRLの場合、他の類似していないドメインに一般化する際に誤りが生じる可能性があります。一般的に、私はこのようなRL(強化学習)ベースの、スコアベースの方法にはあまり楽観的ではありません。特にスコアが1つの数字だけの場合はそうです。
その数字は何を教えてくれるのでしょうか?ほとんど何も教えてくれません。良いか悪いかを言うだけで、なぜ良いのか、なぜ悪いのかは述べられていません。子供を罰したり褒めたりするときに、なぜ罰したのか、なぜ褒めたのかを説明しないようなものです。子供はそれほど速く学びません。「この行動をしたら褒められた。似たようなことをすれば褒められるかもしれない」と考えるかもしれませんが、要点を見逃している可能性があります。
このようなスカラースコアを使用した強化学習は、AlphaZeroではうまくいきました。何年もの計算時間をかけて訓練したからです。しかし、一般的な実生活のユースケースではうまくいきません。分散が大きすぎます。囲碁は非常に制約の多いゲームです。実生活でこの方法を試みても、スケールしないでしょう。
ですので、私はRLが良い解決策だとは思いません。この種の研究をしたい場合、一つの方法は、LMにスコアを評価させることです。これにはRLは含まれていません。LMに、例えば0は見込みがない、1はやや見込みがある、2は非常に見込みがあるというようにカテゴリー分類させるのです。
LMに信頼度スコアを与えさせるよりも、このように分類させる方が良いと思います。なぜなら、少なくとも分類する際には、これらの意味的な意味を使用して分類できるからです。0から1の間のスコアを生成するように求めると、そのスコアには全く意味的な意味がありません。
同じ質問に対して、0から1の間で評価するように5、6回求めると、毎回異なるスコアが得られます。しかし、カテゴリー分類を求めると、おそらく毎回同じカテゴリーが得られるでしょう。
これを使用したい場合のテクニックです。これを使用して枝を分類し、モンテカルロツリー探索のようなアプローチでツリーを展開することができます。
これに関する有名な論文は、MCTS-R(Monte Carlo Tree Search plus Refine)と呼ばれるものです。各ステップで新しいノードを生成した後、プロンプトで洗練します。もう一つは「Tree of Thoughts」で、深さ優先探索を行う際に、ここでいくつかのサンプルを生成し、最も有望なKサンプルを選んで次のステップに進みます。
つまり、これを行うさまざまな方法があります。主なアイデアは、各ステップでたくさん生成し、それをフィルタリングすることです。生成、サンプリング、フィルタリング、生成、サンプリング、フィルタリングというように行います。
モンテカルロ探索のようなアプローチで行うかもしれませんし、可能なすべてのノードを一括して生成し、フィルタリングするかもしれません。しかし、何らかのランキング関数、スコアリング関数が必要です。このスコアリング関数は計算が簡単ではありません。
OpenAIがこの方法を訓練に使用したのであれば理解できます。人間のフィードバックからこのスコアを使用して、ドメイン全体にスケールし、少なくともデータセットの生成において、より有望な枝を選択したかもしれません。
おそらく、正しい推論トレースを得るための最も有望なアプローチを見つけるために、MCTSスタイルを使用してデータセットを生成した可能性があります。これが、以前「Q*」と呼ばれていた理由かもしれません。誰も何なのか知りませんでしたが、このストロベリーモデルもそうかもしれません。
しかし、少なくとも推論時には、MCTSのいかなる形式も使用していないと強く疑っています。なぜなら、それには非常に時間がかかるからです。MCTSを行ったことがある人なら、これがリアルタイムの本番使用ケースにはあまり効率的な方法ではないことがわかるでしょう。
本番では、おそらくこのようなエージェントレベルのサンプリングを使用している可能性が高いです。
ここで一旦止めます。ここまでで質問はありますか?かなり多くの技術的な内容をカバーしたので、少し休憩を取りましょう。
質問がなければ続けます。複数のサンプリングを使用して答えを得る際の課題の一つは、サンプルが十分に多様であることをどう確保するかです。似たような出力を得たくありません。なぜなら、それではサンプリングの意味がないからです。異なる経路や異なるエージェントから異なる入力を得たいのです。
DeepMindの「Prompt Breeder」という興味深い論文があります。ここでは、システムの最適なプロンプトを見つけようとしています。プロンプトを突然変異させることで、どのように行っているのでしょうか。実際には、ここにいくつかの思考スタイルを追加し、プロンプトをどのようなスタイルで修正したいかを示す突然変異プロンプトを追加しています。
例えば、ここでの指示は「この数学の問題を解け」かもしれません。そして、他のスタイル、例えば「とても賢く見える体系的な答えを作成せよ」などが出てくるかもしれません。
主に言いたいのは、例えばこの数学の問題を解くという突然変異を行った後、「とても賢く見える体系的な答えを作成せよ」というような変異したプロンプトが得られる可能性があるということです。元のプロンプトを得た後、いくつかの思考スタイルや突然変異スタイルを与えると、このようなものが得られます。
これは、出力が少なくともかなり異なることを確保するのに使用できます。例えば、一つの枝で「簡潔に考えよ」と言い、別の枝で「ステップバイステップで考えよ」と言うかもしれません。
この場合、一つの枝に非常に単純な答えを与えるよう促し、もう一つの枝にはもう少し複雑なものを与えるよう促しています。これは全体的に有益です。なぜなら、これをマルチエージェントシステムと見なすと、各エージェントが異なる個性を持つことができるからです。
一部は簡潔で、一部は冗長で、一部は計算機があるためより数学に基づいているかもしれません。一部はより物理学ベースで、一部はテキストベースかもしれません。これらはマルチエージェントシステムで行える異なることです。
o1はまだそこまで達していないと思いますが、より堅牢な出力を得たい場合は、このような形式のマルチエージェントシステムが必要だと思います。各エージェントに異なる特性を持たせ、生成をバイアスすることができます。
この突然変異プロンプトや思考スタイルは、プロンプトをバイアスする方法と考えることができます。これはかなり必要だと思います。なぜなら、同じエージェントに出力を複数回生成させると、同じ出力を得る可能性があるからです。
問題の複雑さに応じて、同様の出力を得る可能性は変わりますが、一般的に、このように生成をバイアスするのは良いアイデアです。これはOpenAIの訓練で行われている可能性があります。異なる枝を探索する際に、異なるバイアスを与えたい場合などです。
再度、彼らがどのように行ったかについては詳細を公開していないので、わかりません。しかし、ここで同じモデルから生成するだけでは、バリエーション1とバリエーション2の間にそれほど大きな違いは得られない可能性があります。ヒント1とヒント2のような形で、生成をバイアスするための何らかのヒントを与えた方が良いかもしれません。
これが私の考えです。ウェブ版のgpt-o1では、非常に可能性が高いのは、2回の繰り返しサンプルを使用していることです。いくつかのタスクを試してみると、これが2つあり、L1も2つあることがわかります。
皆さんにも同様の経験があるか聞いてみたいと思います。o1を使用する際に、思考の連鎖の中で繰り返されるサブタスクやステップを見たことはありますか?誰か経験を共有できる人はいますか?私は非常に興味があります。週に30メッセージしか試せないので、これしか試せませんでした。皆さんはどうですか?
チャットで「まだです」という回答がありましたね。まだ試していない人もいるかもしれません。心配しないでください。試してみたら教えてください。これが正しい観察かどうか、非常に興味があります。これはまた私の推測に過ぎません。
次に、OpenAIは思考の連鎖によってより堅牢なチェックができると主張していますが、実際にどの程度チェックできるのでしょうか?LMは自身の検証者や批評家になれるのでしょうか?
o1以前の結論は、おそらくできないというものでした。なぜなら、LMが専門家でない場合、例えば数学で、数字を正確に計算できない場合、どうやって自身を批評できるでしょうか?文字を数えることについても同じです。これはLMの処理スペースの自然なドメインではありません。
o1が登場した後でも、私の直感は変わっていません。より規則ベースの、より信頼できるものが必要だと感じています。例えば、千番目の素数を生成するためにPythonコードを使用する方が、LMに推論させて千番目の素数を得るよりも良いです。
計算機についても同じです。大きな数を掛け算するために計算機を使用する方が、LMにステップを推論させて答えを得るよりも良いです。
大規模言語モデルを自身の根拠で訓練する、STaRアプローチには利点があります。しかし、それがものを解決する最良のアプローチではありません。一部のことには信頼性が必要で、これらは信頼できないものです。
LMは非常に信頼性が低いので、二つを組み合わせる必要があります。o1は、より信頼性を高めるためにこれらのツールを使用していないと思います。おそらく単にLM自体を使用しているだけで、これは私の意見では大きな欠点です。
ルーカスさんが言っています。「問題が複雑な場合、時々多くの思考ステップを使用します。約15ステップくらいです。」もちろん、問題が複雑になればなるほど、思考の連鎖がより多くのステップを生成する必要があるかもしれません。訓練セットにもそれが反映されているかもしれません。より複雑な問題には、より多くのステップがあるかもしれません。
次の点に移りましょう。LMモジュールについては先週カバーしました。主なアイデアは、ここにプランがあるということです。LMがタスクを解決するためのプランを応答します。タスクはユーザーによって与えられます。ここにプランがあり、このプランは多くの批評家によって批評されます。これらの批評家は、ルールベースの批評家やLMベースの批評家かもしれません。そして、批評家のフィードバックに基づいてプランを改良できます。
実際、全体の図はかなり複雑です。ここで注目してほしい主なポイントは、ルールベースの批評家があるということです。これはプロフェッサー・スバロの論文からのものです。私がこれについて気に入っているのは、プランが正しいかどうかを判断できるルールベースの批評家のアイデアです。
実際、プランを批評することが最良のアプローチだとは思いません。これを単にLMの応答と見なす方が良いかもしれません。より一般的な観点から見ると、LMの応答を与え、異なる批評家がいるかもしれません。数学の場合は計算機、プログラミングの場合はコンパイラなどです。
これらの批評家は何かを評価し、「あなたのコードが間違っている」とか「あなたの数学が間違っている」などと教えてくれるかもしれません。これにより、LMの出力をより堅牢にするフィードバックループが作成されます。なぜなら、これらの批評家は真実にしっかりと根ざしているかもしれないからです。
LMベースの批評家を使用して、例えば感情がポジティブかどうかを判断する場合でも、批評家がLMの強みであるテキスト理解に関連していれば問題ないと思います。
このようなものは、システムをより堅牢にします。o1に関する私の実験に基づくと、このような機能を全く使用していないとかなり確信しています。おそらく計算機やコードジェネレータなどは持っていません。
推論ステップの一つとして、これらをCHに統合すれば、コンパイラとチェックしたり、計算機とチェックしたりできるでしょう。これによって大きく改善すると思います。これはプロフェッサー・スバロも共有している意見だと思います。彼もLinkedInの投稿でこれについて触れていました。
これは現在欠けているものであり、gpt-o1の後続バージョンに追加されるべきだと思います。
では、私の考えに移りましょう。その後、短いディスカッションを行います。
gpt-o1はかなり印象的だと思います。o1にはこれがない、あれがないと言ってきましたが、これは「推論のための最初のモデル」と呼ばれることを意図していると思います。だからこそ、GPT-5ではなくo1と呼んでいるのでしょう。GPT-4と比較したくないからです。
o1は実際にかなり印象的です。多くの論理的な質問、コードに関連する質問に答えます。コンパイラを持っていない、あるいはコードコンパイラを持っていないという推測を考えると、実際にそれほど悪くありません。コードに関することができます。
GPT-4ではできなかった多くのことができます。そして、この推測されるツール統合の欠如は、ルールベースの検証者などがLMのパフォーマンスを向上させるために使用できないことを意味しますが、これは後のバージョンで修正できます。より探索的な形式のツール使用を許可するか、ツール使用を可能にする探索的構造でo1をラップすることができます。それは可能です。
次に、o1は少しエージェントのように感じます。複数のステップがあり、それらのステップについて考えるからです。この思考プロセスをもっと強調すべきだと思います。現在、非常に複雑な問題に対して40秒から1分かかり、この思考プロセスをあまり制御できません。すべてが微調整データセットに基づいています。
LMが応答についてもっと考えられるようにするというアイデアは好きですが、この再考部分は探索的フレームワークの上に置く方が良いと思います。なぜなら、STaRリーズナーを使用して根拠を与え、その根拠で微調整すると、微調整されたモデルの考え方を変えるのが非常に難しくなるからです。
このようなLM構造には利点があると思いますが、これがデフォルトで使用すべき構造だとは思いません。なぜなら、もしこれがデフォルトになると、その動作をどのように制御するのでしょうか?何もできません。これはすでに与えられています。
OpenAIがステップ数を制御するパラメータを与えたいと思っても、非常に難しいでしょう。なぜなら、推論時にのみ影響を与えているからです。しかし、すべてのステップは事前訓練スペースで訓練されています。
しかし、これを探索的構造として置けば、より多くの構成性、より多くのカスタマイズ性を得られます。ステップ数を指定したり、モデルに特定の方法で考えるよう指示したりできます。
この根拠に関するもう一つのことは、すべての根拠学習をo1にパッケージ化すると、モデルの改善がどれだけ基本的なLMの強化によるものか、どれだけが思考の連鎖の一部によるものかを言うのが難しくなることです。
これにより、他のモデルと比較するのが非常に難しくなります。明らかに、推論時間ははるかに長くなり、コストも大幅に高くなります。
私は、おそらく根拠に基づいてデータセットで微調整できますが、o1が答えを出すのに40秒かかる必要はないと思います。以前と同じ時間で、根拠ベースのデータセットで微調整されたものであれば良いと思います。
そうですね、ある意味でモデルに組み込まれているんです。これも、この種の思考の連鎖が組み込まれたLMモデルが過度にバイアスがかかる可能性がある理由だと思います。
私は、モデルがすでにGPT-4のように、以前のモデルのように、速く答えを出せるものの方が好みです。思考の連鎖は、我々が自分で微調整できます。OpenAIに微調整してもらうよりも。なぜなら、これは本当にユースケースに依存するからです。
OpenAIが、すべての異なるドメインで同様にうまく思考の連鎖を行えると主張しない限り、彼らが我々のために微調整できるでしょう。しかし、これらは私の考えです。本当に探索的フレームワークのように見えます。基本的なLM自体がこの種の訓練方法を持っているというよりも。
しかし、これらは私の考えです。これは素晴らしいと思うかもしれません。探索的フレームワークなしでこれを使用できます。確かに。しかし、私は探索的フレームワークがまだ必要だと思います。なぜなら、そうすることでより多くのカスタマイズ性が得られ、さまざまなものを統合できるからです。
ここで注意点があります。思考の連鎖がモデルに組み込まれていても、gpt-o1の上に探索的フレームワークを使用することはまだ可能です。単に非常に遅くなり、高価になるだけです。探索的フレームワークは、思考の連鎖が組み込まれたモデルでは修正できないいくつかのことを修正できるかもしれません。これは可能だと思います。現在は遅く高価なだけです。数年後にはこれが実行可能になるかもしれません。
ここで何か明確にしたいことがありますか?はい、どうぞ。
推論時間のコストやo1の1回あたりのコストは、特定の部分に依存すると思います。例えば、「strawberry」の中に何文字の「r」があるかを尋ねるだけなら、数秒しかかかりません。それほどコストがかかりません。
私は、o1と探索的フレームワークを組み合わせても、推論時間のコストが大幅に増加することはないのではないかと思っています。なぜなら、探索的フレームワークが、あるo1エージェントの答えが十分に良いと判断した場合、多くのアンサンブルや投票などを行う必要がないからです。
現在、探索的フレームワークが行っているプロセスの一部、例えば反省ステップなどを、LM自体にアップロードすることも可能です。つまり、より強力な個々のエージェントに時間を前もって使うか、探索的フレームワークに時間を後で使うかの問題です。
はい、それは可能です。LMに思考の連鎖を前もって組み込むと、それを制御するのが難しくなります。なぜなら、すでに訓練に組み込まれているからです。
原則的には、モデルにシステムメッセージを与えることを妨げるものは何もないと思います。デフォルトの動作と直接的に矛盾しない限り、思考の連鎖を少し制御することはまだ可能かもしれません。
問題は、現在システムプロンプトを与えることを許可していないことです。確実にテストすることはできません。見てみる必要があります。原則的には、何かシステムメッセージを与えることを妨げるものは何もないはずです。
はい、APIがより一般的になったときに試すことができるでしょう。現在、APIはOpenAIの特定のティアにのみリリースされています。
実際、ティア5を持っていても現在はできません。なぜかはわかりません。
そうですね、おそらく一部の誤った動作を引き起こす可能性があるからでしょう。
再び、これはバイアスに関することです。LMの多くのことにバイアスをかけることができ、特定のタスクのパフォーマンスを向上させるのに役立ちます。しかし、他のタスクを行いたい場合、このバイアスは望ましくないかもしれません。
既にこのようにバイアスがかかったLMがある場合、それは探索的フレームワークに使用する最良のLMではないかもしれません。
しかし、私の質問は、o1が大幅な改善を示さなかったベンチマークのドメインについて、何らかの形式の思考の連鎖プロンプトが役立つかどうかです。
確かにそうですね。例えば英語や…
そうです。自分でプロンプトを与えても、あまり改善できない可能性があります。おそらく、それらは推論ベースのタスクではなく、推論があまり役立たないタスクだからかもしれません。
英語や広報の専門家にコメントしてもらう必要があるかもしれません。これらは私の専門分野ではないので。
しかし、これは非常に興味深い議論です。思考の連鎖がすべてのドメインで有益であれば、LMに組み込む意味があるかもしれません。そうすれば、探索的フレームワークでやるべきことが少なくなる可能性があります。
次に進みましょう。これは意見の問題なので、正解も不正解もありません。私はただLMの方が速い方が良いと言っているだけです。
次に、強化学習を使用して訓練することについてです。ツリー探索の図を見たと思いますが、ツリー探索の使用を訓練するために強化学習を使用するのはあまり良くないと思います。なぜなら、結果が正しいかどうかを単なる数字でどのように判断できるでしょうか?
報酬モデルはタスク全体でどのように効果的に学習できるでしょうか?私の答えは、できないということです。より良い方法は、LMに応答を分類させることです。ここで多少のエラーが発生する可能性がありますが、後で専門家のデータ作成で修正できるかもしれません。
これを行う方法はいくつかあります。あるいは、専門家のデータでブートストラップしてから分類を求めることもできます。このようにデータを分類する方法は、報酬モデルを使用するよりも良くスケールする可能性があります。
これについては確信が持てません。もちろん、分類を求めると、データが限られているため、焦点が狭くなる可能性があります。報酬モデルは潜在的にはるかに多くのことにスケールできます。ただし、スカラー数を使用して目標への近さを判断していると仮定しています。
このスカラー数が良いのか、LMに応答を与えさせる方が良いのかはわかりません。私の意見では、これの方が良いと思います。なぜなら、単なるスカラー数よりも多くの情報が含まれているからです。
ここで注意点があります。彼らが使用している強化学習がこのような、目標への近さを判断するだけのスカラー数だと仮定しています。
もし彼らが使用している強化学習がこれではなく、STaRのような自己教師型推論者のようなものであれば、LMのデータセットに推論をブートストラップするこのアプローチは受け入れられます。これは理にかなっていると思います。ただし、多くのバイアスを構築することになります。そのバイアスを取り除くことはできません。微調整を行った場合、そのバイアスを取り除くことはできません。
しかし、これは私には問題ないと思います。彼らが使用している強化学習がこれであれば良いと思いますが、タスク全体にスケールするための単一の数字を使用しているのであれば、これは非常に良くないと思います。
これらは私の考えです。もし議論したいことがあれば、喜んで聞きます。
私の推測では、彼らは思考の連鎖の後処理のためだけに強化学習を使用しているわけではありません。確かに、専門家と合成的な推論の連鎖データの両方で微調整を行っていると思います。強化学習だけを使用して、モデルを望む推論パターンに導くことはできないからです。
あなたが言ったように、この報酬シグナルは非常に疎だからです。しかし、ベースモデルが既におおよそどのような出力を望んでいるかの感覚を持っている場合には役立つかもしれません。そして、強化学習を使用して、非常に細かいレベルでもう一層の微調整を行うかもしれません。
ブートストラップの部分については、最初の部分、つまり応答を分類することは、既に監督付き微調整かもしれません。専門家に応答の分類を手伝ってもらっているかもしれません。
異なる段階で異なる方法を使用する多段階のアライメントと考えることができます。
その可能性はありますね。実際、最後の段階はRHFに似たものであると強く信じています。OpenAIはRHFをかなり重視しているので、この報酬モデルが実際に使用されている可能性があります。
すでに大きなベースライン知識が組み込まれた状態でこれを最終段階として話しているのであれば、これは可能かもしれません。
そうですね。ここで止めておきましょう。微調整だけで十分だという人もいれば、強化学習が必要だという人もいるでしょう。私は微調整だけで十分だと考えていますが、OpenAIは強化学習の方が良いと考えているかもしれません。
十分なスキルがあれば、強化学習にもいくつかの利点があるかもしれません。OpenAIは確かにそのスキルを持っているので、彼らにとっては有用かもしれません。
次に、モデルに組み込まれた単一の思考の連鎖を使用するのではなく、異なるバイアスを持つ複数のエージェントを使用することで、思考プロセスの多様性を生み出すことができると思います。
実際、o1が十分に速ければ、o1上の探索的フレームワークでこれを行うことも可能かもしれません。これは、モデル内に思考の連鎖を事前に組み込むよりも良いと思います。
これは私の推測ですが、現在はツールを持っていないので、シミュレーションを行って応答を確認したり、新バージョンのテトリスやチェスでの動きを評価したりする必要がある場合、失敗する可能性があります。既存のチェスのバージョンであれば、訓練セットで遭遇している可能性があるので、まだ機能するかもしれません。しかし、かなり異なるものであれば、解決できない可能性があります。
強調したいのは、環境内で何らかの探索を行いたい場合、環境自体が必要になる可能性が非常に高いということです。あるいは、少なくともテストのために環境が必要になるでしょう。LM自体だけでテストすることはできません。
これは特にロボットシミュレーションなどで強調したいことです。現時点では、o1はそれらには機能しないと思います。プロセスの一部としてシミュレータを統合する必要があるでしょう。シミュレータを組み込むのではなく、統合する必要があります。
これは非常に重要な最後のポイントで、おそらく最初のポイントにすべきだったかもしれません。記憶構造が欠けているということです。環境から学びたい場合、学んだことをベクトルDBや知識グラフに保存する必要があるかもしれません。
RAGや知識グラフを使用して、必要な関連する三つ組を抽出することができます。この部分は実際に経験から学ぶのに役立ち、手元のタスクに基づいて関連する経験を抽出できると思います。
現在、o1はこれを保存していません。思考の連鎖を行う際、上のすべてのテキストを使用して解釈しているだけです。これは最も効果的な方法ではありません。
環境のためのこのような記憶構造がすでにある場合、一つはベクトルDB、一つは知識グラフ、もう一つの記憶構造は、様々な形式の抽出空間、グラフ、RAG、圧縮版またはテキストの要約版、および実際のテキスト自体かもしれません。
このようなものは、モデルの推論能力と世界理解を向上させるのに役立つでしょう。これは欠けているものだと確信しています。将来的には追加されるでしょう。私は実際にこの部分に積極的に取り組んでいます。記憶が学習にとって最も重要なものの一つだと信じているからです。
私の意見では、これは非常に大きなもので、現在o1に欠けているものです。
質問に移りましょう。各質問について簡単に触れ、何か追加したいことがあれば休憩を取ります。
最初の質問は、思考の連鎖は推論を引き出すための最良の方法ですか?
私の答えは、いくつかの文脈では「はい」です。例えば、文章問題などでは良いでしょう。しかし、外部の検証者やシミュレータが必要な場合は「いいえ」です。これらも思考の連鎖の一部にすることはできますが、現在の思考の連鎖の形式ではありません。これらをモデル自体に組み込む必要があります。
また、知識バンクから情報を取り出す方法が必要な場合、単なる思考の連鎖では不十分です。なぜなら、知識バンクはLMの記憶ではなく、外部の記憶かもしれないからです。
他にこの最初の質問についてコメントはありますか?
では、次の質問に進みます。次のトークン予測のみによる推論の潜在的な欠点は何ですか?
これについては触れました。LMが物事を幻覚する可能性があるため、信頼性が低い可能性があります。実際、技術論文を見ると、o1はGPT-4よりも幻覚を起こす可能性が高いです。
これは、あまりにも多くの推論を求めると、物事を考えすぎてしまう可能性があるためです。以前の推論ステップが真実として扱われる可能性があります。コンテキストが長すぎると、問題自体で実際に与えられたものと、彼らが考えたものを区別できなくなる可能性があるからです。
これは危険です。人間でさえ、頭の中で考えたことが、実際に起こったことと統合されてしまうことがあるからです。ここでは、o1の記憶の調整はありません。o1の重みは推論時に固定されているからです。しかし、追加のコンテキスト、無関係なコンテキストはパフォーマンスを損なう可能性があります。
モデルが出力するものが関連していることを確信している場合にのみ良いのです。しかし、間違ったものを出力した場合、推論のステップが別の方向に行ってしまい、それを後の推論ステップのコンテキストとして使用すると、正しい可能性のあるものとは異なる方向にバイアスがかかってしまいます。
これには明らかに欠点があります。特に、モデル自体に組み込まれた大きな思考の連鎖が問題に適していない場合、例えば数学で行うような思考の連鎖を必要としない英語の問題を行っている場合、これはパフォーマンスを損なう可能性があります。
次に、o1のデータセットはどのように作成されたのでしょうか?
根拠はLMによって生成され、データセットに入れられて微調整され、それを繰り返すというものです。PhD学生が最初の反復のための地上の真実を提供するのを助けたかもしれません。
これはおそらく、試験でこれほど良い成績を上げた理由です。おそらく、オンラインや他のどこにも存在しない、他のLMプロバイダーがアクセスできない手作りのデータセットなのでしょう。
再度強調しますが、LMの基本的なパフォーマンスは、データの質にのみ依存します。おそらく、ここで良いデータを作るのに多くの労力を費やしたのでしょう。
最後の質問です。LMが問題解決のためにできることの限界に既に達していますか?
実際、「はい」と言いたいところです。なぜなら、o1は以前のモデルから大きく逸脱しているからです。思考の連鎖をモデル自体に組み込もうとしている事実は、ウェブデータだけで訓練することの限界に達した可能性があることを示唆しています。
次のフロンティアとして、より良い探索的システムを使用して理解を引き出すことができると言えるかもしれません。しかし、これはもはやスケールしないと思います。なぜなら、マイニングできるデータには限りがあり、現在マイニングしているデータの多くは、他のLMによって生成された合成データである可能性が高く、これが最良の種類のデータではない可能性があるからです。
これを緩和する一つの方法は、PhDレベルの学生の知識を使用してデータを拡充することですが、これは遅く、潜在的に不正確です。これは知識を組み込む非常にスケーラブルな方法だとは思いません。
私たちが今必要なのは、より神経記号的なアプローチを検討することだと思います。例えば知識グラフのような学習構造を考えることができます。ただし、デフォルトの知識グラフではなく、より抽象的な概念を含むことができる新しい形式の知識グラフかもしれません。
このような構造を学び、質問に答えるためにそれらを抽出する方法を学ぶ必要があります。マルチエージェントシステムなども考えられます。推論を行い、このような問題を解決するには、もっと多くのことが必要です。
シミュレータについてもここに追加すべきでした。シミュレータ、記憶構造、マルチエージェントシステムなど、外部構造との統合がもっと必要になるでしょう。
問題解決のためにLMだけに頼ることは、おそらく最良のアプローチではありません。なぜなら、LMは非常に良い検証者や批評家ではないからです。o1は単語問題や論理問題にはうまく対応できるかもしれません。おそらくそれは訓練データセットに非常に似ているからです。
実際、人間も訓練データセットから大きく外れて考えることはあまりありません。新しいことを考えていると思っても、それも訓練データセットの一部かもしれません。私たちは皆、同じ環境の影響を受けているので、自分だけで新しいことを考えるのは難しいのです。
これが私の考えのほぼすべてです。最後の5分間で、これらの質問のいずれかについてコメントしたり、自分の質問をしたりする機会を設けたいと思います。どうぞ。
現在考えていることについて、最後の質問に追加したいのですが、この神経記号的フレームワークやLMが恐らく相互作用する必要がある異なるモデルやシステムを追加することの可能な利点はあるでしょうか。OpenAIのような企業なら余裕があるでしょうが、このフレームワークを作成し、訓練時にLMにフレームワークと相互作用させることの利点はあるでしょうか。データセットをキュレーションし、事前訓練する際に、これらの他のものも活用するということです。おそらく事前訓練ではなく、より微調整に近いものになるでしょうが。
記憶データセットで微調整することはできますが、私の答えは「いいえ」です。なぜなら、記憶は変化するからです。固定された環境に対して微調整することはできますが、環境が動的になる場合、固定された記憶で微調整することはできません。記憶は環境との相互作用によって変化するでしょう。微調整の外に置いておく方が良いです。
では、環境が同じでない限り、訓練時に統合する利点は見出せないということですね。環境が同じであれば、訓練時に統合する利点はあります。そうでない場合、バイアスの問題が発生します。モデルを特定の形式の記憶にバイアスをかけ、テスト時に異なる形式の記憶を与えると、一般化するのが難しくなります。以前にその記憶を見たことがある場合を除いてです。
実際、一般化する最良の方法は、入力に依存しないようにすることだと思います。使用している正確な記憶の形式を与えるのではなく、おそらく記憶自体の説明を与えます。そうすれば、どのような形式の記憶や入力を使用しても、共通の空間にマッピングできます。
あるいは、すべての可能な構成を含む巨大なデータセットで訓練する必要があります。そうすれば可能かもしれません。
はい、理解できました。あなたの説明は良いですね。実際、私もそのことについて多く考えています。過去数セッションで話し題にした状態遷移を持つ知識グラフのような形式のものを推論モジュールの中に入れることで、多くの改善が始まると思います。
単に推論を行うだけでなく、環境と何らかの接地が必要です。
あなたの最後のポイントについてコメントしたいのですが、利用できるデータがあまり残っていないと言いましたね。私はこれがまだ信号の問題だと感じています。インターネット上の多くのデータ、例えば研究論文を訓練したとしても、価値があるのは論文自体ではないと思います。
Lex Fridmanがこのコメントをしたと思いますが、学術研究に関して価値があるのは、その論文の公開につながった全思考プロセスです。しかし、それは明示的ではなく、インターネット上のどこにも見つけることはできません。それは研究者の頭の中にあるものです。実際にそれらを訓練することはできません。利用できないからです。
だからこそ、あなたの推測通り、PhDの学生を採用したのだと思います。それが価値のあるものだからです。次のステップは、おそらく価値のあるデータを抽出する方法を変えることでしょう。インターネット上で容易に入手できるわけではありません。別の方法を考える必要があります。価値のあるデータはまだたくさんありますが、それらにアクセスするのが難しいか、自分で問題を作成する必要があります。
数学の場合、最初の原理から問題を作成し、ステップを組み合わせることができます。例えば、加算を行い、次に剰余を行うというようにです。
しかし、それは非常に良い研究につながるものではありません。誰もが知っていることです。良いものは、インサイトや非常に質の高い研究を行っているすべての研究者のイマジネーションです。それは一般的なものではなく、単なる事実でもありません。何年もの経験の蓄積によるものです。
それは非常に価値があり、一般常識でさえないと私は主張します。
人間がそれをどのように学んだのか不思議ですね。PhDの学生にその知識がどのように組み込まれたのか、モデルの訓練にそれを使用しているのであれば。私たちがどのように物事を学ぶかについてもっと理解することが、AIシステムでこれをモデル化するために必要になると思います。私は、記憶が多くのことに関係していると信じています。
もう一つ、彼らのアプローチはAlphaGoとAlphaGo Zeroを思い出させます。AlphaGoゼロやAlphaZeroのように、ブートストラッピングの部分を完全に取り除くことは可能でしょうか?AlphaGo ZeroやAlphaZeroも、人間を使用しないため、いくつかの間違いを犯します。AlphaZeroの手が常に正しいとは限りません。
しかし、それが重要なのではありません。重要なのは、グランドマスターレベルでグランドマスターを打ち負かすことができるということです。私にとっては、1+1を計算できないシステムでも、超難しいタスクを手伝ってくれるならそれでOKです。それでも価値のあるものです。
ただ、チェスプレイから同じ直感や方法を、他の難しいタスクに転移できるかどうか疑問に思っています。
あなたの指摘はもっともです。システムが完璧である必要はなく、有用であるためには十分に良いものである必要があるということですね。GPT-3のように、すでに十分に良くて有用かもしれません。
しかし、AlphaGoやAlphaZero Zeroを現実世界のシステムに適用する際の実践的な問題は、AlphaGoとAlphaZero Zeroは通常、ほぼ同等の強さの2人のプレイヤーがいる明確な勝者のある二人用ゲームだということです。
現実世界のコンテキストでは、タスクに対してほぼ同等の強さの2人のプレイヤーと明確な勝者をモデル化できない限り、このような敵対的な方法で訓練するのは非常に難しいです。AlphaGoとAlphaZeroの場合、よく定義された環境があり、どちらが良いかを示す明確な報酬シグナルがありました。
しかし、多くのタスク、技術的なドメインでも、結果の品質がどちらが高いかについて明確に定義された報酬シグナルを持つことは可能だと思います。その場合、実際に非常に明確な報酬シグナルを持つことができると思います。
今のところ、単に人間の推論を模倣しているだけです。自己プレイの方法で行うことは可能でしょうか?実際、この考えは、2つのモデルに2つの根拠を作成させ、おそらく人間のAIやLMの批評家に最良の根拠を選ばせ、その最良の根拠を微調整に使用するというものです。
これはSTaR論文にはありませんが、このような進化的な環境を作ることができ、徐々により良い根拠が得られるかもしれません。これが私たちの学習方法かどうかはわかりません。これはちょっとしたハックのように感じます。自分の中で最高のバージョンを批評し、そこから学ぶとは思えません。
しかし、あなたが話していることに基づいて、これはあなたにとって意味がありますか?これは私が好きなものですが、人間の批評家を使用しても、まだ人間の知識を蒸留しようとしているだけです。
そうですね、では人間の批評家を使わず、判断者は明確に定義された問題にします。例えば、数学の問題で答えの真の値がわかっている場合、それが報酬を与えることになります。
それは理にかなっています。これは興味深い考えです。人間なしで学習できるのかどうか。
実際、現時点での答えは「いいえ」だと思います。なぜなら、まだ正しい学習構造を持っていないからです。オンラインデータから一般的な思考の連鎖のようなものを学ぶことはできますが、オンラインデータはこれらの思考を非常に明確に指定しているわけではありません。
これは作業が必要な部分だと思います。しかし、問うべき質問は、これらの推論トレースが本当にすべてに有用なのか、それとも一部の問題にのみ有用なのかということです。
私の個人的な意見では、実際には一部の問題にのみ有用だと思います。一部の問題では、これらの推論トレースは本当に必要ありません。
他に最後のコメントはありますか?今日のセッションを終了する前に。
よろしいですか。参加していただきありがとうございました。これは良い議論だったと思います。明らかに、LMで人間レベルの知能を得るにはまだまだやるべきことがたくさんあります。gpt-o1は確かにPhDレベルの知能ではありません。限定的なPhDレベルの知能ですが、まだまだやるべきことがたくさんあります。
私の賭けは、記憶構造についてもっと取り組む必要があるということです。そして、人間なしでブートストラップする方法についてもっと取り組む必要があるということです。
これについて何ができるか見ていきましょう。また次回お会いしましょう。皆さん、さようなら。


コメント