GiGPO
训练流程:
-
采样(Sampling):
针对同一个任务,让模型一口气跑 条完整的轨迹(Trajectory)。每一条轨迹包含很多步(Step 1, Step 2, … Step T)。
-
寻找锚点(Anchor State Identification):
系统会扫描这 条轨迹,寻找它们之间重合的状态。
- 例子: 轨迹 A 在第 3 步到了”厨房”,轨迹 B 在第 5 步也到了”厨房”。那么”厨房”就是一个锚点状态。
-
构建小组(Sub-Group Construction):
把所有经过”厨房”时的动作拎出来,组成一个”小组”。
-
计算双层优势(Dual-Level Advantage):
分别计算”宏观优势”和”微观优势”(下面详细讲)。
-
更新策略:
综合两个层面的优势,更新模型参数。
微观优势 Step-level Advantage
1. 第一步:归类(The “Hash” Grouping)
-
遍历数据库。你用**状态(State)作为
Key(即公式里的 ),建立了一个巨大的 Hash Map。Value则是该条轨迹(Trajectory)**的最终reward。所以该Hash Map的意义是,在所有可能的状态下,选择不同的动作会收获的最终奖励是多少。 -
操作: 算法把之前 次尝试中,所有经过**“同一个路口”**(同一状态)的时刻都抓取出来,放到一个篮子里。
重点: “完全离线,无额外 LLM forward”。这意味着这一步纯粹是查表和数学计算,不需要运行庞大的 AI 模型,计算成本极低。
2. 第二步:计算”这一步的真实价值”(Discounted Reward)
当前的奖励等于最终奖励乘上一个折扣系数,相当于 。
细节:
-
:把从现在到游戏结束所有的奖励加起来。但是由于数据集中只有最后一步有奖励,所以这里的 是为了通用型写的。实际的奖励值是[0,0,0,0,50],离最终步骤越远,现在获得的奖励越小。
-
(Gamma 折扣因子):未来的奖励不如现在的奖励,因为越远越不确定。越远的奖励,打折越狠。这不仅能防止数值爆炸,也让模型更关注近期的反馈。
3. 第三步:计算”步级优势”(Step-level Advantage)
原文公式:
目的:归一化/Z-Score
-
分子:
-
你的这次长远收益,减去这个篮子里所有尝试的平均收益。
-
如果结果是正的,说明你在同样的情况下,比平均水平表现好。
-
-
分母:
- 通常是标准差(Standard Deviation)。用来消除量纲影响,衡量你比平均水平好出多少个”段位”。
4. 第四步:Reward融合
扩展
需不需要考虑序列关系吗?比如说回到同一个房间有可能是因为要完成某些动作回到房间A才是对的,没有完成这些动作回到房间A则无意义,但按照原文的思路,虽然前面动作也是回到房间A,后面动作也是回到房间A,最终奖励是1,这岂不是分配给后一个动作的奖励会更大?但其实后面那个回到房间A的价值不如前面一个
像web seach这种,可能action是一样的,但是入参有略微不同(比如search的query差一两个字)
用文本相似度解决
dd