网站首页弹出图片,seo排名软件怎么做,百度收录左侧带图片的网站,90设计素材网官网软性演员-评论家算法 SAC 软性演员-评论家算法 SAC优势原理软性选择模型结构目标函数重参数化熵正则化算法步骤代码实现 软性演员-评论家算法 SAC
优势原理
DDPG 的问题在于#xff0c;训练不稳定、收敛差、依赖超参数、不适应复杂环境。
软性演员-评论家算法 SAC#xff… 软性演员-评论家算法 SAC 软性演员-评论家算法 SAC优势原理软性选择模型结构目标函数重参数化熵正则化算法步骤代码实现 软性演员-评论家算法 SAC
优势原理
DDPG 的问题在于训练不稳定、收敛差、依赖超参数、不适应复杂环境。
软性演员-评论家算法 SAC更稳定更适应复杂环境。
传统强化学习策略采用 ε-greedy 贪心策略。 过度利用已知最优策略老是在同一个地方用同一个策略 忽视对未知状态和未知最优动作的探索容易忽视复杂环境的动态变化 DDPG 每个时刻只给了一个最优策略这个最优策略很大程度还是之前的经验
软性在这里的意思是软性选择用于平滑探索和利用的关系。
比如走迷宫你有很多选择向前走、向后走、转向等。
在没有 SAC 的情况下如果你发现一条看似可行的路线已知最佳经验和动作你可能会一直沿着这条路线走即使它可能不是最佳路径。有了 SAC就好比你不仅想尽快找到出路还想探索迷宫中的每个角落。即使某些路线看起来当前并不是最直接的出路你也会尝试它们因为你被鼓励去探索。当 SAC 算法发现自己在某一区域过于确定或重复同样的路径时它会因为想要增加熵探索不确定性而尝试新的动作比如尝试之前没有走过的道路。随着时间的推移SAC 不仅找到了出路而且可能发现了多条路径因为它在探索过程中学到了迷宫的更多信息。
SAC 算法通过鼓励探索即不总是走看起来最优的路径来找到多个好的解决方案并且它比其他算法更不容易陷入局部最优解因为它总是在寻找新的可能性。
核心优势是避免过早陷入局部最优解至少也要找一个更大的局部最优解。
SAC 软性选择是基于熵熵的作用是为了衡量不确性程度。
这意味着在评估一个动作的价值时不仅考虑了奖励还考虑了执行该动作后策略的熵。
目标不仅是最大化奖励还要最大化熵这意味着算法被鼓励探索更多不同的动作即使它们不是当前看起来最优的。
最大熵强化学习不仅仅关注立即的奖励最大化还关注保持策略的多样性和随机性以促进更全面的探索。 这张图描绘的是软性演员-评论家算法Soft Actor-Critic, SAC中用到的一个关键概念即多模态Q函数。
在这个图中我们可以看到两个子图3a和3b它们展示了策略π和Q函数之间的关系。
图3a
π(at|st)这表示在给定状态st时动作at的概率分布这里假设为正态分布N(μ(st), Σ)其中μ(st)是均值函数Σ是协方差矩阵。Q(st, at)这是Q函数在特定状态st和动作at下的值。Q函数衡量采取某动作并遵循当前策略预期可以获得的累积回报。
图3b
π(at|st) ∝ exp(Q(st, at))这里显示了SAC中采用的最大熵策略其中策略即概率分布与exp(Q(st, at))成正比。这意味着采取某个动作的概率不仅与预期回报Q值相关还与该动作的熵有关。熵较高的动作即使预期回报不是最大也可能被选中这样鼓励了探索。Q(st, at)同样表示Q函数的值但在这里它与策略结合来形成一个调整后的策略分布。
这两个子图展示了如何从Q函数构建一个随机策略这个策略不仅考虑最大化回报还鼓励策略的多样性探索。在图3a中我们只看到了策略的原始形态而在图3b中我们看到了这个策略如何通过与Q函数结合来调整以包含探索性。
在SAC算法中这种通过最大化熵来鼓励探索的策略非常重要有助于避免局部最优解并找到更鲁棒的长期解决方案。
通过这种方式SAC能够在学习过程中平衡探索和利用提高智能体在复杂环境中的表现。
软性选择
在某些环境中可能存在多种不同的策略都能获得高回报这导致 动作价值 Q 函数 变得多模态即有多个高值峰。
传统的强化学习算法可能只能收敛到其中一个模态也就是一个局部最优解而忽略了其他可能同样好或者更好的策略。
为了解决这个问题可以使用一种称为基于能量的策略来让策略更好地适应Q函数的多模态特性。
基于能量的策略通常采用玻尔兹曼分布的形式这是一个概率分布它根据能量函数给出了各个状态的概率。
玻尔兹曼分布x轴是能量大小 让策略收敛到 Q 函数 的玻尔兹曼分布形式这个形式的分布就可以拟合上图的多个解。
玻尔兹曼分布可以用来选择动作其中动作的选择概率与其Q值的指数成正比公式如下 [ π ( a ∣ s ) exp ( Q ( s , a ) / τ ) ∑ b exp ( Q ( s , b ) / τ ) ] [ \pi(a|s) \frac{\exp(Q(s,a)/\tau)}{\sum_{b}\exp(Q(s,b)/\tau)} ] [π(a∣s)∑bexp(Q(s,b)/τ)exp(Q(s,a)/τ)]
这里的 τ \tau τ 称为温度参数它控制了策略的探索程度。 当 τ \tau τ 较大时策略倾向于探索 当 τ \tau τ 较小时策略倾向于利用
这种基于玻尔兹曼分布的策略平衡了探索和利用有助于智能体在复杂环境中找到长期有效的解决方案。
理论上当智能体的学习收敛时它的策略会反映出Q函数的结构优先选择预期回报高的动作同时保持对其他可能性的探索这样做可以避免局部最优解并适应环境的变化。
模型结构 V网络Value Network
输入嵌入层Input Embedder对输入的观察数据进行预处理。中间件Middleware通常是一系列的全连接层或其他类型的网络层用于提取特征。输出层Dense输出状态值State Value它代表了在给定状态下遵循当前策略所能获得的预期回报。
策略网络Policy Network
输入嵌入层Input Embedder与V网络相同对输入进行预处理。中间件Middleware提取特征。策略均值输出层Dense, Policy Mean预测给定状态下每个动作的均值。策略标准差输出层Dense, Log Policy Std预测动作的对数标准差通常会通过指数函数Exponentiate进行处理以确保标准差是正的。SAC头SAC Head结合均值和标准差定义了一个高斯分布并从中采样动作Sampled Actions作为策略输出。
Q网络Q Networks
输入嵌入层Input Embedder分别对状态和动作进行预处理。中间件Middleware提取特征。输出层Dense存在两个Q网络每个都输出一个状态-动作对的价值State Action Value 1 2这是为了减少估计偏差并提高稳定性。
这种结构允许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_{i1})\sim\mathcal{D},a_{i1}\sim\pi_{\theta}(\cdot|s_{i1})}\left[\frac{1}{2}\left(Q_{\phi}(s_i,a_i)-(r_i\gamma(\min_{j1,2}Q_{\dot{\phi}_j}(s_{t1},a_{t1})\overbrace{-\alpha\log\pi(a_{t1}|s_{t1})}^{\textbf{Entropy Iterm}} \right ) ^ 2 \right ] LQ(ϕ)E(si,qi,ri,si1)∼D,ai1∼πθ(⋅∣si1) 21 Qϕ(si,ai)−(riγ(minj1,2Qϕ˙j(st1,at1)−αlogπ(at1∣st1) Entropy Iterm 2 L Q ( ϕ ) L_Q(\phi) LQ(ϕ) 这是Q函数的损失函数用来训练Q网络的参数 ϕ \phi ϕ。 E ( s i , a i , r i , s i 1 ) ∼ D \mathbb{E}_{(s_i, a_i, r_i, s_{i1}) \sim \mathcal{D}} E(si,ai,ri,si1)∼D: 这个期望表示对经验回放缓冲区 D \mathcal{D} D中的样本进行平均包括状态 s i s_i si、动作 a i a_i ai、奖励 r i r_i ri和下一个状态 s i 1 s_{i1} si1。 a i 1 ∼ π θ ( ⋅ ∣ s i 1 ) a_{i1} \sim \pi_{\theta}(\cdot|s_{i1}) ai1∼πθ(⋅∣si1): 表示根据当前策略 π θ \pi_{\theta} πθ选择下一个动作 a i 1 a_{i1} ai1。 Q ϕ ( s i , a i ) Q_{\phi}(s_i, a_i) Qϕ(si,ai): Q网络使用参数 ϕ \phi ϕ来估计在状态 s i s_i si下采取动作 a i a_i ai的价值。 r i γ ( min j 1 , 2 Q ϕ ˙ j ( s i 1 , a i 1 ) − α log π ( a i 1 ∣ s i 1 ) ) r_i \gamma (\min_{j1,2}Q_{\dot{\phi}_j}(s_{i1}, a_{i1}) - \alpha \log \pi(a_{i1}|s_{i1})) riγ(minj1,2Qϕ˙j(si1,ai1)−αlogπ(ai1∣si1)): 这部分计算目标Q值包括立即奖励 r i r_i ri加上对下一个状态-动作对的Q值的折现考虑两个Q网络中较小的那个避免过大偏差估计再减去与策略熵相关的项其中 γ \gamma γ是折现因子 α \alpha α是熵正则化的权重。 α log π ( a i 1 ∣ s i 1 ) \alpha \log \pi(a_{i1}|s_{i1}) αlogπ(ai1∣si1): 这是熵正则化项 α \alpha α表示其权重。熵项鼓励策略进行探索防止过早收敛到局部最优策略。
公式的原意
Q函数部分不仅基于当前能得到多少分数来建议你的动作而且还会考虑到未来可能得到的分数最大熵部分让游戏更有趣、多样性探索这种考虑未来的方式称为折现意味着未来的分数在今天看来不那么值钱。
策略网络更新损失函数 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)] L π ( θ ) L_{\pi}(\theta) Lπ(θ): 这是策略网络的损失函数用于更新策略网络的参数 θ \theta θ。 E s t ∼ D , a t ∼ π θ \mathbb{E}_{s_t \sim \mathcal{D}, a_t \sim \pi_{\theta}} Est∼D,at∼πθ: 这表示对经验回放缓冲区 D \mathcal{D} D中的状态s_t以及根据当前策略 π θ \pi_{\theta} πθ采取的动作 a t a_t at进行平均。 α log ( π θ ( a t ∣ s t ) ) \alpha \log(\pi_{\theta}(a_t|s_t)) αlog(πθ(at∣st)): 这是策略熵的加权值 α \alpha α是熵的权重系数。这个熵项鼓励策略多样性即鼓励策略产生更随机的动作。 Q ϕ ( s t , a t ) Q_{\phi}(s_t, a_t) Qϕ(st,at): 这是Q网络评估在状态s_t下采取动作 a t a_t at的价值。
上面提到的两个公式共同工作以优化智能体的行为但各自负责不同的部分 Q函数的损失函数 L Q ( ϕ ) L_Q(\phi) LQ(ϕ) 负责更新Q网络即学习评估在给定状态和动作下预期回报的函数。通过比较实际的回报包括立即奖励和折现后的未来奖励和Q网络的预测来调整网络以准确估计每个动作的价值。该过程涉及考虑策略的熵探索性确保智能体在追求高回报的同时也会考虑到策略的多样性。 策略网络的损失函数 L π ( θ ) L_{\pi}(\theta) Lπ(θ) 负责优化策略网络即决定智能体在每个状态下应采取的最佳动作。强调在保持行动的高熵即多样性和探索性的同时选择预期回报最大化的动作。策略网络通过最小化该损失函数来学习如何在探索和利用之间取得平衡。 L Q ( ϕ ) L_Q(\phi) LQ(ϕ)确保了对动作价值的准确估计而 L π ( θ ) L_{\pi}(\theta) Lπ(θ)使智能体能够在探索多样动作的同时做出回报最大化的决策。两者共同作用使得智能体在复杂环境中能有效地学习和适应。
重参数化
SAC 策略通常由一个神经网络表示该网络输出动作的概率分布参数如高斯分布的均值和方差。
但采样是一个随机过程是不可导的。
那神经网络就不能用链式法则计算梯度。
一方面我们希望有随机性能探索更多新动作而不是一直用已知动作另一方面神经网络必须可导
比如控制一个机器人你可以按一个按钮来让机器人随机选择一个动作比如跳跃、蹲下、行走、奔跑。
这个随机选择的过程就像掷骰子你无法预测下一次会是什么也就是说从掷骰子这个动作本身你无法学到如何掷出你想要的数字。
在 SAC 算法中如果动作选择像掷骰子一样随机那它就无法直接从这个随机过程中学习因为随机过程是无法预测和控制的。
重参数化技巧就像是换了一个透明的骰子你可以看到里面的结构和机制这样就能预测和控制骰子的结果。
不是直接让机器人随机选择动作而是让机器人从一个固定的噪声源就像是一个可预测的骰子中“计算”出它的动作。
这样一来即使动作看起来是随机的但实际上是由一个可以学习和优化的过程决定的。
这使得训练过程既能包含随机性对探索很重要又能进行梯度下降优化对学习很重要。 L π ( θ ) E s t ∼ D , a t ∼ π θ [ α log ( π θ ( a t ∣ s t ) ) − min j 1 , 2 Q ϕ j ( s t , f θ ( ϵ t ; s t ) ⏟ reparameterization ) ] L_{\pi}(\theta)\mathbb{E}_{s_{t}\sim\mathcal{D},a_{t}\sim\pi_{\theta}}[\alpha\log(\pi_{\theta}(a_{t}|s_{t}))-\min_{j1,2}Q_{\phi_{j}}(s_{t},\underbrace{f_{\theta}(\epsilon_{t};s_{t})}_{\text{reparameterization}})] Lπ(θ)Est∼D,at∼πθ[αlog(πθ(at∣st))−minj1,2Qϕj(st,reparameterization fθ(ϵt;st))]
传统采样是从高斯分布的方差和均值中抽一个具体的数值。
重参数化让高斯分布采样变成一个确定性变换。
熵正则化
在 SAC 算法中选取熵的系数非常重要。
不同状态需要不同大小的熵。
在未知最优动作时熵要大一些越明确最优动作熵要小一些。
为了让 SAC 自动调整熵就把目标函数变成一个带约束的优化问题 max π E π [ ∑ t r ( s t , a t ) ] s . t . E ( s t , a t ) ∼ ρ π [ − log ( π t ( a t ∣ s t ) ) ] ≥ H 0 \operatorname*{max}_{\pi}\mathbb{E}_{\pi}\left[\sum_{t}r(s_{t},a_{t})\right]\mathrm{s.t.~}\mathbb{E}_{(s_{t},a_{t})\sim\rho_{\pi}}[-\log(\pi_{t}(a_{t}|s_{t}))]\geq\mathcal{H}_{0} maxπEπ[∑tr(st,at)]s.t. E(st,at)∼ρπ[−log(πt(at∣st))]≥H0
化简 L ( α ) E s t ∼ D , a t ∼ π ( ⋅ ∣ s t ) [ − α log π ( a t ∣ s t ) − α H 0 ] L(\alpha)\mathbb{E}_{s_t\sim\mathcal{D},a_t\sim\pi(\cdot|s_t)}[-\alpha\log\pi(a_t|s_t)-\alpha\mathcal{H}_0] L(α)Est∼D,at∼π(⋅∣st)[−αlogπ(at∣st)−αH0] 算法步骤
软策略演算法Soft Actor-Critic简称SAC是一种基于演员-评论家框架的深度强化学习算法。它的核心目标是在探索和利用之间找到平衡通过引入熵作为奖励的一部分来鼓励探索。这里我将尝试通俗易懂地介绍SAC算法的主要步骤和推导过程。
1. 熵加权奖励
在SAC中策略的目标是最大化预期奖励和熵。熵是一个衡量策略随机性的度量高熵意味着高随机性。这导致算法在学习期间更多地探索。
2. 软值函数更新
SAC算法使用两种值函数软状态值函数 和软动作值函数 。软值函数的更新规则通过Bellman方程来定义但增加了熵项。
3. 策略改进
在SAC中策略是通过最大化软Q函数来改进的。这意味着策略不仅试图选择高奖励的动作还试图选择熵高的动作。策略通常使用神经网络来参数化并通过梯度上升来更新。
4. 双重Q网络和目标网络
为了稳定学习SAC通常使用双重Q网络来减少过度估计并使用目标网络来提供稳定的目标。这些技巧类似于DQN算法中的应用。
5. 自适应熵系数调整
SAC算法通常包括一种机制来自适应地调整熵系数 α \alpha α以便在不同的学习阶段保持合适的探索级别。
6. 算法流程
初始化网络策略网络 π \pi π两个Q网络 Q 1 , Q 2 Q_1, Q_2 Q1,Q2 和它们的目标网络。采集数据使用当前策略在环境中采集数据。更新Q网络根据软Bellman方程更新Q网络。更新策略网络通过最大化软Q值更新策略网络。调整熵系数如果需要调整熵系数 α \alpha α。更新目标网络定期用Q网络的权重来更新目标网络。 代码实现
论文作者https://github.com/rail-berkeley/softlearning
OpenAIhttps://github.com/openai/spinningup