强化学习—Actor-Critic方法


Actor-Critic方法 是强化学习中的一种重要算法,它结合了策略梯度方 Actor 和价值函数估计 Critic 的优点,提供了一种高效的策略学习方式。Actor-Critic方法通过同时更新策略和价值函数,能够在连续或高维动作空间中稳定地学习最优策略。

Actor-Critic方法

Actor-Critic方法的基本原理

Actor-Critic方法的核心思想是将策略的更新(由Actor完成)和状态价值或动作价值的评估(由Critic完成)分开处理。这种方法既保持了策略梯度方法的灵活性,又利用了价值函数估计的高效性。

  1. Actor(行为者)

    • Actor 负责直接生成策略,它根据当前的状态 s 选择一个动作 a 。

    • 策略函数
      π ( a ∣ s ; θ ) 通常由一个神经网络表示,参数为 θ 。 \pi(a \mid s; \theta) 通常由一个神经网络表示,参数为 \theta 。 π(as;θ)通常由一个神经网络表示,参数为θ
      Actor的目标是最大化策略的预期回报。

  2. Critic(评论者)

    • Critic 评估 Actor 选择的动作好坏,
      通常通过估计状态价值函数 V ( s ; w ) 或动作价值函数 Q ( s , a ; w ) ,其中 w 是 C r i t i c 的参数。 通常通过估计状态价值函数 V(s; w) 或动作价值函数 Q(s, a; w),其中 w 是Critic的参数。 通常通过估计状态价值函数V(s;w)或动作价值函数Q(s,a;w),其中wCritic的参数。

    • Critic计算时序差分误差(TD误差)来衡量当前策略的优劣,并反馈给Actor进行策略更新。

Actor-Critic方法的工作流程

  1. 动作选择

    • A c t o r 根据当前策略 π ( a ∣ s ; θ ) 从状态 s 中选择一个动作 a 。 Actor根据当前策略 \pi(a \mid s; \theta) 从状态 s 中选择一个动作 a 。 Actor根据当前策略π(as;θ)从状态s中选择一个动作a
  2. 环境交互

    • 智能体执行动作 a ,并从环境中接收即时奖励 r 和下一个状态 s’ 。
  3. Critic更新

    • Critic使用TD误差更新其价值函数。对于状态价值函数,TD误差为:
      δ t = r t + 1 + γ V ( s t + 1 ; w ) − V ( s t ; w ) \delta_t = r_{t+1} + \gamma V(s_{t+1}; w) - V(s_t; w) δt=rt+1+γV(st+1;w)V(st;w)
      Critic的更新公式为:
      w ← w + α δ t ∇ w V ( s t ; w ) w \leftarrow w + \alpha \delta_t \nabla_w V(s_t; w) ww+αδtwV(st;w)
      Actor更新

    • Actor根据Critic提供的反馈更新策略。Actor的梯度更新方向为:
      ∇ θ J ( θ ) = E [ δ t ∇ θ log ⁡ π ( a t ∣ s t ; θ ) ] \nabla_\theta J(\theta) = \mathbb{E} \left[ \delta_t \nabla_\theta \log \pi(a_t \mid s_t; \theta) \right] θJ(θ)=E[δtθlogπ(atst;θ)]
      Actor的更新公式为:
      θ ← θ + β δ t ∇ θ log ⁡ π ( a t ∣ s t ; θ ) 其中 β 是 A c t o r 的学习率。 \theta \leftarrow \theta + \beta \delta_t \nabla_\theta \log \pi(a_t \mid s_t; \theta) \\ 其中 \beta 是Actor的学习率。 θθ+βδtθlogπ(atst;θ)其中βActor的学习率。

  4. 循环迭代

    • 以上过程不断循环迭代,直到策略收敛或达到指定的训练目标。

Actor-Critic方法的变种

由于Actor-Critic方法在实践中表现优异,许多改进的变种被提出,以提高其稳定性和学习效率:

  1. 优势行为者-评论家(Advantage Actor-Critic, A2C)

    • A2C是对Actor-Critic的一种改进,使用优势函数 A(s, a) = Q(s, a) - V(s) 代替TD误差,从而减少方差,提升学习效果。
  2. 异步优势行为者-评论家(Asynchronous Advantage Actor-Critic, A3C)

    • A3C是A2C的异步版本,它通过多个异步并行的智能体同时与环境交互,并更新共享的全局网络参数,以加快收敛速度和增强稳定性。
  3. 深度确定性策略梯度(Deep Deterministic Policy Gradient, DDPG)

    • DDPG是用于连续动作空间的Actor-Critic变种,结合了DQN的思想。DDPG中的Actor生成确定性策略,Critic评估Q值,并且使用经验回放和目标网络来稳定训练过程。
  4. 近端策略优化(Proximal Policy Optimization, PPO)

    • PPO引入了一个“剪切”损失函数,限制策略更新的步长,避免了过大的更新带来的不稳定性。PPO可以看作是Actor-Critic方法的一种改进。

