之前探索了A3C强化学习算法。
https://blog.csdn.net/liliang199/article/details/158261172
这里进一步探索A3C从目标函数到梯度策略。深入A3C算法的数学推理和详细的计算过程。
将涉及到策略梯度定理、优势函数的引入、Critic的更新方式以及异步机制的实现细节。
1 从目标函数到策略梯度
A3C目标是找一个策略,使智能体在与环境交互中获得的累计折扣奖励的期望值最大化。
1.1 定义目标函数
定义目标函数为策略
下的期望折扣总回报:
其中表示轨迹,
是折扣因子。
1.2 策略梯度定理
如果用参数来参数化策略
,为了最大化
,需要计算梯度
。
策略梯度定理给出了一个优雅的解法:
这里的可以有很多种形式,例如:
:整个轨迹的总回报。
:动作之后的回报。
:动作之后的折扣回报(即
回报)。
:引入折扣因子的标准形式。
:动作价值函数。
:优势函数(这是A3C的选择)。
在A3C中,被设定为优势函数
。
2 引入Actor-Critic与优势函数
A3C使用Actor-Critic架构,意味着我们有两个网络(或共享一个网络的两个输出头):
Actor(演员):策略网络,负责输出动作。
Critic(评论家):价值网络,负责评估状态的好坏。
2.1 优势函数定义
优势函数衡量的是在状态
下采取动作
相比平均表现好多少:
我们不知道真实的和
,需要对其进行估计。
2.2 N步回报估计
A3C为了提高效率和降低方差,使用了N步采样的方法来估算优势。
假设我们在环境中从时间 开始,收集了
步的数据(直到时间
)。
1)计算 N步回报:
前步使用真实即时奖励
最后一步(第步)使用Critic网络估计的
来近似后续的无穷回报。
这样做既利用了真实奖励的准确性,又避免了必须等到回合结束才能计算的缺点。
2)计算优势估计
那么,优势函数的估计值就是:
这个就是Critic对Actor提出的"动作评价":如果为正,说明这个动作比预期的好,应该加强;如果为负,说明比预期的差,应该减弱。
3 损失函数构造与梯度计算
现在分别来看Actor和Critic是如何学习的。
在A3C中,多个worker会累积一定的梯度后,再异步地去更新全局网络。
3.1 Actor的损失函数与梯度
Actor的目标是最大化优势期望。因此,其损失函数可以看作是策略梯度的负数(因为通常深度学习框架做梯度下降,而我们需要梯度上升)。
1)策略梯度项
对这个损失求梯度,就得到了策略梯度的近似。
2)熵正则项
为了鼓励智能体进行探索,防止策略过早陷入确定性策略(局部最优)。
A3C在Actor的损失中加入了策略熵的正则项。熵越大,策略的随机性越强。
在损失函数中,我们减去熵(因为我们要最小化总的损失,所以加上熵的负数就相当于鼓励熵变大):
其中是一个超参数,控制探索的强度。
3)Actor总损失
Actor总损失L越小,正则墒表达式部分越小,正则墒越大。
此时策略随机性越强,抑制策略趋向于局部最优。
3.2 Critic的损失函数
Critic的目标是让它的估计 尽可能接近真实的 N步回报
。
这是一个典型的回归问题,通常使用均方误差(MSE)作为损失函数:
3.3 总损失函数
在A3C中,由于Actor和Critic通常共享底层的网络层(例如共享卷积层),我们需要将两个损失结合起来进行反向传播。
其中是平衡价值估计和策略优化的系数,通常设为0.5。
4 异步更新机制
最后来看这个推理过程是如何在异步框架下实现的。
这涉及到梯度的计算与累积,而不是参数的直接平均。
1)本地网络(Worker)
每个Worker都维护一个本地网络(参数),这个网络是全局网络(参数
)的一个拷贝。
2)前向传播与数据收集
Worker使用本地网络与环境交互,收集最多
步的数据,或者直到回合结束。
每一步都保存状态、动作和奖励。
3)反向传播与梯度计算
当收集完一个批次的数据后,Worker使用这些数据计算总损失,然后进行反向传播,计算出相对于本地网络参数
的梯度
。
关键点是这个梯度是在本地网络参数上计算的。
4)异步更新(Push)
Worker将其计算出的梯度(而不是参数本身)发送给全局网络。
全局网络接收到梯度后,使用优化器(如RMSProp或SGD)更新自己的参数:
严格来说,梯度是在本地网络 上计算的,但由于本地网络
是从全局网络
复制而来,这个梯度可以被视为对全局网络参数更新的一个无偏估计。
5)同步(Pull)
当Worker准备开始下一次数据收集时,它会从更新后的全局网络拉取最新的参数 ,用它覆盖本地网络的参数
。这个过程不断重复。
5 A3C的核心推理公式
可以将A3C的学习过程浓缩为以下几个核心的更新方向(梯度)
1)对于Actor(策略网络)
小括号内的部分就是 k步优势估计
2)对于Critic(价值网络)
这就是A3C完整的数学推理链条:通过多线程异步采样打破数据相关性,利用N步回报和优势函数来降低策略梯度的方差,并通过熵正则来鼓励探索,最终实现稳定且高效的收敛。
reference
Reinforcement Learning through Asynchronous Advantage Actor-Critic on a GPU
https://ar5iv.labs.arxiv.org/html/1611.06256
强化学习(十五) A3C
https://cloud.tencent.cn/developer/inventory/10029/article/1398764
A3C强化学习算法的探索和学习