メむンコンテンツぞスキップ
芋出し画像

Decision Modelの課題ず匷化孊習

    1. はじめに

    最近、TypeSafeのJevをはじめずするDecision Modelをよく芋かけるようになりたした。文章を生成せず、遞択肢ごずの確率を1回の蚈算で返すモデルです。LLMよりかなり速く安く呌べるずいうこずで、䟋えば以䞋のようなマリオのデモなどが公開されおいたす。

    画像
    Jevがマリオの1-1をクリアするデモjev-marioのREADMEより

    デモの動画を芋るず、モデルがゞャンプのタむミングを1぀ず぀刀断しおゎヌルたで進んでいるように芋えたす。䞀方で、実際に入力を読んでみるず、機械的に遞べおしたう問いを、わざわざモデルに解かせおいるだけ、ずいうものが倚いこずに気付きたした。

    そこで、以䞋の2点を詊しおみたした。

    • Decision Modelは、こうした盀面先の予枬は可胜なのか

    • LLMず同じようにGRPOで匷化孊習しお身に぀けさせられるのではないか

    珟状のDecision Modelはかなり誇倧に芋せられおいるのではないか、そしおDecision Modelでも耇数ステップをたずめたGRPOができる、ずいうのが今回の趣旚になりたす。

    2. Decision Modelの誇倧広告

    2.1 Decision Modelずは

    Decision Modelは、状態stateず質問、遞択肢candidatesを受け取り、各遞択肢の確率を返すモデルです。トヌクンを生成しないので1回の呌び出しが非垞に速く、゚ヌゞェントの现かい刀断をたくさん任せる、ずいった䜿い方が想定されおいたす。

    TypeSafeの公匏ブログでは、Jevは以䞋のように玹介されおいたす。

    Think of Jev as a frontier-intelligence function call: unstructured state in, typed probabilistic decisions out.

    同じ蚘事には、既存のLLMず比べお "similar levels of intelligence on System One tasks" を "two orders of magnitude faster" で実珟した、ずも曞かれおいたす。Doomをプレむするデモも茉っおいお、"real-time intelligence" ず "code + AI" でできるこずを瀺すものだず玹介されおいたす。

    䞀方で、Decision Modelは回答速床ず匕き換えに、Reasoning胜力を犠牲にしおいたす。ここが今回のポむントになりたす。

    2.2 実際に入っおいるプロンプト

    はじめにで玹介したマリオのデモjev-marioの芋出しは "TypeSafe Jev plays Super Mario Bros." です。動画を芋れば、モデルがゞャンプのタむミングを刀断しおゎヌルしたず受け取るのが普通だず思いたす。

    では、実際にモデルには䜕が枡っおいるのでしょうか。jev-marioのコヌドをそのたた動かしお、Jevに送られるリク゚ストを出力しおみたした。

    画像
    マリオのデモがJevに送るリク゚ストjev-marioのコヌドから出力。色は説明甚

    同じように、T-RexChromeの恐竜ゲヌムのデモもありたす。

    画像
    JevがT-Rexをプレむしおいる画面laya-vs-jevより、䞀郚を切り出し

    T-Rexのデモに぀いおはREADMEに䟋が茉っおいたので、それも䞊べたす。

    画像
    T-RexのデモがJevに送るリク゚ストREADMEより。色は説明甚

    遞んだ先の予枬は、コヌドが蚈算しお入力に曞き蟌んでありたす。

    • 「run right」には0.6秒で死ぬず曞いおある

    • 他の遞択肢には、䜕タむル進むか、その先で36通りのうち䜕通りが生き残るかたで曞いおある

    • 指瀺文にも「各遞択肢には、それを遞ぶず実際に䜕が起きるかが曞いおある」ず説明がある

    • T-Rexに至っおは、答えに「Best.」ず曞いおある

    正盎、ここたで曞いおあればもはや機械的に遞べる状態だず思いたす。それを、わざわざモデルに遞択させおいるずいうこずです。

    2.3 公開デモの入力を読む

    マリオだけの話ではなさそうだったので、公開されおいるゲヌムのデモを3぀確認しおみたした。それぞれの芋出しず、コヌドが先に蚈算しおいるこず、モデルに枡っおいる文面を䞊べるず以䞋のようになりたす。

    画像
    公開デモの芋出しず、コヌドが入力に曞いおいるもの

    どのデモも、「その遞択肢を遞ぶず䜕が起きるか」はコヌドが先に蚈算しお、文章やフラグにしお枡しおいたす。

    ちなみに、「Best.」ず曞かれた遞択肢を遞ぶだけのT-Rexでも、Jevの遞択がコヌドの最善ず䞀臎したのは 98.7% で、それずは別にコヌドが割り蟌んで操䜜した回数が5コヌスで28回ありたした。危険な答えの差し替えず、衝突前の緊急回避。

    2.4 小さく曞いおあるこず

    泚意曞きがないわけではありたせん。ただ、動画や芋出しよりずっず目立たないずころに曞かれおいたす。

    TypeSafeの公匏ブログでは、Doomのデモの「Nuance」ずいう項に以䞋のように曞かれおいたす。

    A non-AI doom bot could play better, but we wanted a bot that was reactive to different representations of game state, and most importantly
 following instructions was cool as heck!

    jev-marioのREADMEにも以䞋のように曞かれおいたす。

    The harness simulates every option and passes the measured outcome, so the only task left is ranking eleven descriptions.

    ぀たり、倧きく芋せおいるのは「知胜」で、小さく曞いおあるのは「AIを䜿わない方が䞊手い」「残っおいる仕事は11個の文の䞊べ替えだけ」ずいうこずです。

    正盎なずころ、これは誇倧広告ず蚀っお良いのではず感じたした。難しい郚分はコヌドが解いおいお、モデルに残っおいるのは曞かれた結果を読んで遞ぶ仕事です。芋せ方が実力を倧きく䞊回っおいるず思いたす。

    2.5 コヌドが結果を曞かないずどうなるか

    では、コヌドが結果を曞かなければどうなるのでしょうか。jev-marioには、結果を曞かずに状態の芁玄だけでJevに操䜜させた蚘録Direct controlもありたす。比范察象は、同じ情報を䜿うif文のルヌルず、「右ダッシュゞャンプ」を抌し続けるだけのコヌドです。1-1でそれぞれがどこたで進んだかを䞊べるず、以䞋のようになりたす。

    画像
    結果を曞かない堎合に、1-1でマリオが進んだ距離jev-marioのREADMEより䜜成

    コヌドが結果を曞かないず、Jevはif文のルヌルにも、ボタンの抌しっぱなしにも劣りたす。

    3. ViZDoomでの怜蚌

    3.1 怜蚌抂芁

    自分でも別のゲヌムで確認しおみたす。䜿ったのはViZDoomのPredict Positionずいうシナリオです。公匏のデモず同じDoom系のゲヌムです。

    • 壁ぎわを動く敵を、ロケット1発で倒す

    • ロケットは届くたでに時間がかかるので、敵の動く先を狙う必芁がある

    モデルに枡すのは、盎近4回分の敵の䜍眮画面䞊のbboxず自分の向きを曞いたJSONず、4぀の遞択肢巊を向く / 右を向く / 撃぀ / 埅぀です。

    Jev`typesafe/jev-1.13`に察しお、以䞋の条件を比范したした。評䟡は詊隓甚の128゚ピ゜ヌドで、確率が最倧の遞択肢を遞ばせおいたす。

    • Jevコヌド補䜐なし状態ず4぀の遞択肢だけを枡す

    • Jevコヌド補䜐ありコヌドが各遞択肢の結果圓たるか倖れるかを先に蚈算しお、遞択肢に曞き蟌んでから枡す

    • Jevコヌド補䜐あり読み方の説明䞊蚘に加えお、曞き蟌みの読み方を指瀺文で説明する

    • コヌドのみJevを䜿わず、「圓たる」ず曞き蟌たれた遞択肢をそのたた遞ぶ

    • ランダム4぀の遞択肢からランダムに遞ぶ

    枬定に䜿ったコヌドはこちらです。🔗

    3.2 結果

    たず、同じ堎面同じシヌドでのJevのプレむです。巊がコヌド補䜐なし、右がコヌド補䜐ありです。蚘録した操䜜を再生したもので、玄1.4倍速。黄色の印は敵の䜍眮で、説明甚に描き足しおいたす。

    画像
    同じ堎面でのJevのプレむ巊コヌド補䜐なし、右コヌド補䜐あり

    モデルに芋えおいる遞択肢は以䞋のように違いたす。右端の数字がJevの返した確率です。

    画像
    Jevに芋えおいる遞択肢ず確率

    128゚ピ゜ヌドでの結果は以䞋のようになりたした。

    画像
    Predict Positionの成功数128゚ピ゜ヌド

    コヌド補䜐なしでは 0/128 で、ランダム12/128より䞋でした。Jevは党刀断の 99% で「撃぀」を遞んでいたす。このゲヌムは開始から撃぀ボタンを抌し続けるず発射されないので、110回は1発も撃おずに時間切れです。発射できた18回もすべお倖れ。

    コヌド補䜐ありだず 112/128、読み方を説明するず 126/128 たで䞊がりたす。ただ、コヌドのみでも 126/128 で、Jevが成功したのはすべおその䞭の゚ピ゜ヌドでした。぀たり、モデルを挟んで増えた成功は1回もありたせん。

    3.3 Snakeでの確認

    ロケットが圓たるかどうかは、ゲヌムの物理を知らないず分からないずいう芋方もできたす。そこで、ルヌルがすべお分かっおいるSnakeで、質問の深さを3段階に分けお聞いおみたした。各200問で、正解は「はい」ず「いいえ」が半々です。🔗

    • 読めば分かる刀断そのマスはヘビの䜓に含たれるか

    • 1手先の予枬その向きに動くずぶ぀からないか

    • 5手先の予枬動いた埌、さらに5手動けるか

    䟋えば、以䞋のような盀面ず質問です。盀面は文章で枡しおいたす。

    画像
    Snakeの盀面ず質問の䟋絵は説明甚

    比范ずしお、LLMDeepSeek-V4-Proにも同じ質問をしおいたす。ReasoningありずReasoningなしの2通りで、プロンプトは同じたた、APIのReasoningの蚭定だけを切り替えたした。

    画像
    Snakeでの質問別の正答率実線Reasoningあり、砎線Reasoningなし

    Jevは、読めば分かる刀断は党問正解ですが、1手先の予枬になるだけで 63.5% に萜ちたす。数行のコヌドなら100%の質問です。

    DeepSeekは、Reasoningありだず1手先で 100%、5手先で 99% ず圓おおきたす。面癜いのは、同じモデルでもReasoningなしにするず、1手先で 51%、5手先で 50.5% ず、ランダム遞択ず倉わらなくなる点です。

    3.4 ここたでのたずめ

    結果から蚀えそうなこずは以䞋の通りです。

    • Decision Modelは、入力に曞いおあるこずを読んで遞ぶのは埗意

    • 遞んだ先に䜕が起きるかは、曞いおもらわないず読めない曞かなければif文やボタン抌しっぱなしに負ける

    • 差を䜜っおいるのは「LLMかどうか」よりReasoningの有無

    2章で芋たデモの䞭身ず合わせるず、やはり珟状のDecision Modelの芋せ方は誇倧広告ず蚀っお良いず感じたした。難しい郚分はコヌドが解いおいお、モデルに残っおいるのは曞かれた結果を読んで遞ぶ仕事です。それは数行のコヌドでもできおしたいたす。

    Decision Modelには考える堎所がないので、遞んだ先のこずは「入力に曞いおもらう」か「重みに芚えさせる」かのどちらかになりたす。デモは前者をコヌドでやっおいたす。では埌者はできないのか、ずいうのを次に詊したす。

    4. Decision ModelをGRPOで匷化孊習する

    LLMの゚ヌゞェントでは、タスクの成吊から孊ぶ匷化孊習GRPOが普通に䜿われるようになっおきたした。同じこずがDecision Modelでもできるはず、ずいうのがここでの考えです。

    ちなみに、Jev自䜓も匷化孊習で孊習したず玹介されおいたす。公匏ブログでは Reinforcement Learning for Calibrated Decisions、RLCDず呌ばれおいたす。ただ、具䜓的なやり方は公開されおいたせん。コミュニティでもRLCDのやり方が色々ず詊されおいたすが、これずいう方法はただ定たっおいない認識です。今回の内容は、こういう匷化孊習のやり方もできる、ずいう1぀の䟋ずしお芋おいただければず思いたす。

    4.1 LLMのGRPOずの察応

    やるこずはLLMのGRPOず同じです。眮き換えは以䞋の2぀だけです。

    • 1぀の行動次のトヌクン → 候補からの遞択今回は4択

    • 1本の軌跡1぀の回答 → 1゚ピ゜ヌド20〜30回の刀断

    報酬ぱピ゜ヌドの最埌に1぀圓たれば1、倖れれば0で、それをその゚ピ゜ヌド䞭のすべおの刀断に配りたす。耇数ステップの刀断をひずたずめにしお、最埌の成吊で党郚を曎新するむメヌゞです。

    画像
    Decision ModelでのGRPOの流れ

    匏で曞くず以䞋の通りです。i は同じシヌドの16回のプレむ、t はその䞭の刀断、r_i はそのプレむの成吊、ε は 0.2 です。元のモデルから離れすぎないためのKLの項は入れおいたせん。

    Ai=ri−mean(r)std(r),ρi,t=πΞ(ai,t∣si,t)πold(ai,t∣si,t)A_i = \frac{r_i - \mathrm{mean}(r)}{\mathrm{std}(r)}, \qquad \rho_{i,t} = \frac{\pi_\theta(a_{i,t} \mid s_{i,t})}{\pi_{\mathrm{old}}(a_{i,t} \mid s_{i,t})}

    L=−1N∑i,tmin⁡(ρi,tAi, clip(ρi,t,1−ε,1+ε),Ai)L = -\frac{1}{N} \sum_{i,t} \min\left( \rho_{i,t} A_i,\ \mathrm{clip}(\rho_{i,t}, 1-\varepsilon, 1+\varepsilon), A_i \right)

    4.2 実装

    実装の䞭心はかなりシンプルです。🔗

    組の䞭での盞察評䟡

    def group_advantages(rewards):       # 同じシヌドの16回分の成吊1 か 0
        if min(rewards) == max(rewards):
            return None                  # 党郚圓たり・党郚倖れの組は孊習に䜿えない
        mean, std = statistics.mean(rewards), statistics.pstdev(rewards)
        return [(r - mean) / (std + 1e-8) for r in rewards]

    損倱PPOず同じ切り詰め

    def clipped_loss(new_logp, old_logp, advantages, clip=0.2):
        ratio = (new_logp - old_logp).exp()   # 刀断ごずの確率の比
        return -torch.minimum(ratio * advantages,
                              ratio.clamp(1 - clip, 1 + clip) * advantages)

    Decision Modelは遞択肢ごずに「状態質問遞択肢」を蚈算するので、そのたただず孊習がかなり重いです。そこで、状態ず質問は1回だけ蚈算し、遞択肢がその前半を共有するようにしたした。1刀断あたり玄1,950トヌクンが玄530トヌクンになりたす。🔗

    4.3 怜蚌抂芁

    JevはAPIでしか䜿えないので、同じ型の公開モデル NanoJevQwen3-0.6Bに刀断甚のヘッドを付けたもので詊したした。公開の重みはPredict Positionを128回䞭27回しか解けたせん。入力は3章の「コヌド補䜐なし」ず同じです。

    比范したのは以䞋の通りです。

    • SFTこのゲヌムを匷化孊習枈みの別モデルを手本にしお、その操䜜を正解ずしお孊習512゚ピ゜ヌド分、6,788個の刀断

    • GRPO手本なし。同じ512個のシヌドで自分にプレむさせ、圓たったかどうかだけで孊習1ステップは16シヌド×16回256゚ピ゜ヌド

    • SFT → GRPOSFTが頭打ちになった重みから、GRPOを続けるGRPO単䜓ずは条件が違い、別のシヌド1,600個を䜿っおいたす

    評䟡は、公開されおいる詊隓甚128゚ピ゜ヌドず、孊習に䜿っおいない512シヌドの蚈640゚ピ゜ヌドです。実行環境はA10040GB1枚です。

    4.4 結果

    孊習䞭の成功率は以䞋のようになりたした。孊習に䜿っおいない512シヌド、確率最倧の遞択肢を遞ぶ評䟡。

    画像
    孊習䞭の成功率の掚移巊SFT、右GRPO

    たず目に぀くのが、SFTは400回の曎新で頭打ちになる点です。そこから800回続けおも䌞びたせんでした。

    䞀方で、GRPOは同じ出発点・同じシヌドから、手本なしでSFTを越えたした。640゚ピ゜ヌドでの成功率は、孊習前 19.4%、SFT 68.6%、GRPO 79.1% です。SFTだけが成功した゚ピ゜ヌドは72、GRPOだけが成功した゚ピ゜ヌドは139でした。笊号怜定で p < 0.00001

    さらに、SFTの頭打ちからGRPOを続けるず 81.4% たで䌞びたした。手本の真䌌で止たったずころから、成吊の孊習でもう䞀段䞊がるずいうこずだず思いたす。

    同じ堎面での3぀のモデルのプレむです。孊習前ずSFTはすぐに撃っお倖し、GRPOは埅っおから撃っお圓おおいたす。詊隓甚128゚ピ゜ヌドのうち、SFTが倖しおGRPOが圓おたのは36回、その逆は11回。ここではその36回から遞んでいたす。

    画像
    同じ堎面での3぀のモデルのプレむ巊から孊習前、SFT、GRPO

    4.5 わかっおいる匱点

    良い結果ばかりではなかったので、匱点もたずめおおきたす。

    画像
    結果衚成功率は640゚ピ゜ヌド。刻みを2倍・Basicは128゚ピ゜ヌド䞭の成功数
    • 芚えるのは、孊習した条件に合う戊い方GRPOは「埅っおから撃぀」戊い方を芚えたした。1回の刀断で進む時間を2倍にするず、128回䞭75回は1発も撃たないたた時間切れになりたす。撃おた回の呜䞭率は 64% で、SFTの 45% より高い。別のゲヌムBasicでも、倱敗した21回はすべお時間切れでした。

    • 孊習が䞍安定GRPOの20ステップ目あたりで、確率最倧の遞択肢を遞ぶ評䟡だけが䞀時的に厩れたした。

    5. たずめ

    今回は、Decision Modelに盀面先の予枬は可胜なのか、そしおLLMず同じようにGRPOで匷化孊習しお身に぀けさせられるのではないか、ずいう2点を詊しおきたした。結果は以䞋のような感じでした。

    • 公開デモは、遞んだ先に䜕が起きるかをコヌドが蚈算しお入力に曞いおいる。モデルが遞択しおいる意味がなくかなりの誇倧広告。

    • ViZDoomでは、Jevはコヌド補䜐なしだず 0/128。コヌド補䜐ありだず 126/128 だが、コヌドのみでも同じ 126/128。

    • Decision Modelでも、耇数ステップを1゚ピ゜ヌドにたずめたGRPOは普通に動く。手本なしで成功率は 19% → 79% ずなり、SFT69%を越えた。

    • ただし、芚えるのは孊習した条件に合う戊い方で、条件を倉えるず厩れる。

    コヌドが蚈算しお入力に曞いおいるのであれば、そのデモが瀺しおいるのはコヌドの力です。Decision Modelが埗意なのは、曞いおあるこずを読んで速く遞ぶずころだず思いたす。

    䞀方で、先読みが必芁であればGRPOで重みに芚えさせるずいう道があるこずも確認できたした。個人的には、デモのようなコヌドを厚くしおいくよりも、こちらの方に可胜性があるのではず考えおいたす。

    たた、今回瀺したような匷化孊習は、今回のようなデモだけでなく、より倚様な堎面で有効に䜿えるず考えおいたす。䟋えばPhysical AIやComputer Use、Browser Useなど、1ステップでは正解を決められないタスクでは、こうしたアプロヌチは有甚なはずです。少なくずも手元では、Browser UseでもGRPOが有効なこずは確認しおいたす。

    議論や感想があればNoteやX(Twitter)でコメント・ご教瀺いただけるず助かりたす。
    X: https://twitter.com/CurveWeb

    目を通しおいただきありがずうございたした。

    怜蚌に䜿ったコヌドは以䞋に栌玍しおありたす。よければご参照ください。NanoJevをもずにした非公匏の拡匵です。孊習・評䟡のコマンドはREADMEにありたす。なお、実装・分析・䞋曞きの倚くにはClaude Codeを䜿っおいたす。誀りを芋぀けた堎合は教えおいただければ修正したす。

    参照


     
     

    はち

     
     
    倖資系IT䌁業勀務。最近はLLMにハマっおたす。

    あなたぞのおすすめ