强化学习SAC算法探索和学习
根据上述目标,定义软动作价值函数和软状态价值函数注意到第二式可改写为:这正是最大熵目标下软状态价值的定义。将两式结合可得到软贝尔曼方程:这个方程用于后续Q函数的迭代更新。
SAC,即Soft Actor-Critic算法,是目前强化学习主流的方法,适合处理复杂的连续控制问题。
SAC在最大累积奖励目标上引入了最大熵目标,让策略追求高回报同时,尽可能保持行为随机性。
这种机制极大地提升了算法的探索效率和鲁棒性,使其在面对未知或动态变化的环境时表现更佳。
这里尝试基于网络资料,从优化目标、损失函数、训练流程等多角度探索和学习SAC算法。
1. 最大熵强化学习目标
SAC的目标是在最大化累积奖励的同时最大化策略的熵,从而鼓励探索并提高鲁棒性。
传统强化学习的目标是找到策略 \(\pi\) 最大化期望累积奖励:
SAC在此基础上引入熵正则项,修改为:
其中是策略在状态
的熵,
是温度系数,控制熵项的重要性。
2 软价值函数定义
根据上述目标,定义软动作价值函数和软状态价值函数
:
注意到第二式可改写为:
这正是最大熵目标下软状态价值的定义。
将两式结合可得到软贝尔曼方程:
这个方程用于后续Q函数的迭代更新。
3. 策略评估与策略改进
SAC交替执行策略评估(估计当前策略的Q值)和策略改进(更新策略以提升软价值)。
3.1 策略评估
策略评估即Q函数更新,在实际算法中,我们使用参数化的Q网络逼近真实Q函数。
通过最小化软贝尔曼残差来训练Q网络。从经验回放池中采样转移
,其中
表示终止标志。目标值计算为:
这里使用两个目标Q网络并取最小值(Clipped Double-Q trick)以抑制过估计。
由当前策略
采样得出。
于是Q网络的损失函数为:
注意的计算依赖于目标网络,其参数
通过慢速更新(如Polyak平均)从
复制。
如此,计算策略评估网络,即Q网络应该有两个。
同时学习两个Q网络,在计算目标值时取两者中的最小值,可以有效缓解Q值的过度估计问题。
3.2 策略改进
策略的目标是在每个状态
最大化
,即最大化
。
由于精确的未知,我们用当前学习的Q网络
代替。
通常取两个Q网络的最小值以提供保守估计:
策略优化的目标是:
这等价于最小化当前策略与一个能量基策略
之间的KL散度:
其中是归一化常数,与
无关。展开KL散度并忽略常数项可得:
这正是策略损失函数的期望形式。
然而,上式中的动作是通过采样得到的,梯度不能直接通过采样操作传播。
为此采用重参数化技巧:
将策略表示为确定性函数,其中
是从固定分布,如标准正态,采样的噪声。
例如,若策略输出高斯分布的均值和标准差
,
则。
对于有界动作空间,还需应用压缩,此时需相应地修正对数概率。
应用重参数化后,策略损失变为:
现在梯度可以反向传播到 \(\phi\)。
3.3 温度参数
调整
温度 控制熵项权重,手动选择困难。SAC将其作为一个可学习参数,通过最小化损失来使得策略的期望熵接近目标熵
,通常取负动作维度,如
。
约束优化问题可转化为:
注意这里是正数,且损失函数对
的导数由当前策略的熵与目标熵之差决定。
直观上,若当前熵低于目标,则损失鼓励增大,因为
对
的导数为
,即当前熵
与目标熵
的比较);反之亦然。
实际实现中,常将建模为
进行无约束优化。
因此,温度参数的损失函数为:
更新时对或
求梯度下降。
4. 整体流程
4.1 关键计算
以下时一些SAC关键计算的公式。
1)软价值关系:
2)软贝尔曼方程
3)Q损失,以双Q为例:
4)策略损失,即重参数化:
5)温度损失
其中为目标熵,如
。
软贝尔曼方程由Q和V的定义直接推出,与标准贝尔曼方程类似,但包含熵项。
策略改进通过最小化KL散度推导,得到的损失函数与最大化等价,且重参数化使得梯度可导。
双Q网络和目标网络的使用是经验技巧,不改变理论推导,但提高稳定性。
温度自动调整基于对偶变量优化,确保熵约束得到满足。
通过这个梳理,可以看到SAC如何将最大熵目标转化为可优化的损失函数,以及每个组件的作用。
4.2 核心组件
在实现SAC时,有几个关键的组件和技术细节值得特别留意:
1)网络架构
通常Actor网络输出动作分布的均值和对数标准差,用于构建高斯分布。
Critic网络则接收状态和动作的拼接作为输入,输出一个Q值。
双Critic网络是两个独立但结构相同的网络。
2)目标熵
自动温度调整需要一个目标值。
最常用的设置是target_{entropy} = -action_{dim},即动作空间维度的负值。
3)重参数化 trick
在Actor的sample方法中,必须使用rsample(),而非 sample(),来生成动作,这是实现重参数化、让梯度能够流动的关键。
4)动作的对数概率
如果动作经过tanh函数被压缩到 [-1, 1]区间,那么其对数概率需要根据变换的性质进行修正,以确保概率计算的正确性。
4.3 训练流程
综合以上,SAC在每个训练步骤执行以下操作:
1)与环境交互:从当前策略
采样动作
,执行得到
,存入回放池
。
2)从回放池采样:随机采样一批转移。
3)更新Q网络:计算目标,对每个Q网络最小化
。
4)更新策略网络:使用重参数化计算并更新
。
5)更新温度:计算
并更新
。
6)软更新目标网络:。
在实际训练过程中,关注以下指标可以帮助判断模型的收敛状态和调试超参数:
1)train/sac/critic_loss和train/sac/actor_loss损失值通常应逐渐下降并趋于稳定。
2)train/actor/entropy监控策略的实际熵值,看它是否在向设定的目标熵靠近。
3)train/sac/alpha观察温度参数的变化趋势,它可以反映探索与利用权衡的自动调整过程。
4)env/return是最核心的指标,即每个回合的总回报,应该随着训练逐步提升。
reference
---
Soft Actor-Critic Algorithms and Applications
https://arxiv.org/pdf/1812.05905
Soft Actor-Critic
https://github.com/haarnoja/sac
softlearning
https://github.com/rail-berkeley/softlearning
pytorch_sac
https://github.com/denisyarats/pytorch_sac
Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor
https://arxiv.org/pdf/1801.01290
软演员评论家 (SAC)
https://rlinf.readthedocs.io/zh-cn/latest/rst_source/tutorials/rlalg/sac.html
流匹配策略SAC强化学习训练
https://rlinf.readthedocs.io/zh-cn/latest/rst_source/examples/embodied/sac_flow.html
Actor loss of soft actor critic explained
https://ar5iv.labs.arxiv.org/html/2112.15568
Improved Soft Actor-Critic: Mixing Prioritized Off-Policy Samples with On-Policy Experience
更多推荐
所有评论(0)