- 对 AC 做了非常多优化
- 【策略目标】
- 修改成新策略 下的形式
- 并做近似
- 近似过程要求 和 不能差太多,故 KL 散度约束到 之内.
- 【近似求解】
- 对目标函数 1 阶近似,带 ,KL 约束 2 阶近似,带海森矩阵 .
- 可直接用 KKT 导出问题的解 .
- 【共轭梯度】
- 直接假设每一步 KL 散度都更新到 ,可简化 KKT 解
- 直接用共轭梯度法解算
- 【线性搜索】
- 由于多处近似,解可能不满足 KL 散度约束
- 取 之间的超参数 ,求最小非负整数 使得 倍变化量满足 KL 散度限制.
- 【广义优势估计】
- 上面还没估计优势函数 [?]
- 设时序差分误差
- 令
- 对 进行指数加权平均.
代码实践
- 如果动作时连续的,策略网络可输出动作高斯分布的均值和标准差,形同:
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()