## Training Objective(GRPO / PPO-style)與 Online 訓練流程(中文)
下面用「逐行拆解 + 怎麼做 online training」把圖中的 **Training Objective** 解釋清楚。這段的核心是:用改造版 **GRPO**(類 PPO 的 clipped objective)在 VLA 上做 **online RL**,並且**移除 KL regularization(不用 reference model)**,再搭配 Dynamic Sampling / higher clipping / higher rollout temperature。
---
### A) 一句話總結這段在做什麼?
對每個指令/初始狀態 \(s_0\),用「舊策略」\(\pi_{\text{old}}\) 采樣出一組 \(G\) 條軌跡(group rollouts),用每條軌跡的 reward 算出組內標準化 advantage \(\hat A_i\),然後用 PPO-style 的 clipped objective 更新新策略 \(\pi_\theta\)。
---
### B) 逐行讀懂 Eq.(11) 與 Eq.(12)
#### 1) 外層期望:資料從哪來?
\[
\mathcal{J}(\theta)
=
\mathbb{E}_{s_0\sim \mathcal{D},\ \{a_t\}_{i=1}^G \sim \pi_{\theta_{\text{old}}}(\cdot|s_t)}
\Big[ \cdots \Big]
\]
直覺:
- 從資料分佈 \(\mathcal{D}\) 抽任務起點 \(s_0\)(在 VLA/LLM-RL 可理解為 prompt / instruction + 初始觀測)
- 用「舊策略」\(\pi_{\text{old}}\) 跑 rollout,產生一組 \(G\) 條軌跡
> \(\mathcal{D}\) 可以是:任務指令集合、起始場景分佈、或目前訓練任務池。
---
#### 2) Group 平均 + 時間平均(兩個 sum 的意義)
\[
\frac{1}{G}\sum_{i=1}^{G}\ \frac{1}{|a_i|}\sum_{t=1}^{|a_i|}
(\cdots)
\]
- \(i\):第 \(i\) 條軌跡(同一個 prompt 下采樣到的第 i 個輸出/動作序列)
- \(t\):該軌跡內的時間步(或 token step)
- \(|a_i|\):第 i 條軌跡的長度
=> 先做「每條軌跡內的平均」,再做「同組多條軌跡的平均」。
---
#### 3) 核心 PPO/GRPO:min(原始提升, clip後提升)
\[
\min\Big(
r_{i,t}(\theta)\hat A_i,\
\text{clip}(r_{i,t}(\theta),1-\epsilon_{\text{low}},1+\epsilon_{\text{high}})\hat A_i
\Big)
\]
直覺:
- 若第 i 條軌跡 advantage 為正(相對同組更好),就想提高它的動作機率
- 但一次不能改太大,所以用 clip 限制更新幅度
- `min()` 的作用:如果 ratio 太誇張,改用 clip 後較保守的值,避免崩掉
---
#### 4) Eq.(12) 的兩個定義:ratio 與 group-relative advantage
**(a) PPO ratio**
\[
r_{i,t}(\theta)=
\frac{\pi_\theta(a_{i,t}\mid s_{i,t})}{\pi_{\theta_{\text{old}}}(a_{i,t}\mid s_{i,t})}
\]
- rollout 時用的是 \(\pi_{\text{old}}\) 產生動作 \(a_{i,t}\)
- update 時用新策略 \(\pi_\theta\) 重算「新策略現在給這個動作多少機率」
- ratio > 1:新策略更偏好該動作;ratio < 1:更不偏好
實作常用 log-prob 避免 underflow:
\[
r=\exp(\log\pi_\theta-\log\pi_{\text{old}})
\]
**(b) GRPO advantage(組內標準化)**
\[
\hat A_i =
\frac{R_i-\text{mean}(\{R_i\}_{i=1}^{G})}{\text{std}(\{R_i\}_{i=1}^{G})}
\]
- \(R_i\):第 i 條軌跡的總 reward(例如成功=1失敗=0,或更細的分數)
- 同一 prompt 的 group 內做標準化
=> 得到「相對於同組其他樣本」的優勢訊號
為什麼這樣做?
- 不需要 critic(critic-free)
- reward 變成相對排名/對比訊號
缺點:若同組 reward 全相同 => std≈0 或 advantage≈0 => 沒梯度
所以需要 Dynamic Sampling 的限制。
---
#### 5) s.t. 那行(Dynamic Sampling 的形式化)
\[
0 < \big|\{\text{successful trajectories in group}\}\big| < G
\]
意思:同組裡成功數量不能是 0,也不能是 \(G\)。
=> 必須混合成功與失敗,確保 advantage 不全為 0。
---
### C) 為什麼「移除 KL regularization」?
很多 RLHF/LLM-RL 會加:
\[
-\beta\,D_{\mathrm{KL}}(\pi_\theta \,\|\, \pi_{\text{ref}})
\]
需要 reference model \(\pi_{\text{ref}}\)(通常是 SFT 模型)。
這裡照 DAPO 的做法拿掉 KL penalty:
- 優點:不用 reference model => 省顯存、加速
- 代價:可能更容易發散
- 因此用其他機制保穩:clipping(且上界更高)+ dynamic sampling + higher temperature
---
### D) 什麼叫 online training?怎麼做(清楚步驟)
在這裡 **online** 的意思是:每次更新前都用「當前/最新策略」重新 rollout 收集新資料,資料分佈會跟著策略變動。
#### Online GRPO/PPO 訓練流程(protocol / pseudo-steps)
**Step 0:初始化**
- 初始策略 \(\pi_{\theta_0}\)(通常是 SFT / pretrain VLA)
- 設定 group size \(G\)、clipping \([1-\epsilon_{low},1+\epsilon_{high}]\)、rollout temperature \(T\)
**Step 1:Rollout(收集當前策略資料)**
對每個訓練起點/指令 \(s_0 \sim \mathcal D\):
1. 用 \(\pi_{\text{old}}\) 以溫度 \(T\) 采樣 \(G\) 條軌跡
2. 對每條軌跡得到:
- 行動序列 \(a_{i,1:|a_i|}\)
- 每步 logprob:\(\log\pi_{\text{old}}(a_{i,t}|s_{i,t})\)(PPO ratio 需要)
- 軌跡回報 \(R_i\)(成功/失敗或 reward model 打分)
**Step 2:Dynamic Sampling 過濾**
- 若某 group 全成功或全失敗 => 丟掉重抽
- 保留 outcomes 混合的 group
**Step 3:算 advantage(組內標準化)**
\[
\hat A_i=\frac{R_i-\mu_R}{\sigma_R}
\]
**Step 4:Policy Update(多個 epoch / minibatch)**
對收集到的 \((s,a,\log p_{old},\hat A)\):
1. 算 \(\log\pi_\theta(a_{i,t}|s_{i,t})\)
2. 算 ratio:\(r_{i,t}=\exp(\log p-\log p_{old})\)
3. 算 clipped surrogate loss(Eq.11 的 min/clip)
4. 用 Adam 更新 \(\theta\)(通常做 K 個 epoch)
**Step 5:同步**
- 更新完後,設 \(\pi_{\text{old}} \leftarrow \pi_\theta\)
- 回到 Step 1,繼續收集新 rollouts
> 這個「rollout → update → rollout → update」循環,就是 online RL 的本質。
---
### E) 放回 VLA(機器人)語境如何理解?
- \(s_t\):影像 + proprioception + 任務語言(或 state)
- \(a_t\):TCP/joint delta、gripper 指令(或 tokenized action)
- \(R_i\):成功/失敗(稀疏),或加上分段 reward(stage-aware)
- group:同一初始場景與指令下,采樣多條動作序列做相對比較學習