前言
这次是Actor-Critic
正文
Actor-Critic算法是一种经典的强化学习方法,结合了策略方法(Actor)和基于价值的方法(Critic)。通过同时学习一个策略和一个值函数,Actor-Critic在处理复杂环境中的连续动作空间时具有显著优势。以下是对Actor-Critic算法的详细介绍。
基本概念
-
Actor(策略网络):
- Actor负责执行策略,其任务是学会在给定状态下选择最优动作。具体地,它得到状态输入并输出动作的概率分布或具体的动作值。
- 参数化的策略通常表示为:πθ(a∣s),其中θ是策略的参数。
-
Critic(价值网络):
- Critic负责评估Actor的动作质量,基于当前策略评估状态-动作对的价值。它可以减小策略优化的方差。
- 通常估计状态值函数Vw(s)或动作值函数Qw(s,a),其中w是价值网络的参数。
工作原理
Actor-Critic算法通过交替更新Actor和Critic来优化策略。其中Critic根据当前策略评估的值函数来指导Actor的更新。Critic负责计算优势(Advantage),用于更新Actor的策略。
数学原理
-
策略梯度更新(Policy Gradient Update):
- Actor的更新方向由策略梯度定理确定,目的是最大化累积奖励:
θ←θ+α∇θlogπθ(at∣st)A(st,at)
- 其中A(st,at)=Q(st,at)−V(st)是优势函数,用于减小方差。
-
状态值函数或动作值函数的更新:
- Critic通过最小化均方误差(Mean Squared Error, MSE)来加以训练:
L(w)=E[(Rt+1+γVw(st+1)−Vw(st))2]
- 若维护的是动作值函数 Qw(s,a),则使用TD误差:
δt=Rt+1+γQw(st+1,at+1)−Qw(st,at)
并更新:
w←w+βδt∇wQw(st,at)
算法流程
-
初始化:
- 初始化Actor参数θ和Critic参数w。
-
循环执行直至收敛:
- 在环境中观察当前状态st。
- Actor根据策略πθ选择动作at。
- 执行动作,观察奖励Rt+1和新状态st+1。
- 使用Critic估计值函数并计算优势。
- 更新Critic参数。
- 更新Actor参数。
-
持续改进策略和价值函数,
- 直到策略收敛(表现达到期望)。
优势和应用
-
优势:
- 减少策略梯度方法的方差,提高收敛速度。
- 在复杂和连续动作空间中表现优异。
-
应用场景:
- 适合处理那些传统值函数逼近算法难以处理的复杂环境,尤其是在决策路径非常长或问题规模过大时,例如机器人操作和游戏智能体。
实际应用算法
Basic Actor-Critic (QAC)
Basic Actor-Critic (QAC) 算法是强化学习中一种将策略优化与价值评估结合在一起的方法。它通过分开两个主要组件来加速学习:Actor,负责策略决策,和 Critic,负责为当前策略评估动作值。
Actor-Critic 角色
-
Actor:
- Actor相当于策略梯度方法中的策略部分,专注于策略的更新。基本上,该组件通过调整其参数 θ 来学习从状态 st 到动作 at 的映射。
- 使用策略梯度的方法更新策略,通过最大化长期收益来更新策略参数。
-
Critic:
- Critic负责评估政策的表现,提供关于行动质量的反馈。QAC 中,Critic 通过估计动作值函数 qt(st,at) 实现这一点。
- 它采用时序差分(Temporal Difference, TD)学习方法来更新其参数,减少策略梯度的方差,提高学习效率。
QAC 和 REINFORCE 之间的区别
-
QAC(Q Actor-Critic):
- 使用 TD 学习方法来估计动作值函数,即通过每一步的增量改进来实时更新价值。
- 优势在于能更快地响应和调整策略,因为其做出更新时每次只需查阅最近发生的状态和动作。
-
REINFORCE:
- 采用的是蒙特卡洛方法来进行价值估计,通过观察完整的序列来更新策略。
- 全局更新策略和高方差的问题,即需要完整的回合数据,更新结果可能显得更迟滞。
算法细节
-
Critic 极大化值函数:
-
通过仿照 Sarsa 算法的策略,Critic Learns 提供对分布策略的最佳估计:
wt+1=wt+αw[rt+1+γq(st+1,at+1,wt)−q(st,at,wt)]∇wq(st,at,wt)
-
更新意味着Critic微调参数以逐步完善值函数的预测。
-
-
Actor 执行策略更新:
-
如 REINFORCE,Actor 借助策略梯度(PolicyGradient)来优化策略:
θt+1=θt+αθ∇θlnπ(at∣st,θt)qt(st,at,wt+1)
-
使用 q 函数值作为更新权重,促使 Actor 在决策时倾向于那些经过评估更有效的方法。
-
一句话总结
QAC通过结合Actor的策略更新和Critic的价值更新,引入一种更高效的强化学习机制,使策略能够更快速和更准确地适应环境变化,非常适合于需要快速反馈和实时响应的复杂任务。
A2C (Advantage actor-critic)
Advantage Actor-Critic (A2C) 是一个基于策略优化和价值估计的强化学习算法,它将策略梯度方法(Actor部分)与状态值函数估计(Critic部分)结合起来。A2C 通过引入“优势函数”来改进 Actor 的策略学习,并通过使用同步环境来提高效率和稳定性。下面是对 A2C 算法的详细介绍:
A2C 算法的组成
-
Actor(策略网络):
- Actor 的工作是基于输入的状态 st,输出动作的概率分布 πθ(a∣st)。这个网络决定应该选择哪个动作来最大化长期回报。
-
Critic(价值网络):
- Critic 评估 Actor 的策略表现,通过估计当前策略下状态的值函数Vw(st),提供关于策略好坏的反馈。Critic 通过观察即时奖励来进行策略评估。
-
优势函数(Advantage Function):
-
优势函数 A(st,at) 用于减少策略梯度的方差,提高学习稳定性。它被定义为一个动作与该动作在当前状态下的平均效果之间的差距:
A(st,at)=Q(st,at)−V(st)
-
其中Q(st,at) 是动作值,该函数未明确计算,但优势可以通过 TD 误差(Temporal Difference Error)来近似。
-
A2C 算法的核心步骤
-
初始化策略和价值网络参数:
- 初始化策略参数 θ 和价值参数 w。
-
在多个环境中收集样本:
- 并行运行 N 个副本环境。在这些环境中,通过策略选择动作,记录状态、动作、奖励的序列。
-
计算优势:
-
计算每个动作选择的优势函数。优势是折扣后的累积奖励减去当前状态值:
A(st,at)=(Rt+1+γVw(st+1))−Vw(st)
-
通常通过 TD 误差简化计算:
δt=Rt+1+γVw(st+1)−Vw(st)
-
-
更新 Critic(价值网络):
-
使用批量更新的方式更新价值网络中的参数以最小化 TD 误差的均方误差(MSE):
w←w+αwδt∇wVw(st)
-
-
更新 Actor(策略网络):
-
使用策略梯度更新策略网络参数,最小化优势函数的负值:
θ←θ+αθ∇θlogπθ(at∣st)δt
-
A2C 的优势和特点
-
同步更新:在 A3C 中,环境是异步运行的,而 A2C 则将多环境同步,合并成一个批次进行更新。这种方法使得算法更加稳定和高效,并容易实现。
-
降低方差:通过使用优势函数,A2C 大大降低了策略梯度估计的方差,同时保持了策略的期望不变。
-
适应性:A2C 能够快速响应环境变化和学习不同策略的需求,是处理具有大量连续状态和动作空间问题的有效工具。
尾声
本来还有个dpg,但是差不多,不写了