エージェントが工場を構築する!Factorio学習環境とは?
引用元:https://news.ycombinator.com/item?id=43331582
おお、すごいな!AnthropicのFactorioラボで働きたいって気持ち、めっちゃわかるよ。論文とかのコメント見ても、マルチモーダルデータを返してるかは分からないけど、今出てるモデルはマルチモーダルじゃないのが多いよね。でも最近出たQwen 2.5 VLMは、サイズのわりにかなり強そうだし。もしかして、今後は画像も送信するのかな?ありがとう、最高の試みだと思うから、早速遊んでみるよ! MCVでPythonライブラリ使えるようにするのは、みんながFactorioで遊べるようになるから、必須だね。
今はテキストのみの環境だけど、将来的にはビジョンもサポートする予定なんだ。テストした結果、ゲームの状態のスクリーンショットを送っても、オフ・ザ・シェルフモデルの性能は向上しなかったんだよね。ゲーム状態が複雑になると、スクリーンショットにエンティティが増えてモデルが混乱しやすくなって、方向やエンティティを見失ったり、工場の問題も解決できなくなったりした。多分、今のVLMは高詳細な画像での空間的推論がうまくできていないからだと思う。フィンチューニングを行えば改善されるかも。MCPについても良い指摘だね、最近注目を集めているし、検討するよ!
なるほど、面白いね!これは確かに難しい視覚的テストだと思う。何千というエンティティを扱うわけだから、スクリーン、マップ、オーバービューマップ、または巨大な高解像度画像を使うことになるし。ここで提案があるんだけど、FLE-Vっていうビジュアルモデル用のベンチマークを作って、Factorioの画像を適切なFLEの説明に変換することができれば面白いと思う。オーバービューとマップの画像も含めてね!
この研究は、実際の産業環境に応用したら、数千億ドルのGDPに影響を与える可能性があるよ。
Factorioに無駄に時間を使う人がいなくなったら、みんなの生産性が上がるよね。私もその一人なんだけど、最適解が分かればもう無駄に遊ばないから。
無駄な時間じゃないよ、研究をしてるって言えば奥さんも理解してくれるさ。
いい指摘だね。妻に「研究してた」と説明すればきっと分かってくれるよ。
よし、じゃあ早速トレーニング始めるか!
>ゲーム状態が複雑になることで、モデルが混乱して方向やエンティティを見失ったり、工場の問題が解決できなかった理由を説明してる。これはまさにSOTAを進めるための研究論文になるんじゃないかな。どうやってうまくいったのかを示す必要があると思う。
視覚的に「藁の中の針を探す」みたいな作業になりそうで、面白いかもね!
Waldoテストってどうなの?
工場の状態をテキストで説明する方が簡単だし、混乱も少ないのに、スクリーンショットが必要なのはなんで?グリッドでプレイするから、ゲームの状態をASCIIにするのも簡単なはず。
エンジニアリング的には簡単だけど、どの表現方法が現モデルの空間的推論能力を引き出すのかが根本の問い。数ヶ月前に、ASCII表現でエージェントに推論させたけど、あまり上手くいかなかった。テキストトークンだけでは、正確な内部空間表現を作るのに苦労しているみたい。改善するためには、最も効率的で質の高い表現が何かが気になる。
>モデルがテキストトークンだけで内部空間表現を作るのが難しいって言ってたけど、それは面白い研究テーマになるかも。彼らが全くできないなら、それが重要な知見だし、もし異なるモダリティが異なる推論能力を引き出すなら、もっと興味深い。でも、予想外の能力があるモデルがモダリティに基づいて推論できるなら、すごいかも!大学に戻った方がいいかもな。
物体同士の2Dベクトルを使って位置関係を表現するのはどう?コーディネートに基づく位置情報を与えても、現在のモデルは空間的推論が苦手だから、全ての物体の関係を持たせることができれば、もっと上手くなると思う。
確かにその案は話題に出たけど、結局試してない。相対情報を多く持つモデルなら、空間的能力も向上するって直感的に思うから、チャレンジしてみる価値はあるよね。
テキストのベクトル空間って、幾何学的オブジェクトの空間距離よりも意味的距離の方が直感的に違うと思うんだ。知覚された境界の比率をトークン化できればいいんじゃないかな。ただの思いつきだけど。
ベクトルを意味的意味にしか使うなって混同してない?Factorioのオブジェクト間の空間的関係を全部持たせると、LLMが完全な関係マッピングを得られる。画像を見たり絶対座標を与えたりするだけじゃ難しいんだから。
でも、それは偏った近似で、真実を同じ比率で求めようとしてるから、絶対量を測るのとは違うんだ。全体的に視覚的認識って、絶対的な量を測るんじゃなくて、比較の違いに気づくことが大事だと思う。
エンジニアリング的には簡単でも、トークンがめっちゃ多いんだ。ロングコンテキストモデルは、全ての文脈を持たせるために色んな手法を使うけど、詳細を省いたり、推論しにくいトークンセグメントがある。バーナーインサータが50〜100トークン占めるし、100個の推論をさせるのはLLMにとっても難しいよ。
マルチモーダルモデルについてよく知らないけど、工場を表すピクセルアートがどう思われるか気になるな。各ピクセルがグリッドのポイントで、色が特定のエンティティを表すって感じで、ボットが飛び回るのは無視するのがいいかも。実際のスクリーンショットより理解しやすいかもね。 密なASCII表現を作ると、その空間的関係から得られる利点が失われちゃうんだよね。トークナイザーが文字だけに働かないし、数が多い’死んだ’トークンも関係してくる。私たちのスパースエンコーディングの方がモデルを混乱させないみたい。 まあ、ボードステートはDwarf Fortressの拡張ASCII表現に圧縮されることになるだろうね。各グリッドの状態が2バイトずつみたいな。 ここにはたくさんの質問があるね。アイテム、向き、パイプの情報(2方向)、ベルト(3か4の色×2方向)も必要だよ。回路が欲しいの? 最近、強化学習を使ってエージェントにポケモンレッドをクリアさせたチームのHN投稿があったよ。探検に対して小さな報酬、大きなタスクをクリアしたら大きな報酬を与えるコスト関数を調整したらしい。Factorioでも同じアプローチが使えるか気になるな。例えば新しいアイテムや科学パックの自動化で報酬を与えるとか。 Factorioのベテランとして言うけど、『できるだけ大きな工場を作る』って目標は曖昧すぎて良くないと思う。プレイヤーは大きなメガベースを作るときは『サイズ』より『科学研究率』を重視してるんだ。エージェントにはSPMを目指させるべきだよ。 同意、‘最も大きい’ベースにはいくつかの問題があるよ。機械1をスタート地点に置いて、ある方向に進んで、時間が来る前に機械2を置くだけ。これは広い工場にはなるけど、あんまり面白くないよね。 ああ、またFactorioの中毒者がいるね :) 最初のプレイはどのくらいかかった?v1.xの最初のロケットを打ち上げるまでの。 FLEでは、新しいエンティティが作成される最初のタイミングを示すマイルストーンがあるけど、異なる自動化レベルに対する報酬をどう分けるのか考えるのは面白そうだね。一緒にやろう! これは興味深い。私たちの発見の一つは、Claudeが重要なタスクや簡単な自動化はできるけど、『最大の工場を作る』ゲームエピソードではそれを試みなかったことだ。モデルは一般的な目標では計画的に動けないみたいで、小規模な構築ばかりしてた。それが私たちの目標の一つでもある。 いろんな人生にも同じアプローチが使えるかもね。 ページ読んだの?アイテム生産ごとに報酬があって、複雑なアイテムほど高い報酬が貰えるって言ってたよ。 >私たちは6つの最先端言語モデルを評価した:Claude 3.5-Sonnet、GPT-4o、GPT-4o-Mini、Deepseek-v3、Gemini-2-Flash、Llama-3.3-70B-Instruct。 確かに、その通り。もっとシンプルなベンチマークで計画を試すべきだけど、私たちは様々な能力を同時にテストするために広範囲な評価を作ることにしたんだ。 それはわかるけど、他の最先端モデルもテストして、ベンチマークが彼らに合うか確認すべきだよ。理由付けが必要なモデルにとって、最短経路のベンチマークはあまり意味がないからね。 >すべてのモデルは、マルチセクション工場を構築する際に空間計画に制限があることを示した。 そんなに特別なデータがないとは思えないよね。最も単純なシミュレーターでも無限に生成できるじゃん。例えば、10行のコードで無限のグリッドでtik tac toeを実装すれば無限の訓練データが得られるよ。 合成データは確かに重要だけど、物体の口頭による説明が空間的振る舞いにどんな影響を与えるかなど、別の課題もあるんだよね。Factorioの場合は、環境のルールが単純で明確だから、合成データを生成する方が簡単かも。 面白い「Lab Play」タスクとして、バランサー設計も見てみたいな。小さなバランサーでもかなりややこしいから、モデルが設計やトラブルシューティングできるか知りたい。 誰かが、もっと従来のSATソルバーを使ってその問題にアプローチしたみたいだよ。 モデルはFactorioをプレイするように後から訓練されたの?A) Claudeには公開の重みがないから、無理じゃない?B) 後から訓練してないなら、エージェントはAPIの使い方をどうやって知るの?英語の意味を推測してもレシピはどうするの?後から訓練してないなら、やっぱりすごすぎじゃね?検証に使ったAPIのペア数ってどれくらいだったの? エージェントはツールの関数シグネチャ(ツールのドキュメントや入力・出力の型)や、小さなマニュアルを見てたんだ。マニュアルにはツールが何をするか、ゲーム状態に与える影響、使い方の例が載ってたから、意外と使えたみたい。要するに、後から訓練はしてないけどモダンなエージェントが良くできるって証明になってる。 モデルは後から訓練されてなくて、市販品を使ったんだ。最高で128ペアがコンテキストに入るけど、32ペアでも実績は同じだった。名前を短くすると性能が落ちたから、詳細な名前がモデルには重要なことが分かったよ。 Claudeが他のモデルより優れてる理由、何か仮説ある?単にコーディングが得意だからとか?それとも、数学的なタスクにも強いってことは、トランスファーラーニングの証拠になるかも。特定のタスクを訓練することで隣接タスクも運が良くなる可能性もあるし。検証方法知ってる? 著者の一人がAnthropicで働いてるみたいだから、内部情報が得やすいって思った。 一人がAnthropicにいるけど、モデルや重みへの内部アクセスはなかったよ。すべての評価は公開モデルでやったから。 素晴らしいアイデアだね。ここには面白い実験がたくさんあると思う。エージェントをタイマーでテストすると、実際のプレイに近い状況が作れるし、長期的な分析性能がいいかも。レイアウト最適化に関するベンチマークも計画ある? もしかしたら、もう少しタワーディフェンス的なタスクを作るのが面白いかも。Xステップごとにバイターを放出して、軍需産業を構築するテストもいいかも。ただ、フロンティアモデルには意外な制約がありますね。 >このアイデアは、Peter WattsのMalakみたいな短編小説のアイデアになりそう。未来の戦闘AIがフィルターで思わず枕を投げ合ってるような感覚を持つ、みたいな。 確かに、そういう話のエピソードもあった気がする。兵士たちがモンスターと戦っていると思って、実際には戦争犯罪を犯しているってやつ! 「Spec Ops: The Line」って2012年のゲームの中心的なプロットツイストだね!最初は普通のCall of Dutyクローンみたいだったのが、最終的にはPTSDが兵士にどんな影響を与えるかをちょっとひねりの効いた視点で描いてたんだよ。 その提案好き!クローンしていじってみるよ。レイアウト実験は色んなジャンルが必要ってのはその通りだと思う。例えば不均衡なベルト、アイテム争いしてるインサータ、フル負荷時の電力不足とか、色んなデバッグのチャンスがありそうだね。最初は比率最適化に集中するといいかも。エージェントがコピー&ペーストしてベルトをアップグレードするのを理解するのは面白そうだし、早期の技術ツリーでは銅ケーブルの使い方を最適化するのも重要だと思う! もし(1)が(2)の特別なケースなら、(2)だけで良いんじゃない? 確かに!でも両方をベンチマークしてみるのも面白いかも。特に(1)はデバッグに重点を置いてるから、エージェントが多くの時間をそれに使うってのもあるしね。 PvZみたいな感じでいけるかも? 複雑なシナリオが数個しかないのは面白いね。MLエージェントには小さなパズルが何百も必要だってずっと思ってた。例えば電力が足りない工場、アイテムが不足してる工場、200個の組み立て機を作って配置する、動かない組み立て機を直す、生産を倍増させる、工場の別のポイントまで速く行く、停電を直す、ボットの有無でやる等。何千ものシナリオをプログラムで生成できれば、古典的なIQテストの問題集みたいに使えて、難易度が上がるシナリオから評価できると仮説してる。 シナリオをテキストで生成するのは簡単そうだけど、正しい工場ゲームの初期状態を作るのは難しいと思う。要するに初期状態をデザインして、その状態から達成すべきタスクを作るのと同じことだよね。 各シナリオは誰かがデザインする必要があるけど、その効果は大きいと思う。例えば「見えない電力ポールを置く」シナリオでは、いくつかの機械と蒸気エンジンを繋げて作ってから、働いてる工場から1~2個の電力ポールを削除すれば、400個のパズルが生成できる。人間はどれも同じだと思うだろうけど、エージェントは明示的な変化が必要かも。 とっても興味深い!動いてる工場のシナリオを10個作って、違った方法で工場を壊すってアイデアいいね。 まさにそれ!このアプローチなら「問題を直す」型のテストを簡単にたくさん生成できそう。クリエイティブに考えれば、他のタイプのテストにも変化を重ねられると思う。 今後の訓練方法として、カリキュラムアプローチを考えているんだ。でも評価を重視している今の作業には取り入れたくない理由は、タスクの“難易度”が主観的で、恣意的な決定が評価に影響を及ぼすからなんだよ。どのタスクがどのシナリオの後にくるかとか、難易度をどうカバーするかってのが課題なんだ。 ”カリキュラムアプローチ”って言い方いいね!>タスクの難易度が主観的っていうの、納得。シナリオの難しさは、トレーニング率に基づいて部分的な順序を想定して導き出せるかもね。例えば、Aを先にトレーニングすると、TがうまくいくけどBだとTには役に立たないみたいな感じで。だからA<T、B?Tって推測できるかも。 このインターフェーススタイルの人間のプレイのベンチマークってあるの?必要不可欠じゃないけど、プログラムでのFactorioがどんな感じなのか気になる。テキストプロンプトを通した空間的推論は、人間には難しそうだと思う。 Factorioの人間のベンチマークはスピードランナーで、最初のロケット打ち上げを急いでやるのが主。現在の記録はたったの4時間で、チームだと90分で達成してる。これだけ見ても、マルチタスクのLLMが人間よりも優れている可能性があるよ。 現在の4時間12分の記録は、100%達成(ゲーム内の全ての達成項目を一回のプレイで達成)で、any%は2時間未満(最新のFactorio v2.xで1時間42分、v1.xで1時間18分)。カテゴリーごとの記録やルールは、ここで確認できるよ。 彼が言ってるのは、LLMsがゲームをプレイするために使ってるプログラマティックAPIを使う人間のことじゃないかな。普通のプレイよりも遅くなると思う。 初期のラボタスクはすべて手作業でクリアできたよ。だけどUIを使った時より時間がかなりかかった! 面白いね。数年後には、ゲーム内の対戦相手がみんなLLMになって、君が作ったゲーム制御APIにアクセスする時代が来るのかな。モデルが苦手なタスクって特にある?それとも、単に置くアイテムの数が増えると難易度が上がるのかな。 LLMsが対戦相手として広く使われることは考えにくいよ。ほとんどのゲームの敵AIは、機械学習が求めるほどの複雑さを必要としないしね(計算コストは無視して)。敵AIの目標は、プレイヤーに挑戦する面白さを提供することであって、難しさを追求することじゃないんだ。多くのゲームは有限の論理状態を持っていて、十分に大きければ人間にとっては解決が難しいんだけど、つまり人間はそれに挑むのが得意なんだ。Factorioは特異で、勝利条件がほとんどプレイヤー次第だから、効率が重要なんだよ。 Civilization(VIIが最近リリースされたばかりだけど)では、難しい難易度がAIのチートによって難しくなることで有名。もしゲームがAIの賢さによって難しくなったら、プレイヤーにとってアップグレードの価値が出てくるのに! 対戦相手としては楽しめないけど、競技ゲームのトレーナーとしては役に立つよね。 行動計算リソースなしでできると思うよ。異なるモデルをゲームに簡単に使えるAPIがあれば、そっちの方が簡単。モデルには空間推理と長期計画が苦手って欠点があるから、特に生産チェーンが深いほど難しくなる。細かい問題にこだわりすぎて大きな計画を考えるのが苦手かな。 具体的なプロンプトで、長期的なタスクを使わせるマーメイド図とか試した? 試したよ、でもあまり効果はなかった。視覚的DSLでも解決できない問題があったみたい。やっぱり学習しないと解決策はないみたい。 なんでLLM?AlphaZeroの方が得意じゃない?LLM以外にも役立つMLモデルはたくさんあるよ。 自動で効率的な工場を作るなら、LLMをハイレベルエージェントとして使って、専門ツールを使いこなす感じでいけるんじゃないかな。全体戦略は、1. 資源生産の目標を立て、2. 工場グラフを作って、3. 結果図をハードウェア記述言語にマッピングし、4. 2D FPGAレイアウトにコンパイルして、5. ファクトリーデザインに戻すみたいな流れ。 まさに考えてたことだよ。LLMが複雑な問題に適用されるのは、人間が問題を分解して専門の道具や機械を使うから。LLMの回答は直感的にアルゴリズムを理解しているけど、実行するのが非効率的。自然言語推論は現実を抽象化するのは得意だけど、タスクは機械に任せないといけない。 面白いね!もっと大きな工場の写真が見たかったなー。今のところzig-zagベルトがプラスチック生産の最適解っぽい。でもLLMには大きな弱点があって、人間はタスクに特化して適応できるのに、LLMはまだそこまでいけてない。オンライン学習での改善を期待してるけど、APIでのやりとりは人間と比べてどうかな? 大きな工場の写真あるけど、アーティファクトや意味不明なものが多いから整理して付録に加えるよ。zig-zagベルトは一番よく動いてた。エージェントはゲーム内で成長できるけど、持続的な成長には至ってない。API設計が一番の課題だった。人間がAPIだけでロケット打ち上げまでできるか試したけど、色々なテストで確かにできたよ。 すごいアイデアだし、実行も見事で、興味深い結果が出てるね。マジで、今の時代は生きてて楽しい!もっとコメントを表示(1)
この試みは評価できるけど、計画能力を最大限に引き出せるもっとシンプルなベンチマークがたくさんあるよ。例えば、街の間のフライトコネクションをリストにして、行き先を尋ねるだけで混乱しちゃうんだ。
LLMが空間推論に弱いのも納得だよ。データが少ないからね。空間推論が解決されたら、どんな新しい推論能力が出てくるのか気になるよ。もっとコメントを表示(2)
もっとコメントを表示(3)
https://www.speedrun.com/factorio