Actor-Critic方法的应用

Actor-Critic方法由于其灵活性和效率,广泛应用于以下领域:

  • 机器人控制:帮助机器人在连续状态和动作空间中进行路径规划和任务执行。
  • 自动驾驶:通过实时调整策略,优化车辆在复杂交通环境中的驾驶行为。
  • 游戏AI:训练游戏中的智能体,使其能够在动态环境中做出最佳决策。
  • 金融交易:在不确定的市场条件下进行动态投资决策,以实现最大化收益。

总结

Actor-Critic方法是强化学习中的一个重要算法,通过结合策略梯度和价值函数估计的优点,能够在高维和连续动作空间中有效学习和优化策略。通过不断的发展和改进,Actor-Critic方法已经成为处理复杂强化学习问题的强大工具。

笔记

Actor-Critic方法是结合价值学习和策略学习。

策略网络是让智能体作出动作,价值网络是评估动作的好坏,从而让智能体能够决策出更好的动作,环境给的奖励也会促使价值函数评价打分能力越来越精确。价值网络是辅助策略网络学习的,网络训练好之后,价值网络就不需要了。

在这里插入图片描述

状态价值函数= 期望(策略函数 * 动作价值函数)

​ 是动作价值函数的期望。离散动作用连加,连续动作用定积分。策略函数用来控制动作,动作价值函数用来给动作打分。

​ 使用策略网络来近似策略函数,策略网络来决定动作(运动员);使用价值网络来近似动作价值函数,给动作打分(裁判)。

在这里插入图片描述

策略网络

输入是当前状态St;输出是动作的概率(策略函数是概率密度函数,所以网络输出的结果也要复合分布规律,使用SoftMax,是的结果概率和为1)。

conv:用来提取特征->dense:全连接层用来映射结果->SoftMax

在这里插入图片描述

价值网络

输入是:当前状态和动作(onehot格式的动作,例如:001, 010,011)

输出是:分数

conv/dense1:提取特征->concate->dense2:映射结果->action score

在这里插入图片描述

训练网络

5个步骤:

  • 观测当前状态St
  • 使用当前状态St作为输入用策略网络来计算出动作的概率分布,随机抽样选择动作at
  • agent执行动作at并且观测环境产生的新的状态St+1和奖励Rt
  • 使用TD根据环境给的奖励Rt计算Loss,更新价值网络参数w
  • 使用策略梯度算法更新策略网络的参数θ

在这里插入图片描述

在这里插入图片描述

更新价值网络参数

​ 使用TD算法

  • 使用价值网络q来给动作at和at+1打分;动作是根据策略网络pi随机抽样得到的。
    q ( s t , a t ; w t ) q ( s t + 1 , a t + 1 ; w t ) q(s_{t}, a_{t}; w_{t}) \\ q(s_{t+1}, a_{t+1}; w_{t}) q(st,at;wt)q(st+1,at+1;wt)

  • 计算TD target:
    y t = r t + γ ∗ q ( s t + 1 , a t + 1 ; w t ) r t : 奖励 γ : 折扣率,让未来的奖励没有当前奖励的权重高 y t 和 q ( s t , a t ; w t ) 都是对未来奖励总和的估计,但是 y t 更加准确一些(一部分是真实奖励估计的一部分) y_{t} = r_{t} + \gamma * q(s_{t+1}, a_{t+1}; w_{t}) \\ r_{t}: 奖励 \\ \gamma:折扣率,让未来的奖励没有当前奖励的权重高 \\ y_{t}和q(s_{t}, a_{t}; w_{t})都是对未来奖励总和的估计,但是y_{t}更加准确 一些(一部分是真实奖励估计的一部分) yt=rt+γq(st+1,at+1;wt)rt:奖励γ:折扣率,让未来的奖励没有当前奖励的权重高ytq(st,at;wt)都是对未来奖励总和的估计,但是yt更加准确一些(一部分是真实奖励估计的一部分)

  • 计算损失函数:
    L ( w ) = 1 2 [ q ( s t , a t ; w t ) − y t ] 2 L(w) = \frac {1}{2}[q(s_{t}, a_{t}; w_{t}) - y_{t}]^{2} L(w)=21[q(st,at;wt)yt]2

  • 梯度下降法:

w t + 1 = w t − α ∗ ∂ L ( w ) ∂ w ∣ w = w t α : 学习率 w_{t+1} = w_{t} - \alpha * \frac {\partial {L(w)}}{\partial {w}} | w=w_{t} \\ \alpha:学习率 wt+1=wtαwL(w)w=wtα:学习率

更新策略网络参数

​ 使用策略梯度法

​ 状态价值函数:相当于所有动作的平均分

​ 策略梯度算法:状态价值函数对参数的求导可以转化为g函数的期望,使用蒙特卡洛估计,将g函数的期望转化为g函数。

- 在st下策略函数给出动作概率分布,随机采样动作a
- 使用随机梯度上升法更新参数

在这里插入图片描述

总结

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值