赞
踩
DDPG 的问题在于,训练不稳定、收敛差、依赖超参数、不适应复杂环境。
软性演员-评论家算法 SAC,更稳定,更适应复杂环境。
传统强化学习策略,采用 ε-greedy 贪心策略。
过度利用已知最优策略,老是在同一个地方用同一个策略
忽视对未知状态和未知最优动作的探索,容易忽视复杂环境的动态变化
DDPG 每个时刻只给了一个最优策略,这个最优策略很大程度还是之前的经验
软性在这里的意思是,软性选择,用于平滑探索和利用的关系。
比如走迷宫,你有很多选择:向前走、向后走、转向等。
SAC 算法通过鼓励探索(即不总是走看起来最优的路径)来找到多个好的解决方案,并且它比其他算法更不容易陷入局部最优解,因为它总是在寻找新的可能性。
核心优势是,避免过早陷入局部最优解,至少也要找一个更大的局部最优解。
SAC 软性选择是基于熵,熵的作用是为了衡量不确性程度。
这意味着在评估一个动作的价值时,不仅考虑了奖励,还考虑了执行该动作后策略的熵。
目标不仅是最大化奖励,还要最大化熵,这意味着算法被鼓励探索更多不同的动作,即使它们不是当前看起来最优的。
最大熵强化学习不仅仅关注立即的奖励最大化,还关注保持策略的多样性和随机性,以促进更全面的探索。
这张图描绘的是软性演员-评论家算法(Soft Actor-Critic, SAC)中用到的一个关键概念,即多模态Q函数。
在这个图中,我们可以看到两个子图,3a和3b,它们展示了策略(π)和Q函数之间的关系。
图3a:
图3b:
这两个子图展示了如何从Q函数构建一个随机策略,这个策略不仅考虑最大化回报,还鼓励策略的多样性(探索)。在图3a中,我们只看到了策略的原始形态,而在图3b中,我们看到了这个策略如何通过与Q函数结合来调整,以包含探索性。
在SAC算法中,这种通过最大化熵来鼓励探索的策略非常重要,有助于避免局部最优解并找到更鲁棒的长期解决方案。
通过这种方式,SAC能够在学习过程中平衡探索和利用,提高智能体在复杂环境中的表现。
在某些环境中,可能存在多种不同的策略都能获得高回报,这导致 动作价值 Q 函数 变得多模态(即有多个高值峰)。
传统的强化学习算法可能只能收敛到其中一个模态,也就是一个局部最优解,而忽略了其他可能同样好或者更好的策略。
为了解决这个问题,可以使用一种称为基于能量的策略来让策略更好地适应Q函数的多模态特性。
基于能量的策略通常采用玻尔兹曼分布的形式,这是一个概率分布,它根据能量函数给出了各个状态的概率。
玻尔兹曼分布(x轴是能量大小):
让策略收敛到 Q 函数 的玻尔兹曼分布形式,这个形式的分布就可以拟合上图的多个解。
玻尔兹曼分布可以用来选择动作,其中动作的选择概率与其Q值的指数成正比,公式如下:
这里的 τ \tau τ 称为温度参数,它控制了策略的探索程度。
当 τ \tau τ 较大时,策略倾向于探索
当 τ \tau τ 较小时,策略倾向于利用
这种基于玻尔兹曼分布的策略平衡了探索和利用,有助于智能体在复杂环境中找到长期有效的解决方案。
理论上,当智能体的学习收敛时,它的策略会反映出Q函数的结构,优先选择预期回报高的动作,同时保持对其他可能性的探索,这样做可以避免局部最优解,并适应环境的变化。
V网络(Value Network)
策略网络(Policy Network)
Q网络(Q Networks)
这种结构允许SAC在做出决策时考虑到策略的多样性,并通过两个Q网络来减少值函数的过估计。
整个架构的目的是训练一个智能体,使其能在复杂环境中作出决策,同时通过熵正则化来鼓励探索未知的行为。
Q网络更新损失函数:
L Q ( ϕ ) = E ( s i , q i , r i , s i + 1 ) ∼ D , a i + 1 ∼ π θ ( ⋅ ∣ s i + 1 ) [ 1 2 ( Q ϕ ( s i , a i ) − ( r i + γ ( min j = 1 , 2 Q ϕ ˙ j ( s t + 1 , a t + 1 ) − α log π ( a t + 1 ∣ s t + 1 ) ⏞ Entropy Iterm ) 2 ] L_Q(\phi)=\mathbb{E}_{(s_i,q_i,r_i,s_{i+1})\sim\mathcal{D},a_{i+1}\sim\pi_{\theta}(\cdot|s_{i+1})}\left[\frac{1}{2}\left(Q_{\phi}(s_i,a_i)-(r_i+\gamma(\min_{j=1,2}Q_{\dot{\phi}_j}(s_{t+1},a_{t+1})\overbrace{-\alpha\log\pi(a_{t+1}|s_{t+1})}^{\textbf{Entropy Iterm}} \right ) ^ 2 \right ] LQ(ϕ)=E(si,qi,ri,si+1)∼D,ai+1∼πθ(⋅∣si+1) 21 Qϕ(si,ai)−(ri+γ(minj=1,2Qϕ˙j(st+1,at+1)−αlogπ(at+1∣st+1) Entropy Iterm 2
公式的原意:
策略网络更新损失函数:
L π ( θ ) = E s t ∼ D , a t ∼ π θ [ α log ( π θ ( a t ∣ s t ) ) − Q ϕ ( s t , a t ) ] L_{\pi}(\theta)=\mathbb{E}_{s_{t}\sim\mathcal{D},a_{t}\sim\pi_{\theta}}[\alpha\log(\pi_{\theta}(a_{t}|s_{t}))-Q_{\phi}(s_{t},a_{t})] Lπ(θ)=Est∼D,at∼πθ[αlog(πθ(at∣st))−Qϕ(st,at)]
上面提到的两个公式共同工作以优化智能体的行为,但各自负责不同的部分:
Q函数的损失函数 L Q ( ϕ ) L_Q(\phi) LQ(ϕ):
策略网络的损失函数 L π ( θ ) L_{\pi}(\theta) Lπ(θ):
L Q ( ϕ ) L_Q(\phi) LQ(ϕ)确保了对动作价值的准确估计,而 L π ( θ ) L_{\pi}(\theta) Lπ(θ)使智能体能够在探索多样动作的同时做出回报最大化的决策。两者共同作用使得智能体在复杂环境中能有效地学习和适应。
SAC 策略通常由一个神经网络表示,该网络输出动作的概率分布参数,如高斯分布的均值和方差。
但采样是一个随机过程,是不可导的。
那神经网络就不能用链式法则,计算梯度。
比如控制一个机器人,你可以按一个按钮来让机器人随机选择一个动作,比如跳跃、蹲下、行走、奔跑。
这个随机选择的过程就像掷骰子,你无法预测下一次会是什么,也就是说,从掷骰子这个动作本身,你无法学到如何掷出你想要的数字。
在 SAC 算法中,如果动作选择像掷骰子一样随机,那它就无法直接从这个随机过程中学习,因为随机过程是无法预测和控制的。
重参数化技巧就像是换了一个透明的骰子,你可以看到里面的结构和机制,这样就能预测和控制骰子的结果。
不是直接让机器人随机选择动作,而是让机器人从一个固定的噪声源(就像是一个可预测的骰子)中“计算”出它的动作。
这样一来,即使动作看起来是随机的,但实际上是由一个可以学习和优化的过程决定的。
这使得训练过程既能包含随机性(对探索很重要),又能进行梯度下降优化(对学习很重要)。
传统采样是从高斯分布的方差和均值中,抽一个具体的数值。
重参数化:让高斯分布采样,变成一个确定性变换。
在 SAC 算法中,选取熵的系数非常重要。
不同状态需要不同大小的熵。
在未知最优动作时,熵要大一些,越明确最优动作,熵要小一些。
为了让 SAC 自动调整熵,就把目标函数变成一个带约束的优化问题:
化简:
软策略演算法(Soft Actor-Critic,简称SAC)是一种基于演员-评论家框架的深度强化学习算法。它的核心目标是在探索和利用之间找到平衡,通过引入熵作为奖励的一部分来鼓励探索。这里我将尝试通俗易懂地介绍SAC算法的主要步骤和推导过程。
1. 熵加权奖励
在SAC中,策略的目标是最大化预期奖励和熵。熵是一个衡量策略随机性的度量,高熵意味着高随机性。这导致算法在学习期间更多地探索。
2. 软值函数更新
SAC算法使用两种值函数:软状态值函数 和软动作值函数 。软值函数的更新规则通过Bellman方程来定义,但增加了熵项。
3. 策略改进
在SAC中,策略是通过最大化软Q函数来改进的。这意味着策略不仅试图选择高奖励的动作,还试图选择熵高的动作。策略通常使用神经网络来参数化,并通过梯度上升来更新。
4. 双重Q网络和目标网络
为了稳定学习,SAC通常使用双重Q网络来减少过度估计,并使用目标网络来提供稳定的目标。这些技巧类似于DQN算法中的应用。
5. 自适应熵系数调整
SAC算法通常包括一种机制来自适应地调整熵系数 α \alpha α,以便在不同的学习阶段保持合适的探索级别。
6. 算法流程
论文作者:https://github.com/rail-berkeley/softlearning
OpenAI:https://github.com/openai/spinningup
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。