一個全然不同的框架
目前為止的一切,都是在貝爾曼這套機制內部對抗分佈偏移。序列建模的觀點則繞過它:忘掉價值迭代,把一條軌跡看成*一串符元(token)*,訓練一個 Transformer 去預測下一個動作——就像語言模型預測下一個字一樣。這裡沒有 `max`,所以也沒有高估可怕。離線強化學習於是變成在已記錄序列上的單純監督式學習(supervised learning)。
词元化示意图:将序列切分为词元,映射到词元 id,再变成嵌入向量。
Decision Transformer
代表方法是 Decision Transformer。它的關鍵動作是:餵給模型的不只是狀態與動作,還有*剩餘回報(return-to-go)——從每一步往後算的未來總獎勵。模型學到的關聯是:「若從這個狀態起前方還有這麼多獎勵,那當初記錄下來的動作就是這個*。」測試時,你只要把剩餘回報設成你想要的高數值、交給它目前的狀態、然後讀出動作即可。你是在「下令」要某種結果,而不是去最佳化它。
剩余回报(return-to-go):决策 Transformer 所条件化的、从第 t 步起的未来总奖励。
# Decision Transformer: trajectory as a token sequence, in time order # R_1, s_1, a_1, R_2, s_2, a_2, ... where R_t = return-to-go at step t # # Train like a language model: predict each action token from everything before it. # (cross-entropy for discrete actions, MSE for continuous ones) # # At deployment, you CONDITION on the return you want: # set R_1 = target_return # "I want this much reward" # feed (R_1, s_1) -> model -> a_1 # act, observe r_1, s_2; set R_2 = R_1 - r_1; repeat
Trajectory Transformer 與回報條件化
它的近親 Trajectory Transformer 走得更遠,直接建模整條軌跡——把狀態、動作、獎勵全部離散化成符元——再透過對「高回報延續」做束搜尋(beam search)來規劃,把序列建模與自迴歸(autoregressive)規劃融合在一起。兩者都屬於更廣的回報條件化策略(return-conditioned policies)家族:它們學的不是哪個動作最好,而是哪個動作會導向哪種回報,讓你在執行時自己撥動目標回報。
自回归生成循环:将每个预测的词元作为下一步的输入反馈回去。
誠實面對其侷限
這個框架很優雅,但不是魔法。由於它本質上是以條件為前提的模仿——比起動態規劃,更接近加權的行為複製——它在拼接上會吃力:若沒有任何單一軌跡曾達到高回報,你硬去要一個高回報,可能得到前後不連貫的動作。像 IQL/CQL 這類以價值為基礎的方法,原則上能把許多平庸軌跡裡的好片段組合起來;而純粹的回報條件化往往做不到。
有监督学习、无监督学习与强化学习三种范式的对比。