11 trpo算法
- 对 AC 做了非常多优化
- 【策略目标】
- 修改成新策略 $pi_(theta^prime)$ 下的形式
- 并做近似
- 近似过程要求 $theta^prime$ 和 $theta$ 不能差太多,故 KL 散度约束到 $delta$ 之内.
- 【近似求解】
- 对目标函数 1 阶近似,带 $g$,KL 约束 2 阶近似,带海森矩阵 $H$.
- 可直接用 KKT 导出问题的解 $theta_(k + 1)$.
- 【共轭梯度】
- 直接假设每一步 KL 散度都更新到 $delta$,可简化 KKT 解
- 直接用共轭梯度法解算 $H x = g$
- 【线性搜索】
- 由于多处近似,解可能不满足 KL 散度约束
- 取 $(0, 1)$ 之间的超参数 $alpha$,求最小非负整数 $i$ 使得 $alpha^i$ 倍变化量满足 KL 散度限制.
- 【广义优势估计】
- 上面还没估计优势函数 [?]
- 设时序差分误差 $delta_t = r_t + gamma V(s_(t + 1)) - V(s_t)$
- 令 $A_t^((k)) = sum_(l = 0)^(k - 1) gamma^l delta_(t + l)$
- 对 $A$ 进行指数加权平均.
代码实践
- 如果动作时连续的,策略网络可输出动作高斯分布的均值和标准差,形同:
mu, std = self.actor(states)
old_action_dists = torch.distributions.Normal(mu.detach(),
std.detach())
old_log_probs = old_action_dists.log_prob(actions)
critic_loss = torch.mean(
F.mse_loss(self.critic(states), td_target.detach()))
self.critic_optimizer.zero_grad()
critic_loss.backward()