searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Actor-Critic原理

2024-06-27 10:19:09
2
0

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.解决策略

  1. 减去基线:通过减去基线(通常是状态值 ( V(s) ))来调整权重,使得权重具有正负之分。
  2. 更新权重公式:( Q(s, a) - V(s) )。

4.TD-error公式

根据贝尔曼方程,我们得到时间差分误差(TD-error)的公式:

[ \text{TD-error} = \gamma V(s') + r - V(s) ]

5.算法流程

  1. 定义网络:定义两个网络:Actor和Critic。
  2. 迭代更新:进行 ( N ) 次迭代更新。
  3. 执行动作:从状态 ( s ) 开始,执行动作 ( a ),获得奖励 ( r ),进入新状态 ( s' )。
  4. 计算TD-error:将 ( s, r, s' ) 输入Critic,计算TD-error。
  5. 更新Critic和Actor:利用TD-error更新Critic的损失,并使用TD-error更新Actor的策略分布。

通过理解TD-error,我们可以将Actor和Critic的更新过程有效地结合起来,实现更高效的强化学习算法。

0条评论
0 / 1000
赵****斌
4文章数
0粉丝数
赵****斌
4 文章 | 0 粉丝