【强化学习】Actor-Critic公式推导分析

本文深入探讨强化学习中的Actor-Critic算法,分析其通过价值函数估计轨迹价值以降低方差的原理,并介绍了A3C算法如何通过异步更新加速学习过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文是在DQN与stochastic policy gradient基础上进行介绍,部分公式源头可以在DQNstochastic policy gradient中找到。

一、AC算法

在之前的随机策略梯度算法中,我们可以采用类似蒙特卡洛的方法采样一条轨迹后对策略进行更新,如下所示
∇ θ J ( θ ) = 1 N ∑ i = 0 N ∑ t = 0 T [ ∇ θ log ⁡ π θ ( a i , t ∣ s i , t ) ( ∑ t ′ = t T r ( s i , t , a i , t ) − b ) ] ( 1 ) \nabla_{\theta}J(\theta)=\frac{1}{N}\sum_{i=0}^N\sum_{t=0}^T[\nabla_{\theta}\log \pi_{\theta}(a_{i,t}|s_{i,t})(\sum_{t'=t}^Tr(s_{i,t},a_{i,t})-b)] \qquad(1) θJ(θ)=N1i=0Nt=0T[θlogπθ(ai,tsi,t)(

<think>我们正在讲解Actor-Critic算法。注意,用户要求适合初学者的解释和示例。 同时,用户提供了两个引用,但引用内容与Actor-Critic算法本身关联不大。引用[1]提到强化学习面试中注重概念理解,引用[2]提到多Agent设置。我们可以适当参考引用[1]的精神,即注重概念理解,避免过于复杂的数学推导。 因此,我们的回答重点: 1. 用通俗语言解释Actor-Critic是什么,核心思想。 2. 分解ActorCritic各自的作用。 3. 用一个简单例子说明(比如平衡杆游戏,或者更简单的数值例子)。 4. 避免深入数学推导,但可以适当给出更新公式并解释其含义。 另外,根据用户要求,所有数学公式用$...$或$$...$$。 思路: 1. 先介绍Actor-Critic是结合了策略梯度(Policy Gradient)和值函数(Value Function)的方法。 2. Actor负责选择动作(策略),Critic负责评价动作的好坏(值函数)。 3. 用类比:Actor是运动员,Critic是教练。运动员执行动作,教练打分,运动员根据分数调整动作。 4. 算法流程:在每个时间步,Actor根据状态选择动作;环境反馈奖励和下一个状态;Critic根据状态(或状态-动作对)评估值函数(如状态值V(s)或动作值Q(s,a));然后Actor根据Critic的评价来更新策略(使用策略梯度),Critic根据实际回报来更新值函数(使用时间差分等)。 简单例子:平衡杆游戏(CartPole) - 状态:小车位置、速度、杆的角度、角速度 - 动作:向左推或向右推 - 奖励:每一步杆不倒就+1 - Actor:一个神经网络,输入状态,输出两个动作的概率(向左或向右) - Critic:另一个神经网络,输入状态,输出一个标量值(代表该状态的价值) 更新过程: 1. 执行动作,得到(s, a, r, s')。 2. 用Critic计算当前状态s的值V(s)和下一个状态s'的值V(s')。 3. 计算时间差分误差(TD error): δ = r + γV(s') - V(s) (γ是折扣因子) 4. Critic更新:最小化TD误差(即用δ作为损失函数的信号) 5. Actor更新:使用策略梯度,梯度方向为:∇J(θ) ≈ δ * ∇logπ(a|s;θ) (即用δ乘以策略梯度的对数似然) 注意:这里我们只给出公式但不推导,重点解释含义:δ是CriticActor动作的评价,如果δ>0说明这个动作比预期的好,就增加这个动作的概率;反之减少。 最后,生成几个相关问题。 注意:用户要求生成相关问题,放在最后。</think>### Actor-Critic算法通俗解析 Actor-Critic算法是强化学习的核心方法,结合了**策略优化**(Actor)和**价值评估**(Critic)的优势。类比足球训练: - **Actor(演员/执行者)**:像前锋球员,负责根据场上状态($s_t$)选择射门动作($a_t$) - **Critic(评论家)**:像教练,评估动作价值($Q(s_t,a_t)$),反馈"这脚射门值+0.7分" #### 核心原理(附流程示意图) ```mermaid graph LR A[状态 s_t] --> B[Actor策略网络] B --> C[动作 a_t] C --> D[环境反馈奖励 r] D --> E[Critic价值网络] E --> F[计算TD误差 δ] F -->|更新| B F -->|更新| E ``` 1. **Actor策略网络** 输入状态$s_t$,输出动作概率分布(例如:向左推杆概率=70%,向右=30%) 目标:**最大化长期累积奖励** $G_t = \sum \gamma^k r_{t+k}$($\gamma$为折扣因子) 2. **Critic价值网络** 评估状态-动作价值函数 $Q(s_t,a_t)$ 核心计算 **TD误差**(时间差分误差): $$ \delta_t = r_t + \gamma Q(s_{t+1},a_{t+1}) - Q(s_t,a_t) $$ - $\delta_t>0$:当前动作优于预期,应加强该动作 - $\delta_t<0$:当前动作差于预期,应减弱该动作 3. **协同更新机制** - Actor根据$\delta_t$调整策略:$\theta \leftarrow \theta + \alpha \delta_t \nabla_\theta \log \pi(a_t|s_t)$ - Critic根据$\delta_t$更新价值评估:$w \leftarrow w + \beta \delta_t \nabla_w Q(s_t,a_t)$ #### 生活化示例:平衡杆游戏(CartPole) 假设控制木杆平衡: - **状态$s_t$**:杆角度=15°,小车速度=0.2m/s - **Actor决策**:输出"向右推"(概率80%) - **环境反馈**:执行后杆保持平衡,获得奖励$r_t=+1$ - **Critic评估**: - 原预测$Q(s_t,a_t)=0.6$ - 实际$r_t + \gamma Q(s_{t+1},a_{t+1})=1+0.9×0.7=1.63$ - TD误差 $\delta_t = 1.63 - 0.6 = 1.03$ - **更新**: - Actor:增加"向右推"动作的概率 - Critic:提高类似状态的动作价值预测 > 💡 **关键优势** > 1. 比纯策略梯度(如REINFORCE)更稳定:Critic提供**实时反馈**,减少随机性[^1] > 2. 比纯值函数(如Q-learning)更灵活:Actor直接输出**连续动作**(如方向盘转角) > 3. 适用于**高维状态空间**(如图像输入) #### 典型应用场景 - **游戏AI**:训练《Dota2》英雄的走位策略 - **机器人控制**:机械臂抓取物体时的力度调整 - **自动驾驶**:根据路况连续调节方向盘角度 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值