ショレ – 『従来の深層学習をはるかに超えたoモデル』

AGIに仕事を奪われたい
この記事は約54分で読めます。

OpenAI o3 が ARC-AGI-Pub で画期的なハイスコアを獲得
32,286 文字

François Chollet on OpenAI o-models and ARC
François Chollet discusses the outcomes of the ARC-AGI (Abstraction and Reasoning Corpus) Prize competition in 2024, whe...

私は純粋なシンボリストの陣営に属したことは一度もありません。私の最も初期の著作に遡っても、プログラム合成が必要だと言っていたのは、深層学習によって導かれるプログラム合成が必要だということでした。直感とパターン認識を、離散的な段階的推論や探索と一つのデータ構造に統合する必要があると考えていました。
そして過去8年ほど、人間の認知は直感と推論の混合物であり、どちらか一方だけでは遠くまで到達できないということを繰り返し述べてきました。ベクトル空間や深層学習モデル全般が提供する連続的な抽象化と、グラフや離散探索が提供するよりシンボリックな離散的な抽象化の両方が必要なのです。
では、なぜあなたの批判者たちはあなたをシンボリストとして見ているのでしょうか?よく分かりません。私は長い間、基本的に2013年から深層学習に取り組んできました。2014年頃から深層学習を精力的に広めはじめ、当時この分野は、特にKerasに関してはかなり小さなものでした。
私は常に深層学習の人間でした。そして深層学習の限界について考え始めたとき、深層学習を全く異なるものに置き換えることは考えていませんでした。
私が考えていたのは、深層学習にシンボリックな要素を追加して拡張することでした。推論の定義とは何でしょうか?推論には単一の定義はありません。それはかなり重い言葉で、多くの異なる意味を持つことができます。しかし、少なくとも2つの使われ方があり、それらは実際にかなり異なります。
例えば、プログラムを単に記憶してそれを適用するだけでも、それを推論の一形態と呼ぶことができます。例えば学校で数の掛け算のアルゴリズムを学ぶとします。そのアルゴリズムを学び、テストのときにそのアルゴリズムを適用します。それは推論でしょうか?はい、それは推論の一形態だと思います。そしてそれは、LLMや深層学習モデルが特に得意とする種類の推論です。パターンを記憶し、そのときにそのパターンを取り出して適用するのです。
しかし、もう一つの推論の形態は、これまで見たことのないものに直面したときに、アクセスできる認知的な構成要素や知識などを再構成し、その場で全く新しいモデルを作り上げなければならない場合です。それも推論ですが、全く異なる種類の推論であり、非常に異なる種類の能力を内在化しています。
だから、深層学習モデルとLLMについての重要な問いは、「推論できるか?」ではありません。彼らが何らかの意味で推論を行っているということは常にあります。より重要な問いは「新規性に適応できるか?」です。なぜなら、人間が提供したプログラムを単に記憶して適用するだけのシステムは多くあるからです。
より興味深いのは、彼らが自分自身のプログラムや抽象化をその場で考え出せるかということです。大まかに言えば、入出力のペアからのプログラミングは将来的に広く普及するプログラミングパラダイムになるでしょう。そしてそれは誰でもアクセスできるものになります。なぜなら、コードを書く必要がないからです。プログラムに何をしてほしいかを指定するだけで、コンピュータが自分自身でプログラムを作ります。
そして、あなたが意図したことにあいまいさがある場合(特に非技術系のユーザーが指示を出す場合は常にあいまいさがあるでしょう)、心配する必要はありません。なぜならコンピュータが、「あなたが言ったことから最も妥当なプログラムを作成しましたが、ここにいくつかあいまいさがあります。このような入力に対して、現在このような出力になっていますが、これでよろしいですか?」と確認してくれるからです。必要に応じて変更を加えながら、コンピュータと協力して正しいプログラムを作成していくのです。
これには全く新しい種類のアーキテクチャを構築する必要があるのでしょうか?はい、生涯にわたる分散学習を実装するには、全く新しいタイプのアーキテクチャが必要だと思います。基本的に、同じAIの多くのインスタンスが並行して異なる人々のために多くの異なる問題を解決し、問題間の共通点や解決策間の共通点を探すのです。そして十分な共通点が見つかるたびに、それらの共通点を新しい構成要素として抽象化し、それをシステムに戻してシステムをより有能で、より知的なものにします。
なるほど、分かりました。つまりあなたが構築しているのは、ARCの良い解決策を見つけることを前提とした、グローバルに分散したARCということですね。
実際に何を構築しているかはお話しできませんが、クールなものになるでしょう。
はい、かなりクールに聞こえます。O1の仕組みについてはどのような理論をお持ちですか?
そうですね、推測することしかできません。実際にどのように機能しているのかはよく分かりませんが、可能な思考の連鎖の空間で探索プロセスを実行し、ツリーのどのブランチがより良く機能するかを評価し、現在のブランチがうまくいかない場合は潜在的にバックトラックして編集しているようです。
最終的に、非常に長く、洗練されていない、そしてもっともらしい最適に近い思考の連鎖にたどり着きます。それは基本的に、モデルが何をすべきかを記述した自然言語のプログラムを表しています。このプログラムを作成するプロセスの中で、モデルは新規性に適応しているのです。そのため、O1のようなものは、これらのシステムで達成できる汎化力に関して、本物のブレークスルーだと思います。私たちは古典的な深層学習のパラダイムをはるかに超えているのです。
MLSTはSensorMLが提供しています。これはAIワークロードに特化して最適化されたコンピューティングプラットフォームです。先月、CEOで共同創業者のGennadyとのインタビューをご覧になった方もいると思います。彼はAMLの最適化について話しましたが、それは競合他社よりも劇的に高速になる最適化で、彼らだけが行っているものです。とにかく、Sensorでハッキングに興味がある方は、数週間後にエンジニアの一人とライブをする予定なので、そのライブに参加して、チームに質問することができます。
Two For AI Labsは、チューリッヒで始まったばかりの非常にエキサイティングな新しい研究所です。彼らは素晴らしいMLエンジニアをチームに迎えようとしています。非常に小さなチームですが、とてもエキサイティングです。テストタイム計算、推論時間のスケーリングといったことを行っています。彼らはモデルに推論をさせたいと考えており、MLSTで何年も話し合ってきたこの驚くべきシステム2を実現しようとしています。
もしそれがあなたに当てはまるなら、Tufa Labsに行ってください。私は一般的にこのショーが大好きです。機械学習のNetflixのようだと思っています。rq2について学び、2024年に競技会を運営して学んだことについて知ることができます。そして、抽象化生成とAGIの実装方法に関する私の現在の考えについても知ることができるでしょう。
そしてフランソワが次に何をするのかについても知ることができます。まあ、少しだけですが。少しだけ。素晴らしい。フランソワ・ショレさん、再びショーに出演していただき光栄です。
ありがとうございます。お招きいただき、ありがとうございます。
さて、私たちは今RTXGIプライズの終わりにいて、あなたは技術報告書を公開したばかりですが、この競技会について振り返っていただけますか?はい、多くのことを学びました。そして全体的に大きな成功だったと思います。
2024年には、AIに関する主流の語りに大きな変化が見られました。以前は、より大きなモデルをより多くのデータで訓練すれば – 100倍大きなモデルや100倍多いデータ – 基本的にAGIが得られるというのが主流の語りでした。
しかし最近、特にこの1年ほどは、実際にはシステム2推論に似たものが必要であり、それは単により大きなモデルをより大きなデータセットで事前訓練することから単純に現れるものではなく、何らかの方法でシステムに追加する必要があるという認識が生まれてきています。
もちろん、テストタイムサーチを使ったり、プログラム合成を使ったり、そのような技術を使ってそれを行うことができます。そして私は、それがその語りの変化の一部であり、また多くのチームが参加し、多くの人々がそれについて話し、AGIを達成したかどうかの参照として使用している理由でもあると思います。ちなみに、それはARCの意図したところではありません。
それはAGIを達成したかどうかの指標となることを意図したものではありません。単に、正しい問題について考え、正しい方向に焦点を当てるための研究ツールとして意図されています。そして、これが成功した本当の理由は、このようなものに対する潜在的な需要があったからです。
多くの人々は、単なるLLMではそこまで到達できないという直感を持っていました。LLMの代替物か、あるいはその周りの何らかのスーパーストラクチャーが必要で、システム2を実装する必要があると。そしてそのような直感が漂っていて、多くの人々がARTプライズを、彼らの直感が正しかったという具体的な証拠として受け止めたのだと思います。
アートプライズには2つの種類がありました。計算制限のあるものと、メインのものです。その2つの違いについて、応募作品の観点から振り返っていただけますか?はい。私たちはKaggleで競技会のメイントラックを持っていました。これは自己完結型の提出物のみを対象としていました。
その主な理由は、プライベートテストセットを完全にプライベートに保つ必要があったからです。APIを通じて第三者のサーバーに送信することはできません。このトラックでは、基本的に12時間以内にVMで実行する必要があるノートブックを提出し、VMにはP100 GPUが1つだけあります。
これは提出1回あたり約10ドル相当の計算量に相当します。そして、フロンティアモデルを対象とした公開リーダーボードがありました。これは異なるタスクセットで評価されました。なぜなら、もちろんプライベートテストセットを第三者のサーバーにリークしてしまうため、プライベートで評価することはできないからです。
代わりに、セミプライベートテストセットと呼ばれる全く新しいタスクセットで評価されます。セミプライベートというのは、どこにも公開されていないので公開ではありませんが、タスクデータをAPIを通じてOpenAIやAnthropicなどに実際に送信しているので、完全にプライベートでもないからです。
そしてそのリーダーボードの各提出には、最大10,000ドルのAPIクレジットを使用できます。これは、プライベートリーダーボードと比べて計算量が1000倍多いということです。1タスクあたりで見ると、実際にはもう少し少なくなります。なぜなら、公開評価の400タスクとセミプライベート評価の100タスク、つまり私たちが本当に注目しているものについて評価しているからです。
1タスクあたりでは約200倍の計算量です。そして本当に注目すべきで、率直に言って衝撃的だったのは、公開リーダーボードトラックで見られるスコアが、プライベートリーダーボードで見られるものと一致しているということです。どちらの場合も約55%です。これは、ベンチマークに対してより多くの計算リソースを投入すればいいというだけの問題ではないことを示しています。計算は本当にアイデアの乗数なのです。
もちろん、無限の計算リソースがあれば、例えば総当たり探索のような非常に愚かな方法でベンチマークを解くことができます。しかし、より良いアイデアを持つことで、計算リソースの活用度が劇的に向上します。そのため、10ドルの計算量を消費する解決策で55%を達成し、一方で10キロワットの計算量を消費する解決策が全く同じことをしているのです。それらは単に計算効率が全く良くないのです。
では、どの方法が最も成功し、全体的にうまく機能しましたか?うまく機能した2つのカテゴリーのアプローチがありました。
1つは深層学習によって導かれるプログラム合成で、これは個人的に最も好きなアプローチであり、何年も提唱してきたものです。今日、ほとんどの人々はLLMを使用して深層学習によるプログラム合成を行っています。LLMを使ってコードを生成し、LLMを使って反復的にコードをデバッグします。DSLの構成要素を使って深層学習によるプログラム合成を試みる人もいます。これはあまり探求されていないアプローチですが、効果的なものだと思います。
もう1つのカテゴリーのアプローチは、テストタイム訓練です。ここではLLMを使って直接解を予測しようとします。デモンストレーションペアのセットを見て、入力グリッドを見て、直接出力グリッドを生成しようとします。これは変換(transduction)と呼ばれるプロセスで、帰納(induction)の反対です。プログラム合成やプログラム帰納では、入力グリッドから出力グリッドへのマッピングを行うプログラムを書き下そうとします。
変換では、直接出力グリッドを予測しようとします。もちろん、LLMでこれを試み、大量のデータで事前訓練された大きなモデルを持ち、推論時には静的で単にモデルのフォワードパスを実行するだけという古典的な深層学習のパラダイムに留まっている場合、意味のある量の新規性に適応することは本当にできません。記憶したパターンを取り出して再適用することしかできません。
それを超えるために、人々はテストタイム訓練を使い始めました。これは、ARCについて知っているベースモデルを事前訓練することから始め、新しいタスクごとに推論時にベースモデルをデモンストレーションベースで微調整し、基本的に潜在空間内の知識を、手元のタスクに適応した新しいモデルに再結合しようとするというアイデアです。
このテストタイム適応を行わない場合、LLMベースのモデル、変換モデルは大体10%未満の精度に留まります。しかしテストタイム訓練を始めると、劇的に高いレベルの汎化を解放します。
そして50%、55%、おそらくまもなく60%まで十分に到達できます。では大きな疑問は、それが課題の精神に沿っているかどうかです。私は、データセット生成や拡張を行い、モデルを微調整して非常に良い結果を出す、この変換とアクティブ微調整に関するいくつかのインタビューを行いました。
そして確かに、多くのタスクに広く汎化する方法論としては良いものです。しかし問題は、それでもまだ人間の監督を必要とするということです。あなたは最初から、そして知能の尺度として、開発者が意識した汎化が必要だと強調してきました。つまり、システムを下流のタスクごとに特殊化する人間の監督者を持つことはできず、開発者が意識していなかったタスクに自ら汎化できるシステムを作る必要があるということです。
そうすると、その基準からすれば、それはARCの精神に沿っていないと感じますか?いいえ、それは課題にアプローチする完全に正当な方法だと思います。また、これらのモデルの汎化力と、これまで見たことのないものに適応する能力において、非常に重要なブレークスルーを表していると思います。
そして、私たちが話している監督は実際に人間によって行われているとは思いません。デモンストレーションペアを使ってモデルを微調整しています。だから、これは実際にかなり自律的です。もちろん、これにはタスクフォーマットを意識した人間によってプログラムされている必要がありますが、プログラム帰納型のアプローチでも同じことが言えます。だから、私はこれは非常に課題の精神に沿っていると思います。さらに、それは正当な極端な汎化を示していると思います。
正当性の問題に迫ると、私たちは何らかのアクティブ推論を行うのは当然だと考えられます。もちろん、私たちは常に新規性に適応し、新しいモデルを構築しているわけですが、では変換的なアクティブ微調整と私たちが行っていることの違いは何でしょうか?私たちが正確に何をしているのかは分かりません。もちろん、私たちはアクティブ推論を行っていますが、それは正確には何を意味するのでしょうか?どのようなアルゴリズム、どのようなデータ構造を活用しているのでしょうか?分かりません。
だから、違いが何なのかは本当に言えません。一つ言えることは、LLMでテストタイム訓練を行うとき、勾配降下プロセスに知識の再結合を任せているということです。新規性に適応するためには、持っている知識を何らかの方法で再結合する必要があります。
そしてそれを達成するために、複数の異なることを行うことができます。プログラム探索を行うことができます。ここで、新しいタスクに適応するものはプログラムであり、探索プロセスを通じてそのプログラムを構築します。また、OpenAIのo1モデルが行っているようなことも非常によく似ています。思考の連鎖の空間で実質的に探索を行い、その思考の連鎖を書き下していきます。これは基本的に、モデルが実行すべき自然言語プログラムです。
そしてこれは、アルファゼロスタイルの探索プロセス、つまりツリー探索プロセスを通じて行われます。それが1つのアプローチです。離散的なプログラム探索を使用してプログラムを書き下すこともできます。そしてプログラムは、手元のタスクをモデル化する成果物です。
あるいは、モデルの重みを変更し、モデルの表現を修正して、タスクに適応した新しいモデルを作成しようとすることもできます。この場合、タスクに適応する成果物はモデル自体です。これがテストタイム訓練が行うことであり、勾配降下を通じて行われます。
私の見解では、人間は特にARCパズルを解く文脈では、知識を表現するレベルがはるかに抽象的でシンボリックな性質を持っており、それを組み合わせる方法は勾配降下で達成できることよりも、はるかに関数的な合成に近いと思います。一般的に、プログラミングプロセスの代替として勾配降下を使用することは良いアイデアだとは思いません。だから、テストタイム訓練を行うよりも、O1のようなシステムが行っていることの方が好きです。
すぐにO1の話に移りますが、この変換に本当に強気な人々もいます。そして私とあなたが、原理的にうまく機能しない理由は、言語モデルが単に有限状態オートマトンであり、原理的にもこの構成的な汎化を持っていないからだということに同意していると思います。
私たちは、トランスフォーマー単体では、コピーや数え上げのような基本的なことさえできないという証拠を知っています。しかし、一部の人々は、アーキテクチャを改良してそのような種類のことができるようになれば、将来的には変換的アプローチが機能するかもしれないと楽観的です。それを否定しますか?いいえ、それは全く妥当だと思います。
指摘されたように、多くのデータがあっても、トランスフォーマーが実行できない、あるいは実行できたとしてもうまく汎化しない解決策を学習するアルゴリズム的なタスクが多くあります。訓練分布に非常に近い入力では機能しますが、訓練分布から大きく外れた入力を試すと単に失敗します。
人々はこれらの制限を超えられると考えており、アーキテクチャの調整を行えると言っています。そして、彼らは正しいのです。深層学習モデルを取り、解こうとしているアルゴリズム的な問題について強い構造的な事前知識をアーキテクチャに組み込むように修正することは常に可能です。そうすれば、実際に勾配降下を使用して汎化する解決策を見つけることができます。
しかし、これが機能する方法は、基本的に人間のエンジニアに、まず手元のタスクを理解し、そのシンボリックな理解をより良いアーキテクチャに変換することを求めることです。そのアーキテクチャは、重要な点で問題の因果構造と同型になっています。そしてもちろん、自律的に新規性に適応したい場合、人間のエンジニアにアーキテクチャを書き換えるように介入を求めることはできません。
プロセスは完全に自律的である必要があります。そこで問題は、問題を受け取り、新しいアーキテクチャに組み込む必要がある問題構造の重要な要素を特定し、そしてアーキテクチャを生成する、アーキテクチャ探索またはアーキテクチャ生成マシンを作ることができるかということです。
もしそれができれば、確かに、それを活用して強力な汎化を達成できるかもしれません。しかし、それは一般的なケースでのプログラム探索と少なくとも同じくらい難しい問題だと思います。はい、結果的にもかなりオーバーフィットしていることが分かりました。
公開リーダーボードでは、公開評価で評価していますが、セミプライベート評価セットでも評価しています。その理由は、オーバーフィットをテストするためです。一部の解決策は公開データにオーバーフィットしている可能性があります。そして実際に彼らの解決策ではそうでした。セミプライベートセットで他の解決策と比べて10パーセントポイントほど低いスコアを記録しました。
特にプログラム合成に基づく解決策は、そのような低下を全く示していません。実際に両方のセットで全く同じスコアを記録しています。これは、彼らが行ったことが、何らかの重要な点で持っていたデータにオーバーフィットしていたことを示しています。それにも触れられますか?元のKaggle 2020年競技会の結果をすべてアンサンブルすると、約49%になったと言いましたね。はい、その通りです。詳しく教えてください。
2020年のKaggleでの最初のアーキテクチャ競技会では、単一の提出による最高スコアはわずか20%でした。それが優勝者でした。そして単純な総当たりプログラム移民を行っていただけでした。しかし競技会のすべての提出をまとめてアンサンブルすると、49%という高スコアが見られました。これは最近まで最先端でした。
そしてそれは4年前のことです。これが示しているのは、プライベートテストセットの約半分が簡単に総当たりで解けるということです。なぜなら2020年当時の競技会のすべてのエントリーは、何らかの総当たりプログラム列挙を行っていたからです。これはAGIではありません。私たちが探している種類の解決策ではありません。
そしてこの種のこと、つまりこの種のことを大規模に行うことで49%を達得できるという事実は、ベンチマークに欠陥があるという非常に強い兆候です。そして今日、2024年の競技会を見ると、単一の提出による最先端は約55%です。だから、バーが85%なので、ベンチマークからはまだかなり遠いと言えるかもしれません。
また、人間はほぼ100%に近い解を見つけられることも知っています。もし私があなたにプライベートテストセットを見せたら、おそらく97%、98%、99%といった数字になるでしょう。そして2024年の競技会で提出されたものすべてをアンサンブルすると、81%という高スコアが得られます。これは私たちが探しているものにかなり近いです。
そして私は、今年の競技会で試されたものはどれも、意味のある意味でAGIに近いとは思いません。そしてすべてのアンサンブルでもまだAGIには近くありません。それは単に、総当たり計算のスケールが最終的に課題を解決することを示しているだけです。
そしてそれが示しているのは、本当にベンチマークに欠陥があり、今や飽和に近づいているので、私たちは他のものを必要としているということです。そしてそれが、私たちがR2に取り組んでいる理由です。R2は全く新しいアイデアではなく、2024年に得た結果への反応でもありません。私は2022年初めにR2を最初に公に発表しました。
そしてそれは当時、2020年の競技会の結果への一種の反応でした。ベンチマークに欠陥があることを認識していました。タスクの多様性という点で十分に多様ではなく、すべてのタスクが全く独特というわけではなく、ある程度の冗長性がありました。十分に挑戦的ではなかったかもしれません。そこでV2を作りたいと思いました。
そして2022年に、ダボスのLab 42とのパートナーシップで、多くの新しいタスクのクラウドソーシングを始めました。それ以来、さらに多くの新しいタスクを作り続け、それらをフィルタリングし始めました。人間にとって難しいものは何か、AIにとって難しいものは何かを分析しようとしました。
人間のテストデータも多く収集しました。実際に人々を雇ってそれらを解こうとしてもらいました。それにより、異なるタスクに何回試行を使用したか、そして1つのタスクが何人によって解かれたかについての多くの情報が得られます。この情報を人間向けの難易度評価に変換することができます。
そしてそれをAIができることと相関させることができます。R2は来年初めにリリースする予定です。それはARC1のすべての欠陥に対処します。データが少し多くなり、3つのセットを活用します。公開評価があり、もちろんセミプライベート評価があり、そしてプライベート評価があります。
Kaggleでの最初の数回の競技会の1つの問題は、すべての競技会で同じプライベートテストセットを再利用し、誰かが提出するたびに、プライベート評価でのスコアをすぐに見ることができたということです。これは実際に、時間とともにプライベートテストセットについてある程度の情報漏洩につながる可能性があります。
実際、十分な提出があれば、プライベート評価の内容を再構築し始めることができる、非常によく文書化された技術があります。来年の競技会ではこれを避けたいと思います。そしてその方法は、競技会中にセミプライベート評価で評価するということです。
何かを提出すると、セミプライベートスコアが得られ、競技会の最後に最終的なリーダーボードを作成するときにのみ、実際に提出物を完全にプライベートなテストセットで実行します。そしてそうすることのもう1つの良い点は、Kaggleリーダーボードとフロンティアモデルを含む公開リーダーボードとの間で、直接的なリンゴ対リンゴの比較ができるということです。
もちろん、計算量は同じではありませんが、スコアはリンゴ対リンゴです。Mind’s eyeがこのテストセットで、例えばo1 proと同じくらいのスコアを出しているということが言えるのです。2021年のKaggleの49%、アグリゲートを取ったときのそれについて、より総当たりしやすいものはどれでしたか?
なぜなら、モザイクパターンについては、解空間には指数関数的な数の組み合わせがありますが、もちろん構成的な空間では総当たり可能かもしれないという見方ができるからです。しかし、帰納的・変換的な方法で、異なる種類の問題を解決できることも分かり始めています。また、人間による評価でも、人間は異なる種類の問題を解決できることが分かります。
そしてこれらは全て重なり合うベン図になっています。それについてどう考えますか?はい、それは2024年の競技会の最も興味深い発見の1つです。プログラム帰納と、典型的にはLLMを使用した深層学習モデルによる変換は、かなり異なるタスクセットの解決につながるということです。
これは私にとって驚きでしたが、振り返ってみれば、特にタスクを見始めて、何が異なるのかを分析し始めると理にかなっています。非常に知覚的な性質を持つタスクがあります。それらは効果的にパターン認識の問題です。
これは変換的な方法でうまく解ける種類のタスクです。そして他のタスクは、はるかにアルゴリズム的な性質を持ち、はるかに離散的な性質を持っています。パターン認識に基づく簡単な解決策を提供することはできません。しかし、解を生成するアルゴリズムを書き下すのは非常に簡単です。そして逆に、非常に知覚的なパズルを見ると、それらに対する解決プログラムを書くのは非常に難しいです。
なぜなら、プログラムは私たちにとって直感的に理解できる多くの知覚的な概念を形式化する必要がありますが、それらをプログラム形式で表現するのは実際には非常に難しいからです。例えば、ARCの外の例を取ってみましょう。文字Aを認識しようとする場合を考えてみましょう。
文字を見ているだけで、事前訓練された知識、文字の形の事前訓練された視覚的知識があれば、これは些細な問題です。単に文字を認識するだけです。それはただのパターン認識です。しかし、手書きのAを取り、それが文字Aかどうかを判断するアルゴリズムを書き下そうとすると、それは非常に難しい問題です。
それについていくつかの考えがあります。まず、Kevin Ellisの論文、帰納・変換論文では、おそらく政治的な理由で、彼らは帰納的な明示的関数を見つけたかったようです。そのため、アンサンブル法では、最初にグリーンブラット化して帰納的関数を探索し、それから変換にフェイルオーバーしました。
そして、Pythonプログラムで数字を認識できないからといって、そのようなPythonプログラムが存在し得ないはずはない、という考えが浮かびます。そのようなプログラムを生成するモデルを作ることを考えるべきではないでしょうか?おそらく、彼らができない理由は、そのようなものが分布内にないからです。
それが難しい理由は、根本的に連続的で、決定境界があいまいな入力空間について話しているからです。つまり、本質的にパターン認識問題である問題について話しているのです。そしてニューラルネットワークは、この種の問題にアプローチするのに本質的に良いデータ構造です。
そして離散的なシンボリックプログラムはそうではありません。だから、本当に見ているのが何の問題かによると思います。ベクトル空間が正しいデータ構造である問題と、シンボリックな離散的問題が正しいデータ構造である問題があります。
興味深い思考実験は、MNISTモデルが行うことを行うPythonプログラムが必ず存在するはずで、そのプログラムの最も単純な表現は何かということです。それでもとてつもなく複雑でしょうか?そのプログラムの最も単純な表現は、正直なところ、コンポーネントが行っていることにとてもよく似ているでしょう。
はい、それが決定的なポイントですね。それをもっと単純なバージョンに分解する方法はありませんね。はい、本当に問題の性質によると思います。そして一部の問題では、プログラム合成は単に悪いアイデアです。知覚的な問題は確かにこのカテゴリーに入ります。そして逆に、一部の問題では、パターン認識マシンを使おうとするのは単に悪いアイデアです。アルゴリズム的な性質を持つ問題です。
帰納的・変換的な方法を効果的に組み合わせるにはどうすればよいと思いますか?Kevin Ellisとチームは彼らの論文で、基本的に帰納から始めて、うまくいかない場合に変換にフォールバックするようにしています。そしてそれは非常に賢い戦略だと思います。なぜなら帰納は実際に形式的に検証可能だからです。
アクセスできるデモンストレーションペアで候補プログラムを実行してみて、まず実行できるか、そして正しい結果が得られるかを見ることができます。そしてもしそうなら、それが汎化するという相当高い確信を持つことができます。
一方、変換を行っているとき、それは基本的に答えがどこにありそうかを推測しているようなものです。そしてこれが正しい推測かどうかを確認する方法は本当にありません。できることの1つは、サンプルサイズを増やすことです。多くの独立した推測を行い、最も頻繁に出てくる答えを見ることができます。
しかし、基本的に、間違った推測はすべて異なる理由で間違っているので、異なる間違った答えになるという仮定を立てています。しかし正しい推測は、すべて正しい理由で正しいので、正しい答えがより頻繁に出てくるでしょう。しかし、あなたの推測が100%正しいことを確認する方法は本当にありません。
だから、帰納から始める方が賢明です。なぜなら、持っている解決策が正しい解決策だという高い確信を持つことができ、それがうまくいかない場合にのみフォールバックするからです。
それらを完全に異なるものと考えるべきでしょうか?仮説的に、帰納と変換の両方を行うために共有モデルを使用した場合、何らかのクロスオーバーがあり得ると思いますか?
まったくその通りです。実際、これは競技会で一部の人々が試みたことです。彼らはいわゆるオムニアークアプローチを使用しており、チームは同じモデルを使用してARCに関連する様々な異なるタスクを解決しています。プログラムを書き下すこと、プログラムを解釈すること、変換を行うこと、より多くの入力を生成することなどを含みます。
つまり、1つの単一のモデルですべての異なるタスクを行います。そしてそれは、ARCで見つかる概念のより良い表現を学習することにつながります。それについてもう少し直感を教えていただけますか?ある意味で、ネットワークにシンボリックなバージョンと解空間について同時に考えさせることができるということですね。
基本的な直感は、同じ問題を異なる角度から見ると、問題の本当の形をより見つけやすいということです。そしてこれは特に、選択したデータ構造がニューラルネットワークの場合に当てはまります。なぜならニューラルネットワークには、ノイズのある統計的な規則性に固執する傾向があるからです。
1つの問題だけをターゲットにし、1つの入力モダリティだけを使用している場合、その問題内のノイズの要素にオーバーフィットする可能性がはるかに高くなります。しかし、同じ表現を多くの異なる問題の視点で機能させるように強制すると、それは作用します。
まず、問題についてより良い情報が得られます。なぜなら、出力グリッドを予測することと、より多くの入力グリッドを生成することのような異なるモダリティ間で、知識の転移や情報交換があるからです。しかしそれはまた、1つのモダリティで学習しているノイズが、別のモダリティで学習していることによって相殺される正則化メカニズムとしても機能します。
Clément Bonnetからの別のアプローチは、潜在空間をより良く探索することです。必ずしもグリーンブラットではなく、実際に予測を提示する前にかなりの時間潜在空間を探索するのです。それについてどう思いますか?
はい、これは実際に個人的に競技会で提出された私のお気に入りの論文の1つです。プログラムの潜在空間を学習し、テスト時に…これは非常に独創的なアイデアです。もちろん、テスト時には手元の問題への適応が必要です。知識の再結合が必要です。
そして、一部の人々はテストタイム訓練を使用し、一部の人々は探索を使用します。そしてClément BonnetとそのMacfarlaneの同僚が行っていることは非常に独創的です。彼らはこのプログラムの潜在空間を学習し、その後テスト時に、潜在プログラム空間で勾配降下を行い、基本的にその空間を動き回って、実際にタスクに最もマッチする空間の点を見つけます。これは素晴らしいアイデアだと思います。このアイデアを改善する方法は多くありますが、非常に独創的なテストタイム適応へのアプローチです。これは探索でもなく、微調整でもありません。だから、私はとても気に入っています。
そのプロセスをまだ思考と呼びますか?思考はシステム2のプロセスなのか、それともそれも思考と呼びますか?それは離散的な探索ではなく勾配降下に基づいているテストタイム探索の一形態です。
だから、確かに、それを使って何らかの形のシステム2処理を実装できない理由は見当たりません。はい。人間の思考との類推が崩れるのではないかと思います。知覚的な熟考を行っています。これは非常に興味深いカテゴリーです。潜在空間での熟考を行っています。
はい。このプロセスを改善する一つの方法は、潜在プログラムを象徴的な離散的な形式に戻してデコードすることもできるということです。そうすれば、デコードされたプログラムの周りでローカルな離散的な探索を始めることができます。そのアプローチの利点は、実際にプログラムを実行して、それらが機能するかどうかを検証する能力を持つことができるということです。
潜在空間に留まっている限り、たとえ潜在空間内で勾配降下によるガイド付き探索を行って、ターゲットプログラムを表す最良の可能な点を見つけたとしても、あなたは非常に推測に限定されています。潜在空間が示していることが地上の現実と一致しているかどうかを断言する方法がありません。だから、実際のプログラム空間に戻してデコードし、これらのプログラムを書いて実行する能力は、このシステムにとって非常に良い追加となるでしょう。
そのアプローチには潜在的な問題はありますか?つまり、潜在構造がかなり均質で、モードが見つけやすい場合に役立つと思います。改善できるでしょうか?それは具体的にどういう意味ですか?
彼は潜在空間で勾配探索を行い、何らかの最適な位置を見つけ、そこから推論を行います。しかし、それはかなり凸な空間では非常にうまく機能しますが、非常に不均質な空間ではそれほどうまく機能しないのではないでしょうか?もちろん、勾配降下を行うためには比較的滑らかな表面が必要です。
しかし、だからこそ彼らはVAEを使用していると思います。彼らが単にプログラムの埋め込み空間を直接学習しようとしたかどうかはわかりません。ここで1つの点が1つのプログラムとなります。実際、これは彼らが行っていることではありません。彼らはVAEを使用しています。その理由は、VAEを使用すると、より構造化された、より滑らかな潜在空間を学習するからです。そして、これはテストタイム勾配降下を機能させるための鍵だと思います。
では、ARCの未探索の道筋は他にありますか?もっと良い質問の仕方をすれば、あなた自身が1年間ARCに取り組むとしたら、何をしますか?
私は深層学習によって導かれるプログラム合成を行うでしょう。そして、今日の人々のプログラム合成の方法は間違っていると思います。
誰もがLLMを活用しています。これはもちろん理理解できます。なぜなら、あらゆる問題に適用できる有用な知識を多く含む、非常に強力なツールだからです。このツールを作るために何十億ドルもの投資をしてきました。だからこれらのツールを使用しないことは、多くの力を逃しているように感じるでしょう。しかし、プログラム合成をただのトークンバイトークンのコード生成として扱うのは正しいアプローチではないと思います。
私はプログラムをオペレータのグラフとプログラム探索として考えるのが正しいと思います。プログラム合成は基本的にツリー探索プロセスです。深層学習モデル、特にLLMを使ってその探索プロセスを導くのがよいでしょう。これは今日多くの人々が試みていることではありませんが、より正しいアプローチに近いと思います。
また、人々が今日行っていないけれども行うべきもう1つのことは、人間がARCパズルを解く方法を見ると、彼らは頭の中で多くの異なる解決プログラムを試していないということです。彼らは少数しか試していません。人間には、まず最初に考えるモデルを記述し、そのモデルを使用する能力があると思います。基本的にグリッドを、そこに含まれるオブジェクト、その内容、プロパティ、他のオブジェクトとの関係性を記述します。特に因果関係に焦点を当てています。
これらの記述モデルを使って、最終的に入力から出力へのプログラムを探索する際の探索空間を制約することができます。それが、正しいプログラムを見つけるまでにほんの一握りのプログラムしか考慮する必要がない理由です。そういう意味では、タスクを十分にモデル化することで、探索をほぼ不要にし、探索の必要性をほぼ完全に取り除くことができるかもしれません。
あなたが今言ったことは非常に興味深いですね。少し考えてみましょう。まず第一に、今週は特にニューラル進化の分野で多くの人々がインタビューを受けています。例えばJeff Cluneの下で、多くの人々がLLMに注目しています。なぜなら、興味深さや斬新さを測る尺度が必要で、世界中のデータで学習されたLLMは、私たちの本能や直感をとてもうまく捉えているからです。そのため、プログラムを生成するのに優れた方法だと言えます。
しかし、あなたは単にプログラムを生成するのはあまり良いアイデアではないと言いました。進化の次のステップは探索を導くことです。そして私たちは、多くの商用ソフトウェアでLLMの使用におけるこの啓示を目にし始めています。
例えば、アプリケーションにおける元々のLLMは、単にチャットボットを組み込むだけでした。今ではCursorのようなものは、低レベルのAPIを公開し、ツールの使用などを行っています。そしてLLMは実際にアプリケーション内の低レベルなAPI相互作用を導いています。そしてあなたは、LLMが単にコードを生成するのではなく、離散的な探索プロセスを導くという、ここでも同様の進化を提唱しているのですね。その通りです。
そしてアイデアは、この反復的な探索プロセスを通じてプログラムを作成することで、プログラムグラフに対して標的を絞った修正を加える能力を実際に持つことができるということです。プログラムを単にトークンの列として扱う場合には、それはかなり難しいでしょう。また、追加の決定を行う空間の性質を変えることもできます。
そしてグラフは単にプログラムを表現する自然なデータ構造なのです。プログラムはトークンの列ではありません。私たちが目にしているもう1つの中間的な解決策があります。Kevin Ellisは、remixingと呼ばれるものを行いました。100の手作りの解決策があり、すべてのARCタスクに対して、新しいインスタンスを生成できるジェネレーターがあります。
つまり、スプライトやレイアウトなどを生成できるのです。そして検索拡張生成を使用して、この種の展開を行い、それは暗黙のライブラリ学習の形式を行っており、すべての解決策を混ぜ合わせているようなものでした。それはあなたが話していることの中間的なものですか?そうではありません。
それは別の道筋だと思います。アイデアは、データセットでLLMの性能を向上させるには、ARCの空間からできるだけ密なサンプリングに晒す必要があるということです。もちろん、利用可能なARCタスクはそれほど多くありません。そのため、新しいものを作る必要があり、それは簡単です。
新しいタスクを作るには、例えばトレーニングセットにある概念をプログラムで抽出し、それらを新しいタスクにリミックスするためにLLMを活用することです。しかし、結局のところ、これは深刻なオーバーフィッティングにつながります。そしてこれは、私たちがARC解決策で見ているものとまさに同じです。なぜなら、DreamcoderでのKevinでさえ、覚醒と睡眠の明示的な概念があり、興味深い進化があったからです。
そして彼の新しい例示による学習の研究では、その夢と睡眠のプロセスを暗黙的なものにしました。そして同じようなことを、一種の代理または暗黙的なバージョンを考え出すことで達成できるように感じます。そうですね。
ARCについて興味がある他の道筋はありますか?ちなみに、Symbolicaのジョージと話したと思いますが、彼はあなたと議論したというプログラム検証のアプローチを持っていました。はい。彼が私に説明したのは、基本的にシンボリックなプロセスを使って、タスクの問題定義を深層学習アーキテクチャに変換し、その深層学習アーキテクチャを訓練するというアイデアです。
それは非常にオリジナルなアプローチだと思います。私の知る限り、同様のことに取り組んでいる人は他にいないと思います。そのため、彼がそれをどう進めるのか非常に興味があります。魔法使いたちですね。非常に魅力的です。ベンチマーク全般について、計算予算をベンチマークに組み込む必要があると思いますか?はい、絶対にそうです。
これは特に来年、ARCの公開リーダーボードにとって非常に差し迫ったニーズになると思います。なぜなら、テスト時の計算、テスト時の探索、テスト時のトレーニングなどで、より多くの計算を使ってより高い性能を得ることは常に可能だからです。
そして典型的には、計算と性能の間には対数的な関係が見られます。これは、2つのシステムを公平に比較したい場合、計算予算を考慮する必要があることを意味します。同じ量の計算を使用しているシステム同士でしか比較できません。
例えば、OpenAIのO1モデルを見た場合、一定量の計算に制限しない限り、ARCでの固定スコアを本当に帰属させることはできません。問題により多くの計算を投入することで、対数的に性能を改善することは常に可能です。
もちろんこれはO1についても言えることですが、それ以前にも粗暴な力づくのプログラム探索システムについても同様でした。適切なDSLがあれば、極めて素朴な基本的な力づくのプログラム列挙でも、人間レベルでARCを解くことができます。ただし、データセット全体を解くには数億ドルの計算が必要になるでしょう。
それは極めて非効率的で、正直言って極めて愚かなアイデアです。しかし理論的には可能です。哲学的に言えば、タスクを実行するために使用される計算量には常に相応の関係があると思いますか?私が言いたいのは、私たちが言語を使用し認知ツールを使用する時、計算を使用しているとは思わないかもしれませんが、宇宙はおそらくそれらのものが出現するために大量の計算を費やしたはずです。
ある意味で、私たちが使用する計算量を圧縮することは本当に可能なのでしょうか?そう思います。人間は非常に計算効率が良いと思います。例えば、タスクを解く場合、プライベートテストセット全体を解くのに基本的に数カロリーしか使用しないという事実にそれが表れています。
そして、私たちの脳が行う操作1回あたりの使用エネルギーが極めて少ないからだと言えるかもしれません。実際にはそうではありません。例えばトランジスタとニューロンを比較すると、ニューロンはトランジスタよりもはるかにエネルギーを消費することがわかります。ただし、私たちは比較的少ない神経発火で非常に難しい問題を解くことができ、現在のAIと比べて非常にエネルギー効率が良いのです。そして私たちは同じレベルのエネルギー効率を達成した時にAGIを手に入れることになるでしょう。
これらのアプローチにおいて、Pythonのようなチューリング完全な言語を使用することと、DSLを使用することについてはどのように考えていますか?ARCなどでDSLを使用することは根本的に制限があると思います。何を使うにせよ、どのベース言語を使うにせよ、持っているデータから適用する関数を学習できるべきです。
実際、これは生涯にわたるプロセスとして行えるべきです。つまり、新しいタスクを見つけて解決するたびに、有用な抽象化を考え出すことになります。おそらく過去に見た問題に関連する抽象化です。そしてそれを再利用可能な関数、合理的な構成要素に抽象化し、保存しておきたいと思うでしょう。そうすれば次に同様の問題に遭遇した時、同じ構成要素を再適用して計算を節約できます。
同程度に難しい問題をより少ないステップで解決できます。そのため、何をするにせよ、使用する言語を学習したいと思います。もちろん、それはDSLを学習することを意味する場合もありますし、Pythonのようなものを使用して、その中で徐々に高階関数やクラス、その他の再利用可能な構成要素を書いて言語を豊かにしていくことを意味する場合もあります。
あなたの立場が少し柔らかくなっているのではないかと思いました。あなたはツイートしました。「十分に繰り返された時、ファジーなパターンマッチングは漸近的に推論に変わる可能性が高い。人間も基本的にそのように行っている可能性さえありますが、それが推論を行うための最適な方法であることを意味するわけではありません。」これはあなたの立場の変化ですか?どの立場と比べてですか?
変化だとは思いません。まず第一に、私たちがそのように考えている可能性があるということです。そうだと思います。ああ、興味深いですね。スペルキーの見方から考えると、私たちは高レベルの推論を行い、ファジーマッチングは行わないと考えていたと思います。
人間の脳における基本的な認知単位は実際にファジーなパターン認識だと思います。それが核となる機能です。そして推論やプランニングに似たことを行う時、基本的にシステム2の処理、つまりゆっくりとした論理的な一歩一歩の処理を行う時、実際に行っているのは、直感を構造化された形で反復的に適用することです。
ちなみに、これは私が2017年以来提唱してきた深層学習によるプログラム合成のアプローチそのものです。深層学習によるプログラム合成を行う時、何をしているのでしょうか?基本的にプログラム、つまりオペレータのグラフを構築していますが、一歩一歩構築していき、各ステップでグラフの何を編集するか、何を追加するか、どの分岐の決定を行うかを選択する際に、直感を適用しています。
深層学習モデルが提供する予測を適用しています。つまり、反復的に予測を行って、高度に構造化された離散的な人工物、つまりプログラムを作成しているのです。そしてこのプログラムを実行する時、それがシステム2なのです。私は、これが人間としての私たちがシステム2を行う方法だと思います。つまり、反復的に予測を行い、ファジーなパターン認識を反復的に適用して、実際には記号的な性質を持つ人工物を構築しているのです。
例えばチェスをプレイする時、頭の中で計算する時、盤上のいくつかの手順を一歩一歩展開していきますが、盤上の可能な手の中のほんの一部についてのみ行います。そしてどの手を見るかという選択をどのように行うのでしょうか。パターン認識を適用しています。そして一手先を予測する時、盤面全体をシミュレーションするのではなく、いくつかの領域に焦点を当てることになります。これもまたパターン認識です。ちなみに、あらゆる種類のパターン認識は基本的に本質的に予測です。
そのため、間違っている可能性があります。ある意味で。そして、チェスでは時々計算をしていて、将来の盤面についての直感の一部が間違っていることがあります。そして手を指した後で「あっ、しまった」と気付くのです。そのため、これが基本的に人間がシステム2を実装する方法だと思います。これは私の立場の変化ではありません。
私はこれらのアイデアをかなり長い間考えてきました。実際、これは意識を解釈する私の現在のお気に入りの理論の基礎です。システム2のようなものが反復的なファジーパターン認識から生じるためには、その反復シーケンスが高度に自己一貫性を持つ必要があるという考えです。
つまり、追加するものすべてが、それ以前のものと一致することを二重にチェックする必要があります。何の制約もなしに単に反復的にパターンマッチングを行うだけなら、基本的に幻覚を見ていることになります。これは夢を見ている状態で起こることとまさに同じです。
単に次に何が来るかを直感的に予測し続けるだけで、過去との一貫性や自己一貫性を全く考慮しません。そしてこれが、脳における意図的な論理的処理が意識を必要とする理由だと思います。意識は一種の自己一貫性チェックです。
それは、パターン認識プロセスの次の反復が、それ以前のすべてと一貫性を持つことを強制するプロセスです。そしてこの一貫性を達成する唯一の方法は、過去を現在に持ち込み、未来の予測を現在に持ち込むような、このような往復のループを通じてです。
そのため、現在において、あなたが焦点を当てているこのネクサスポイントのようなものがあります。そしてそのネクサスが基本的にあなたの意識なのです。つまり意識は、反復的なパターン認識を実際の推論、実際に自己一貫性のあるものに変える過程なのです。そうですね。
つまり問題は、あなたが立場を変えたわけではなく、人々があなたの立場を理解することの問題だったのですね。私は人々がシステムを二分化していると思います。つまり、記号論者は全てが離散的な世界だと考え、もう一方の接続主義的アプローチではすべてがファジーマッチングだと考えます。
私は純粋な記号論者の陣営に属したことはありません。プログラム合成が必要だという私の最も初期の著作に戻っても、深層学習によるプログラム合成が必要だと言っていました。直感とパターン認識を、離散的な一歩一歩の推論と探索と一緒に、単一のデータ構造に統合する必要があると。
そして過去8年ほど、人間の認知は実際に直感と推論の混合であり、どちらか一方だけでは遠くまで行けないと何度も何度も言ってきました。ベクトル空間や一般的な深層学習モデルが提供する連続的な種類の抽象化と、グラフと離散的な探索が提供するより離散的で記号的な種類の抽象化の両方が必要です。
では、あなたが明らかに記号論者ではないのに、なぜあなたの批判者はあなたを記号論者として見るのでしょうか?よくわかりません。私は長い間深層学習に関わってきました。基本的に2013年からです。2014年頃から深層学習を非常に熱心に布教し始め、その当時、分野はかなり小さかったのです。特にKerasと一緒に。
私は深層学習を可能な限り多くの人々にアクセス可能にするために相当な貢献をしたと思います。私は常に深層学習の人間でした。そして深層学習の限界について考え始めた時、深層学習を完全に異なるものに置き換えることは考えていませんでした。深層学習を記号的な要素で拡張することを考えていました。
あなたは意識についてのこのツイートでもコメントしました。システム2の処理はすべて意識を伴うと示唆しましたね。はい。明示的な一歩一歩の推論には意識が必要です。そして逆に、無意識に実行している認知プロセスがあれば、それは強い自己一貫性の保証を持たず、より夢や幻覚のようになります。そして基本的に、反復的に予測するだけでは、この強い自己一貫性の保証がない限り、ドリフトしてしまい、発散してしまうという考えです。そして意識は自己一貫性の保証なのです。そしてここで、意識なしにシステム2を持つことはできません。
推論の定義は何ですか?推論の単一の定義は持っていません。それはかなり負荷のある用語だと思います。そしてそれで多くの異なることを意味することができます。しかし、少なくともその用語が使用される2つの方法があり、それらは実際にかなり異なります。例えば、プログラムを単に暗記して、そのプログラムを適用する場合、それは推論の一形態だと言えます。
例えば学校で数字を掛け算するアルゴリズムを学ぶ場合、そのアルゴリズムを学んでいます。そしてテストの時に実際にそのアルゴリズムを適用します。それは推論でしょうか?はい、それは推論の一形態だと思います。
そしてそれは、特にLLMや深層学習モデルが非常に得意とする種類の推論です。パターンを暗記し、テスト時にそのパターンを取り出して再適用します。しかし、もう一つの推論の形態は、かつて見たことがないものに直面し、認知的な構成要素、知識へのアクセスなどを、その場で新しいモデルに再構成、再結合しなければならない場合です。
それも推論ですが、それは非常に非常に異なる種類の推論であり、非常に異なる種類の能力の基礎となります。そのため、深層学習モデルやLLMについての重要な質問は、彼らが推論できるかということではありません。彼らが何らかの意味で推論を行っているという点は常にあります。
より重要な質問は、彼らが新規性に適応できるかということです。なぜなら、人間が提供したプログラムを単に暗記して再適用できるシステムは多くあるからです。より興味深いのは、彼らが自身のプログラム、その場での自身の抽象化を考え出すことができるかということです。そしてシステムが自身の抽象化を考え出し、抽象化を始めることは何を意味するのでしょうか?まず第一に、新しい問題を解き始めます。
そして新しい問題を解くということは、何らかの知識ベース、構成要素から始めるということです。そして新しいタスクに直面し、それらを再結合してタスクのモデルを作り、このモデルを適用し、それが機能します。
そしてその過程で多くの問題を解く中で、アクセスできた構成要素の再結合のいくつかのパターンが頻繁に発生することに気付き始めます。そしてこれに気付き始めると、それらにタグを付け、抽象化し、より再利用可能な形に作り直すことができます。そしてこの再利用可能な形を、アクセス可能な構成要素のセットに追加し直すことができます。そうすれば次に同様の問題に遭遇した時、より少ないステップで、より少ないエネルギーで解決できます。なぜならその問題に適合した、より高いレベルの抽象化にアクセスできるからです。
推論の強さを測る方法はありますか?繰り返しになりますが、まず推論で何を意味するのかを正確に定義する必要があります。例えば、一般化力を正確に定義することができます。これは基本的に、適応できる新規性の量です。
はい、それは非常に興味深いですね。なぜなら性能の観点から定義することができます。つまり、私のモデルがどれだけ良いかということです。もう一つの説明方法は、推論を純粋に演繹的クロージャーを横断すること、クロージャーを横断することとして考えてみましょう。つまり、既に持っている知識を新しい構成で組み合わせるだけです。そして解決空間でそのジャンプを行います。なぜなら非常にうまく機能する新しいモデルを見つけたからです。
モデルの一般化力ではなく、モデルの種類を本質的に測る方法はありますか?いいえ、モデルが何をするかを観察する必要があると思います。モデルを検査するだけで、推論がどれだけ強いかを判断することはできません。つまり、これは良い推論であるという本質的な形式はありません。
例えば、問題の2つのモデルがあった場合、どちらのモデルが良いかを単に見て判断することはできますか?それは非常に目標依存的だと思います。つまり、それで何をしたいのかがない限り、物事のシミュレーションのようなモデルを評価することはできません。しかし目標があれば、その目標を達成するために必要な因果的要因を見るだけです。
そして最良のモデルは、おそらくこれらの因果的要因を保持する最も単純なモデルになるでしょう。フランソワ、次は何をしますか?そうですね、私は数週間前にGoogleを退職しました。そして友人と新しい会社、新しい研究所を立ち上げています。今のところ多くは共有できませんが、プログラム合成、特に深層学習によるプログラム合成に取り組むことになります。
そして現在チームを構築中です。素晴らしいですね。人を募集していますか?はい。もっと詳しく教えてください。何を話すことが許可されていますか?そうですね、お伝えできることは、これらの質問について、AGIに到達する最良の方法や、深層学習によるプログラム合成について話してきました。ARCを取り巻くRTXGIメソッドについて。
ARCの次のベンチマークがどうなるかについても。GoogleでKerasの開発が本業だった傍ら、これらの質問について考えてきました。そして今、研究に全力を注ぐ時が来たと感じています。
つまり、研究をサイドプロジェクトではなく、メインの仕事にするのです。焦点は新しいベンチマークを作ることですか、それともベンチマークを打ち破ることですか?両方だと思います。解決策と問題を共進化させる必要があるという考えの強い信奉者です。それが実際にRTXGIを作成した動機でもありました。AIで強力な一般化を達成する上での主なボトルネックである正しい問題に焦点を当てることを強制する、正しい課題を持つことです。
そしてRTXGIが最後のベンチマークだとは思いません。もちろんRTXGIのV2もあるでしょう。しかしそれも最後のベンチマークではありません。AI
にとって難しく、人間にとって簡単な新しいことを探求する新しいベンチマークが常に必要になると思います。自分のベンチマークに取り組むことは何らかの意味でズルではありませんか?そうは思いません。
ベンチマークは研究のためのツールとして意図されています。例えばRTXGIのようなものは、AGIを持っているかどうかを示す二値的な指標として意図されているわけではありません。それは本当に研究ツールとして意図されています。正しい問題に取り組むことを強制し、正しい問題に注意を向けさせ、進歩を助けるための課題です。
つまり、アーキテクチャは基本的にAGIに向かうコンパスのようなものです。AGIのテストではありません。そしてARCには可能な解決策のスペクトルがあります。例えば、プライベートテストセットの内容を知っているので、単に答えを直接入れることもできます。しかし私は何らかの賞を獲得するつもりはありません。
そもそも賞をかけていないので、なぜ答えを出すのでしょうか?そしてその一般化のスペクトルの上で、極端な一般化を目指すムーンショットがあり、あるいはその1段階下があります。あなたはどこを目指していますか?AGIを構築したいと思います。
人間レベルの能力を持つものを構築したいと思います。それはどういう意味で、AGIでどのようなことが達成できると思いますか?最も明白なのはプログラミングを解決することです。AGIを解決すれば、コンピュータに望むことを記述するだけで、コンピュータがそれを構築してくれます。
そして本当にAGIなら、人間のソフトウェアエンジニアができるのと同じレベルのコードベースの複雑さまでスケールするでしょう。おそらくそこで止まることはないでしょう。そこまで到達し始めた時、ソフトウェアエンジニアリングにおける人間の役割はどうなると思いますか?見てみましょう。
この技術が準備できた時、全く新しいツール、全く新しいインターフェースを作り始めることになると思います。まだかなり遠い話です。フロンティアモデル、O1でさえそのレベルにはまだ達していません。
プログラマーは非常に技術的ですが、将来プログラミングは民主化されると思いますか?そう思います。将来は誰もが基本的に、自分が直面している問題についての自身のドメイン専門知識に基づいて、自身の自動化プロセスを開発できるようになるべきです。コードを書くという意味ではなく、コンピュータに何を自動化したいのか、どのように自動化したいのかを説明するという意味で、誰もがプログラミングできるようになるべきです。
そしてコンピュータがそれを実行するだけです。ソフトウェアの大きな課題は、異なるスケールでの複雑さに対処することです。それはまさにあなたがキャリアを通じて行ってきたことです。この問題は常に存在し、この信じられないほどの複雑さの境界上に常にいることになると思いますか?それはどういう意味ですか?つまり、階層の1、2段階上を民主化したとしても、依然として本当に複雑なソフトウェアを構築することになるのではないでしょうか?そうかもしれません。しかし、その複雑さを外部の複雑さ処理AIに委ねることができるようになるというアイデアです。
つまり、実行されているコードを全く理解していない未来に移行するということです。絶対にそうですね。これは実際、大規模なコードベースを見ると、すでにかなりの程度真実です。単一のソフトウェアエンジニアが全てを理解しているものはありません。
私たちは常に、行っていることの断片的な理解に制限されています。これは、システムの高レベルの目標と制約をしっかりと把握している限り問題ありません。では、そこでのエージェンシーの源はどこにあるべきでしょうか?なぜなら、多くの開発者がシステムの非常に小さな部分について独自の視点を持つという象と盲人のような課題を説明していますが、AGIバージョンではそれがどのように変化する可能性があるのでしょうか?
広く言えば、入出力ペアからのプログラミングが将来の広く普及したプログラミングパラダイムになると思います。そしてそれは誰でもアクセス可能になるでしょう。なぜならコードを書く必要がないからです。プログラムに何をしてほしいかを指定するだけで、コンピュータが自身でプログラミングを行います。
そしてもし指示に曖昧さがあった場合、必ず曖昧さはあるでしょう、特に非技術的なユーザーから指示が提供された場合。心配する必要はありません。なぜならコンピュータが明確にするよう求めてきます。「あなたが言ったことに基づいて最も妥当なプログラムを作成しましたが、ここといくつかの点で曖昧さがあります。このような入力に対して、現在このような出力を得ています。それは正しいですか?変更したいですか?」と言って、反復的に修正していきます。コンピュータとの協力の下で正しいプログラムを作成しているのです。
つまり、これらの将来のシステムはプログラム合成を中核的な、明示的なコンポーネントとして持つことになります。しかし人間はそれとどのようにインターフェースを取るのでしょうか?自然言語で記述したり、ジェスチャーや画像などを使用し続けることになるのでしょうか?自然言語かもしれませんし、画面上にインターフェース要素を描くことかもしれません。
生成されているプログラムの高レベルな表現を、非技術的なユーザーが視覚化して理解できるレベルで常に生成しようとすることもできます。例えば、データフローグラフのようなものを表示し、ユーザーに入力を求めることができます。非常に興味深いですね。
LLMの特徴の1つは、ハイパースケールが比較的簡単だということです。なぜなら、基本的にCDNのように、重みをコピーして移動させるだけだからです。あなたが説明しているのは非常に洗練されたもので、プログラムがすべての異なるノード間を移動するグローバルに分散されたデータベースのようなものに少し似ているかもしれません。これには全く新しい種類のアーキテクチャを構築する必要があるのでしょうか?
はい、生涯にわたる分散学習を実装するために全く新しい種類のアーキテクチャが必要になると思います。そこでは基本的に、同じAIの多くのインスタンスが並行して異なる人々の異なる問題を解決し、問題間の共通点や解決策間の共通点を探します。
そして十分な共通点を見つけた時はいつでも、これらの共通点を新しい構成要素に抽象化し、それがシステムに戻ってシステムをより有能でより知的にします。分かりました。つまりあなたは、ARCの良い解決策を見つけた上で、グローバルに分散されたARCを構築しているのですね。
実際に何を構築しているのかはお話しできませんが、クールなものになるでしょう。はい、かなりクールに聞こえます。OpenAIのような企業が、テスト時の推論だけでなく、あなたのアイデアの一部を現実的にどのようにシステムに組み込んでいくと思いますか?例えばフロンティアモデルはどのようにプログラム合成を組み込むことができるのでしょうか?
そうですね、O1のようなものは既にまさにそれを行っていると思います。O1を見ると、おそらく行っているのは、自身が行うべきことを記述する自然言語プログラムを書き、そのプログラムを実行することです。そしてこのプログラムの書き方は非常に洗練された探索プロセスです。これは既に自然言語空間でのプログラム合成です。
プログラム合成を活用する他の方法もあります。潜在空間でプログラム合成を行う可能性もあります。Clément BonnetとFranceが行っているようなものです。また、実際のプログラムを生成することもできます。なぜ自然言語で行う必要があるのでしょうか?時には実際のプログラミング言語を使用したいかもしれません。
そのため、より多くのテスト時の計算を活用する方向へのシフトを確実に目にしています。そしてそれは加速するでしょう。それは根本的なトレンドです。しかし、変換的なアクティブファインチューニングについてはそうではありません。それは建築的にやや難しいですね。なぜなら私のモデルは常にファインチューニングされているからです。
Dockerのようなものを構築するかもしれません。そこではベースレイヤーがあり、私のファインチューニングレイヤーがあり、別のファインチューニングレイヤーがあり、非常に断片化されています。実際のフロンティアモデルでテスト時トレーニングを適用する難しさは、インフラストラクチャにはそれほどありません。
現在のサービングインフラストラクチャは、タスクごとのファインチューニングを行うようには全く設定されていないことは確かです。しかしそのように再設計することはできます。主なボトルネックは実際にはタスクフォーマットです。明確な入力とターゲットがある場合にのみテスト時トレーニングを行うことができます。
基本的に入出力ペアが必要です。そして大部分のプロンプトではそれを持っていません。ARCでは明らかにそれを持っていますが、大部分の問題ではそれを持っていません。そうですね。Zero1の仕組みについてのあなたの理論は何ですか?そうですね、推測することしかできません。実際にどのように機能しているのかは分かりません。しかし起こっているように見えるのは、可能性のある空間で探索プロセスを実行しているということです。
可能な思考の連鎖の空間で、ツリーのどの枝がより良く機能するかを評価し、現在の枝がうまく機能していない場合は潜在的にバックトラックして編集を行っています。最終的に、非常に長く、洗練されていない、そしておそらく最適に近い思考の連鎖に到達し、それはモデルが行うべきことを記述する自然言語プログラムを基本的に表現しています。
そしてこのプログラムを作成するプロセスの中で、モデルは新規性に適応しています。そのため、O1のようなものは、これらのシステムで達成できる一般化力に関して、本物のブレークスルーだと思います。古典的な深層学習パラダイムを遥かに超えています。推論時にアクティブなコントローラーが存在するという考え方の1つの学派があり、私はあなたもそれに同意していると思います。
つまり、実際に複数の軌道を孤立した方法で実行しています。そして探索を行っています。良いですね。一部の人々は、トレーニング時にプロセス監督や何かがあると考えていますが、推論時にはすべて1つの、1回のフォワードパスだと考えています。それは確実にありそうにありません。テスト時に費やされる計算量を考えると。
テスト時に明らかに探索を行っています。非常に興味深いですね。トレーニング時に、現在の問題に利用可能な最良の思考の連鎖を再現するようにトレーニングされていると思います。基本的にAlphaZeroスタイルのトレーニングですが、テスト時にも思考の連鎖空間で探索を行っています。そしてこれは、計算量、つまりトークン数とレイテンシーを見れば明らかです。
そのような探索が行われていることを示す他の明確な兆候はありますか?例えば、特定の領域を探索した後、統合の後にそれが消えてしまうというようなことがあります。つまり、モデルと話をすると、その思考の一部を忘れてしまったかのようです。はい。
正直に言って、これは少し具体的すぎます。O1が行っていることについて内部情報は持っていないので、推測することしかできません。わかりました。Noam Brownのような人々は、このテスト時の新しいスケーリング則にとても熱心です。そして確かに私もZero1 Proが大好きです。質的に大きな改善だと思います。
しかしあなたはどう思いますか?はい。テスト時のスケーリング則は基本的に、より多くの計算を費やし、より遠くまで探索すれば、それに応じて精度が向上するという観察です。そしてちなみにその関係は対数的です。つまり精度は計算量に対して対数的に改善します。
これは本当に新しいことではありません。テスト時の探索を行うときはいつでも、この関係が見られます。例えば力づくのプログラム探索を行う場合、問題を解く能力が計算量に対して対数的に向上することがわかります。より多くの計算を持っていれば、可能なプログラムの空間をより遠くまで探索できます。
そして対数的により多くの解決策を見つけます。テスト時の探索を行うときはいつでも、この関係が見られます。現在のあなたのお気に入りのモデルは何で、それを何に使用していますか?大部分はGemini Advancedを使用しており、実際に最新のGemini Flash、最新のものを使い始めたところです。私もです。Gemini Advanceに課金しています。
また、Claude 3.5も使用しています。プログラミングには非常に優れていると思います。これらが私が使用している2つです。LLMとのプログラミングワークフローはどのようなものですか?プログラミングにLLMをそれほど使用していません。しかし典型的には、現在直面している問題がLLMに適していると感じた場合、ブラウザを開いてLLMにプロンプトを送り、x、y、zを行う関数を求めます。
そして通常は最初の試みではうまくいきませんが、少しのデバッグと調整の後、大きな時間の節約になると思います。プログラミング時にどのような失敗モードを見ますか?LLMについてですか?そうですね、失敗モードは使用しているモデルによって異なります。一般的に、3.53.5が最良のものだと思います。
しかし時々、全く理由のないコードがあります。使用されない変数や、入力データによって検証されない前提がコードによって作られているなど。コードが統計的な尤度の観点から生成されていることは明らかです。
実際に自己一貫性を持たせたり、正しさを確認したり、事前に実行を試みたりする努力はありません。そのため、実際にはかなりの改善の余地があると思います。そして将来的には、プロンプトを送る際にこれらすべてを実際に行うARM基盤のソフトウェア開発アシスタントを想像することができます。つまり、コードを書いた後、それを実際にあなたに見せる前に自身でデバッグを試みるものです。
現在流行しているLLMエージェントシステムについてどう思いますか?そうですね、エージェントはかなり長い間流行っています。人々はエージェントが未来だと話し始めました。約2年前、つまり1年半ほど前からです。そしてこれまでのところ、エージェントは本当に離陸していません。
ここでの根本的な問題は、LLMが完全には信頼できないということです。1回のフォワードパスを見ると、基本的にLLMを予測マシンとして考えることができます。そしてそれが行う予測は、明らかにランダムよりもはるかに優れています。非常に有用な予測です。方向的に正確ですが、間違っている可能性があります。
そしてエージェントのワークフローを見ると、これらの予測の多くをつなげています。そのため、望む場所に到達しない可能性は、より多くの予測をつなげるにつれて劇的に高くなります。これが大きなボトルネックです。エージェントは単に信頼できません。十分なレベルの自律性を持っていません。
そして人々はより良いモデルでこれが修正されると言います。これは経験的な問題だと思います。一般的なワークフローが実際に機能し始めるのを待っています。今日では達成できていません。この点について私の立場は少し柔らかくなりました。曖昧性の問題のために、それらは方向を誤っています。
そしてこれをつなげると、非常に方向を誤ります。しかし、より多くの計算を手元に持つことには価値があります。AIサイエンティストの論文を書いた人々にインタビューしました。そして確かにClaude sonnet 3.5に論文全体を生成させると、信じられないほどの陳腐さになります。
それは単なるスケッチになります。彼らが行ったのは、Googleマップのアナロジーで言えば、ズームインとズームインとズームインを何度も何度も繰り返すような、多くのエージェントワーカーに分解することでした。そしてそれは劇的に良い結果を生みました。はい、これは理にかなっています。
これは基本的に、システム2が強力な制約を持つ反復的なシステム1のようなものであり、制約が非常に重要だという先ほどの考えと一致すると思います。この場合、上位構造は人間のプログラマーによって提供されています。人間のプログラマーが問題を適切なサブ問題に分解し、全体を適切な方法で調整しているのです。そして各サブ問題は実際に予測によって解決でき、十分に良い予測を生成できます。SARS-CoV-2は来年初めに出るのでしょうか?おそらく。
現在、人間によるテストを最終段階で行っています。先ほど述べたように、すべてのパズルは多くの人間によって解かれ、それが解決可能であることを確認し、平均的な人間にとってどの程度難しいかを判断するためのデータを持っています。目標は、難易度が調整された3つのセットを持つことです。
そのため、公開セットでスコアを取得し、そのデータセットにオーバーフィットしていない場合、他の2つのセットでも非常に似たようなスコアを取得できると確信できます。人間でテストした時、知能の測定についての論文で書いたように、知能にはg因子があるという考え方があります。
そして別の考え方では、それは非常に専門化されているということです。あなたの実験で、人間のグループが一般的にすべてのタスクでかなり良い性能を示したことがわかりましたか?それとも大きな専門化が見られましたか?いいえ。より知的で、私たちのタスクを解くのが単に優れている人々がいることは絶対的な事実です。
そしてそれは人間のテストデータで見ることができます。長いテールについてはどうですか?タスクの種類に専門化が見られますか、それともかなり均一ですか?かなり均一だと思います。つまり、できるかできないかです。興味深いですね。フランソワ・ショレ、番組に出演していただき光栄でした。ありがとうございました。ありがとうございました。素晴らしかったです。素晴らしい。

コメント

タイトルとURLをコピーしました