RL-05-07-结构-策略输出

← 上级:RL-05.专属数据结构 · 实现:RL-04-05-PPO实现

策略网络输出形态决定 采样、log_prob 与 Buffer 字段。本文统一离散/连续约定。


一、离散动作(Categorical)

1
2
3
4
5
logits = actor(obs)                    # (B, n_actions)
dist = Categorical(logits=logits)
action = dist.sample()
log_prob = dist.log_prob(action)
entropy = dist.entropy()

PPO 存 old_log_prob 算 ratio $\exp(\log\pi_{new} - \log\pi_{old})$。


二、连续动作(Gaussian)

1
2
3
4
5
6
mean = actor_mean(obs)
log_std = actor_log_std # 可学习参数或网络输出
std = log_std.exp()
dist = Normal(mean, std)
action_raw = dist.sample()
action = torch.tanh(action_raw) # 有界时

tanh squash 需 Jacobian 修正 log_prob(SAC 标准做法)。


三、确定性策略(DDPG)

1
2
3
action = actor(obs)  # 直接向量
# 探索: action + noise
action = (action + noise).clamp(env_low, env_high)

Critic 输入 $(s, a)$;Replay 存连续 action 向量。


四、Buffer 字段对照

算法 必存
PPO obs, action, log_prob, reward, done, value
SAC obs, action, reward, next_obs, done
DDPG 同 SAC

五、小结

  • 离散:logits → Categorical;连续:mean/std → Normal (+ tanh)
  • RL-05 数据结构子篇完结 → RL-06 评估子篇
-------------本文结束感谢您的阅读-------------