A3C算法从目标函数到梯度策略的探索

之前探索了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强化学习算法的探索和学习

https://blog.csdn.net/liliang199/article/details/158261172

相关推荐
陈天伟教授2 小时前
人工智能应用- 材料微观:06.GAN 三维重构
人工智能·神经网络·算法·机器学习·重构·推荐算法
liliangcsdn3 小时前
A3C强化学习算法的探索和学习
算法
Figo_Cheung3 小时前
Figo《量子几何学:从希尔伯特空间到全息时空的统一理论体系》(二)
算法·机器学习·几何学·量子计算
额,不知道写啥。3 小时前
HAO的线段树(中(上))
数据结构·c++·算法
LYS_06183 小时前
C++学习(5)(函数 指针 引用)
java·c++·算法
紫陌涵光3 小时前
669. 修剪二叉搜索树
算法·leetcode
NGC_66114 小时前
二分查找算法
java·javascript·算法
ADDDDDD_Trouvaille4 小时前
2026.2.21——OJ95-97题
c++·算法