1. AC定义
Actor-Critic算法中包含两个神经网络,它们共享相同的输入状态S:
- 一个网络负责生成策略,即决定在给定状态下应该采取哪个动作,这个网络被称为Actor;
- 另一个网络则评估每个可能动作的预期回报,为动作打分,这个网络称为Critic。
通过这种方式,Actor-Critic算法能够同时优化策略选择和价值评估,实现更高效的学习过程。
2.TD-error的引入
在Actor-Critic(AC)算法中,Critic网络负责估计状态值函数 ( V(s) ),而非动作价值函数 ( Q(s, a) )。使用网络直接估计 ( Q ) 值作为更新依据可能导致更新效果不佳。
假设Critic网络预测在状态 ( S ) 下,三个动作 ( A_1, A_2, A_3 ) 的 ( Q ) 值分别为1, 2, 10。初始采用均匀策略,随机选择了动作 ( A_1 ),随后使用策略梯度方法,以 ( Q ) 值为权重更新策略。这可能导致策略更新偏向于选择当前估计值较高的动作,陷入正数陷阱。
3.解决策略
- 减去基线:通过减去基线(通常是状态值 ( V(s) ))来调整权重,使得权重具有正负之分。
- 更新权重公式:( Q(s, a) - V(s) )。
4.TD-error公式
根据贝尔曼方程,我们得到时间差分误差(TD-error)的公式:
[ \text{TD-error} = \gamma V(s') + r - V(s) ]
5.算法流程
- 定义网络:定义两个网络:Actor和Critic。
- 迭代更新:进行 ( N ) 次迭代更新。
- 执行动作:从状态 ( s ) 开始,执行动作 ( a ),获得奖励 ( r ),进入新状态 ( s' )。
- 计算TD-error:将 ( s, r, s' ) 输入Critic,计算TD-error。
- 更新Critic和Actor:利用TD-error更新Critic的损失,并使用TD-error更新Actor的策略分布。
通过理解TD-error,我们可以将Actor和Critic的更新过程有效地结合起来,实现更高效的强化学习算法。