算法概念

思路:策略学习 对 $Q_\pi (s_t,a_t)$ 的计算是用一次回合后得到的 $U$ 进行近似。同样对于 $Q_\pi (s_t,a_t)$ 也可以再建立一个神经网络进行拟合。

策略网络 $\pi (a|s;\theta)$ : 用于对策略函数的近似,即Actor,控制角色的动作

价值网络 $q (s,a;w)$ : 用于对价值函数的近似,即Critic,对角色动作进行打分

总目标: 使得最终的状态价值函数的值最大,$V(s;\theta,w) = \sum\limits_a \pi (a|s;\theta) q (s,a;w)$

网络模型

策略网络:

  1. 特征输入给「权连接层」进行 $\pi(a|s)$ 拟合
  2. 将「权连接层」的输出通过softmax层转化为概率
  3. 输出每个动作在当前状态下产生好结果的概率

价值网络

  1. 一张游戏画面当作一个「状态」,状态通过「卷积层」实现特征提取
  2. 要评价的一个「动作」通过权连接层进行特征提取
  3. 将「状态」与「动作」特征进行组合,最后输入一个权连接层,得到「评分」

网络训练

目标:

  • 策略网络: 价值函数 $V(s)$ 的值最大化
  • 价值网络: 对动作的打分 $q(s,a)$ 更接近真实值

参数更新:

  1. 根据 $\pi(a|s;\theta)$ 得到动作 $a_t$
  2. 角色执行动作 $a_t$,然后获取状态 $s_{t+1}$ 与奖励 $r_t$
  3. 根据TD算法更新系数 $w$
  4. 根据策略梯度算法更新系数 $\theta$

系数 $w$ 更新: 5. 计算 $q(s_t,a_t;w_t)$ 6. 根据状态 $s_{t+1}$,通过 $\pi(a|s;\theta)$ 预测动作 $a_t$ ,然后计算 $q(s_{t+1},a_{t+1};w_t)$ 7. 计算TD目标:$y_t = r_t + \gamma q(s_{t+1},a_{t+1};w_t)$ 8. 损失函数:$L(w) = \frac{1}{2} [q(s_t,a_t;w_t) - y_t]^2$ 9. 更新参数:$w_{t+1} = w_{t} - \alpha \frac{\partial L(w)}{\partial w}$

系数 $\theta$ 更新: 10. 根据策略函数 $\pi (a|s_t;\theta_t)$ 随机获取动作 $\hat a$ 11. 带入 $\hat a$ 计算:$g(\hat a,\theta_t) = \frac{\partial \ln \pi(\hat a|s;\theta_t)}{\partial \theta} q (s_t,\hat a;w)$ 12. 然后通过 $g(\hat a,\theta_t)$ 来近似计算:$\frac{\partial V(s;\theta_t)}{\partial \theta_t} =E_A[g(A,\theta_t)] $ 13. 更新参数:$\theta_{t+1} = \theta_t + \beta g(a,\theta_t)$

License

Author: 海拉鲁的三角

Link: http://localhost:1313/artificial_intelligence/posts/reinforcementlearning/actor_critic/

License: MIT

只要学不死,就往死里学