强化学习之SAC(soft actor-critic)算法

强化学习之SAC(soft actor-critic)算法

PPO算法是目前最主流的DRL算法,但是PPO是一种on-policy算法,存在sample inefficiency的缺点,需要巨量的采样才能学习。DDPG及其拓展是面向连续控制的off-policy的算法,相对于PPO来说更sample efficient,但是它存在对其超参数敏感,收敛效果差的问题。SAC算法是面向最大熵强化学习开发的一种off-policy算法。与DDPG相比,SAC使用的是随机策略,相比确定性策略具有一定的优势。

随机策略相比于确定性策略具有什么优势?

我们在寻求最优动作的时候,很多时候并不是说最优动作就只有一个的。比如说我们想要机器人去追一个小球,机器人其实有无数条路径可以去实现这个目标,而不是说只有唯一的一种路径。我们需要DRL算法能够给出一个随机策略,在每一个状态都能输出每个动作的概率,比如说有3个动作是最优的,概率是一样大的,那么就可以在这三个动作中随机选择一个。

基于最大熵的RL算法有什么优势?

在这里插入图片描述
上式为DRL的学习目标,与传统的DRL学习目标不同,不仅想要长期的回报最大,还想要policy的每一次输出的action的熵最大。这样做其实就是为了让策略随机化,也是在鼓励探索,为具有相似的Q值的动作分配近乎均等的概率,不会给动作范围内任何一个动作分配非常高的概率,避免了反复选择同一个动作而陷入次优。同时通过最大化奖赏,放弃明显没有前途的策略(放弃低奖赏策略)。总的来说,具有以下几个优势:
1.更强的探索能力;
2.更鲁棒,面对干扰的时候能更容易做出调整;
3.训练速度加快(最大熵使探索更加均匀)。
下面会根据SAC算法论文来介绍。

最大熵强化学习

通常强化学习的目标是最大化累计reward:
在这里插入图片描述
最大熵强化学习中考虑的是最大化带熵的累计奖励:
在这里插入图片描述
上式中的α确定了熵项对于奖励的相对重要性。

soft策略迭代

下面所有的推导都是基于表格型的。
soft policy evaluation
对于一个固定的策略π,其软Q值可以通过Bellman backup 算子迭代出来:
在这里插入图片描述
论文中的引理1告诉我们soft policy evaluation可以通过:
在这里插入图片描述
进行迭代,若迭代无数次,最终会收敛到策略π的软Q值函数。
此为引理1
policy improvement
在策略改进中有:
在这里插入图片描述
与往常的off-policy方法最大化Q值不同的是,在SAC中策略是向正比于Q的指数分布更新的。在实际操作中,为了方便策略的处理,我们还是将策略输出为高斯分布,通过最小化KL散度去最小化两个分布的差距。
在这里插入图片描述
其中:在这里插入图片描述

为对Q值进行归一化分布。由论文中的引理2我们可以知道,对于所有的:
在这里插入图片描述
满足:在这里插入图片描述
这样保证每次更新的策略至少是由于旧策略的。
引理2
在这里插入图片描述
与传统强化学习的策略迭代一样,不断重复策略评估和策略改进两个过程,最终能够得到最优策略。即为论文中定理1所述:
在这里插入图片描述

Soft Actor-Critic

由于是非常大的连续域的情况,就需要引入函数逼近。
定义软状态值函数:
在这里插入图片描述
定义软Q值函数:
在这里插入图片描述
定义策略函数:
在这里插入图片描述
对应的参数分别是:
在这里插入图片描述
软状态值函数的目标函数为:
在这里插入图片描述
梯度:
在这里插入图片描述
软Q值函数的目标函数是:
在这里插入图片描述
其中:
在这里插入图片描述
梯度:
在这里插入图片描述
策略更新的目标函数:
在这里插入图片描述
我们策略的目标就是最小化两个分部之间的KL散度
由于策略是一个分布,动作a采样后无法对其进行求导,所以要用到重参数化技巧来对动作采样。在这里,策略表示为一个带噪声的神经网络:
在这里插入图片描述
其中epsilon t为一个输入的噪声向量。那么策略的目标函数可以重新写为:
在这里插入图片描述
少了:在这里插入图片描述
是因为它与参数在这里插入图片描述无关,求导为0,所以可以直接省略。
梯度:
在这里插入图片描述
整个算法流程就如下所示:
在这里插入图片描述
参考:

1.https://blog.csdn.net/u011501388/article/details/78447839
2.https://zhuanlan.zhihu.com/p/70360272
3.https://zhuanlan.zhihu.com/p/114236301

### SAC算法框架流程 SACSoft Actor-Critic)作为一种先进的深度强化学习方法,在处理连续动作空间的任务上表现出色。该算法的核心在于最大化预期回报的同时最小化熵损失,从而实现更有效的探索策略[^3]。 #### 主要组成部分 1. **初始化** - 初始化参数向量θ用于表示随机策略π_θ(a|s),以及函数Q_w(s,a)和V_u(s)[^4]。 2. **数据收集阶段** - 使用当前策略π_θ与环境交互以获取新的经验样本(e_t=(s_t,a_t,r_t,s_(t+1)))并存储到回放缓冲区D中[^1]。 3. **更新价值网络** - 计算目标值y_i=r_i+γ(𝔼[V_u'(s_(i+1))]-αlog⁡π_θ (a_i |s_i )),其中γ为折扣因子,α控制着熵的重要性程度; - 利用均方误差(MSE)作为损失函数L(w)=E[(y_i-Q_w(s_i ,a_i ))²]来调整权重w,使得预测更加接近实际获得的目标值[^5]。 4. **优化行为策略** - 对于给定的状态s,求解argmax_a[𝔼_{a~π}[Q_w(s,a)-αH(π(.|s))]]得到最优行动方案,并据此改进策略π_θ; - 这里H()代表熵项,用来衡量分布的不确定性水平,而α则决定了奖励信号中加入多少额外激励去促进多样化的行为模式。 5. **评估状态价值** - 更新状态价值估计V_u(s)=𝔼_[r+γV_u'(s')-αlog⁡π_θ (a'|s')],确保其能够反映最新的知识体系变化情况。 6. **重复迭代直至收敛** ```mermaid graph TD; A[初始化参数] --> B{循环直到满足终止条件}; B --> C[采样一组轨迹]; C --> D[计算TD误差δ=reward+discount*next_value-value]; D --> E[使用TD误差更新Critic Q-network]; E --> F[根据新旧策略比例更新Actor policy network]; F --> G[重新估算State Value Function V]; G --> H[返回B继续下一轮训练]; ``` 此图展示了SAC算法的基本工作流,从初始设置到最后一次迭代结束为止。每一步都紧密相连,共同构成了完整的训练过程。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值