图解强化学习 |手算SAC算法

简介: SAC(Soft Actor-Critic)是最稳定、强大的连续动作强化学习算法,广泛应用于机器人控制与决策任务。其核心是最大熵强化学习:通过双Q网络抑制过估计,柔性策略网络增强探索,自适应温度系数α动态平衡利用与探索,兼顾最优性与鲁棒性。(239字)

  image.gif 编辑

SAC 算法的基础认识

SAC = Soft Actor-Critic(柔性演员 - 评论家算法)

SAC 是目前最稳、最强、最常用的连续动作强化学习算法 ,机器人、控制、决策任务几乎都用

它。它是一种经典的连续动作强化学习算法,其核心思想是在提高长期奖励的同时,增强策略的随

机探索能力。

image.gif 编辑


SAC的网络结构

5 个神经网络

Actor —— 策略网络,输出动作分布

Critic 1 —— 第一个 Q 评估网络

Critic 2 —— 第二个 Q 评估网络

Target Critic 1 —— 稳定用的 Q 目标网络

Target Critic 2 —— 另一个稳定用的 Q 目标网络

再加 1 个可学习参数:α (alpha) —— 控制探索强度

① Actor

输入:状态 s

输出:动作 a、动作的对数概率 log π(a|s)

( 输入 next_state 对应输出 next_action 和 next_log_prob, 输入 state 对应输出 new_action 和

log_prob)

② Critic 1 / Critic 2

输入:状态 s + 动作 a

输出:一个 Q 值(评估这个动作好不好)

③ Target Critic 1 / Target Critic 2

输入:下一状态 s' + 下一动作 a'

输出:目标 Q 值(用来训练 Critic)

image.gif 编辑

SAC = 1 个策略网络 + 2 个 Q 网络 + 1 个目标 Q 网络

最大特点:双 Critic 防止过估计,随机策略保证探索


网络更新

更新两个 Q 网络(Critic)

image.gif 编辑

动作概率加权: 代表下一状态的动作选择概率,以此为权重对各类动作价值加权平均。下一状态

价值无法由单一动作决定,加权计算才能贴合策略分布的真实期望。

双 Q 网络取最小值:双目标 Q 网络输出取最小值,用以抑制价值高估问题。单个网络易夸大动作

收益,造成训练波动;采用悲观取值思路,能让估值结果更平稳可靠。

熵正则约束:将策略熵纳入价值计算,落地最大熵学习思想。动作随机性越强,该项数值越大,在

目标值中扣除该项后,探索型策略会获得更高评分。以此督促模型兼顾收益最大化与探索能力,防

止算法陷入局部最优。

  SAC 以累积奖励与策略熵联合最大化为优化目标,兼顾决策最优性与环境探索性。借助熵正则

项引导价值网络偏好随机策略,平衡利用与探索,构成最大熵强化学习的核心思路。

image.gif 编辑

image.gif 编辑

image.gif 编辑

更新策略网络(Actor)

image.gif 编辑

其实和上面的公式一样两者目标都是为了最大化下面这个公式:

image.gif 编辑

动作的价值,越高越好,熵正则项,动作越随机,这一项越大,鼓励探索

image.gif 编辑

image.gif 编辑

image.gif 编辑

更新温度系数 α(自动调节探索)

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

软更新目标 Q 网络(Target Q)

image.gif 编辑


手动计算

已知条件

状态维度:8
动作数:4
gamma = 0.99
rho(tau) = 0.005
target_entropy = -2.0
alpha = 0.2

image.gif

state      = [0.1,0.2,-0.3,0.05,0.02,-0.01,0,0]
action     = 1
reward     = 5.0
next_state = [0.1,0.18,0.04,-0.28,0.02,-0.01,0,0]
done       = False (0)

image.gif

Actor 输出概率:

next_action_prob = [0.1, 0.6, 0.2, 0.1]
log_next_prob    = [-2.30, -0.51, -1.61, -2.30]

image.gif

目标 Q 网络输出:

target_q1 = [10, 20, 5, 8]
target_q2 = [11, 19, 4, 9]

image.gif

当前 Q 网络输出:

q1 = [12, 15, 8, 10]
q2 = [13, 14, 7, 11]

image.gif

更新 Q 网络

计算 target_q_min(双 Q 取最小)

target_q1 = [10, 20, 5, 8]
target_q2 = [11, 19, 4, 9]
target_q_min = [10, 19, 4, 8]

image.gif

计算熵项:alpha * log_next_prob

alpha * log_next_prob
= 0.2 * [-2.30, -0.51, -1.61, -2.30]
= [-0.46, -0.102, -0.322, -0.46]

image.gif

计算核心项:target_q_min - alpha * log_next_prob

target_q_min - alpha*log_next_prob
= [10,19,4,8] - [-0.46, -0.102, -0.322, -0.46]
= [10.46, 19.102, 4.322, 8.46]

image.gif

动作概率加权求和(求期望)

next_action_prob = [0.1, 0.6, 0.2, 0.1]
min_q_next_target
= 0.1*10.46  +  0.6*19.102  +  0.2*4.322  +  0.1*8.46
= 1.046 + 11.4612 + 0.8644 + 0.846
= 14.2176

image.gif

计算 TD Target(最终 Q 目标)

td_target = reward + (1-done) * gamma * min_q_next_target
= 5.0 + 1 * 0.99 * 14.2176
= 5.0 + 14.0754
= 19.0754

image.gif

计算 Q1、Q2 损失

q1(a=1) = 15
q2(a=1) = 14
td_target = 19.0754
q1_loss = (15 - 19.0754)² = (-4.0754)² = 16.609
q2_loss = (14 - 19.0754)² = (-5.0754)² = 25.760
总Q损失 = 16.609 + 25.760 = 42.369

image.gif

更新 Actor 策略网络

取当前状态的动作概率

action_prob = [0.1, 0.6, 0.2, 0.1]
log_prob    = [-2.3, -0.51, -1.6, -2.3]

image.gif

双 Q 取最小

q1 = [12,20,5,9]
q2 = [11,19,4,10]
min_q = [11, 19, 4, 9]

image.gif

计算 inside_term   alpha*log_prob - min_q

alpha*log_prob = [-0.46, -0.102, -0.32, -0.46]
inside_term = [-0.46, -0.102, -0.32, -0.46] - [11,19,4,9]
= [-11.46, -19.102, -4.32, -9.46]

image.gif

加权求和 → actor_loss

actor_loss = 0.1*(-11.46) + 0.6*(-19.102) + 0.2*(-4.32) + 0.1*(-9.46)
= -1.146 - 11.461 - 0.864 - 0.946
= -14.417

image.gif

自动更新温度系数 α

计算当前策略熵 H (π)

entropy = -sum( action_prob * log_prob )
action_prob * log_prob = -0.23 -0.306 -0.32 -0.23 = -1.086
entropy = 1.086

image.gif

计算 inside_term

inside_term = entropy - target_entropy
= 1.086 - (-2.0)
= 3.086

image.gif

计算 α 损失

alpha_loss = alpha * inside_term
= 0.2 * 3.086
= 0.6172

image.gif

软更新 Target Q 网络

target_param = tau * current_param + (1-tau) * target_param
tau = 0.005

image.gif

current_q1_weight = 2.0
target_q1_weight  = 1.9
new_target = 0.005*2.0 + 0.995*1.9
          = 0.01 + 1.8905
          = 1.9005

image.gif

TD目标值 = 19.0754
Q1 损失 = 16.609
Q2 损失 = 25.760
Actor 损失 = -14.417
α 损失 = 0.6172

image.gif

image.gif 编辑


目录
相关文章
|
5月前
|
机器学习/深度学习 算法 vr&ar
图解强化学习 |手算Actor-Critic
Actor-Critic是一种融合策略优化(Actor)与价值评估(Critic)的强化学习算法:Actor负责选动作,Critic实时打分(如TD误差),实现单步更新、低方差、高效率,兼顾离散/连续动作空间。(239字)
804 0
|
5月前
|
机器学习/深度学习 人工智能 算法
图解强化学习 |手算近端策略优化算法(PPO)
PPO(近端策略优化)是当前最主流的强化学习算法,以训练稳定、上手简单、泛化性强著称。它通过Actor-Critic双网络架构,结合PPO-Clip损失函数限制策略更新幅度,并利用GAE优势估计提升样本效率,广泛应用于游戏AI、机器人控制、大模型对齐等领域。
1426 3
|
5月前
|
机器学习/深度学习 存储 人工智能
图解人工智能的数学基础(线性代数)
本文系统讲解线性代数核心概念,涵盖向量(定义、几何/坐标表示、内积)、矩阵(含义、运算、秩、逆、相似、分解)、行列式(几何意义与变换关系)、线性方程组、特征值与特征向量、二次型、向量空间及范数等,强调其在AI与神经网络中的实际应用。
672 7
|
5月前
|
机器学习/深度学习 数据可视化 PyTorch
PyTorch深度学习实战 | 基于LSTM的时间序列预测任务
本文介绍了使用LSTM模型预测印度德里市平均温度的两个项目。项目1对温度数据进行归一化处理,采用滑动窗口法构建监督学习样本,设计5层LSTM网络结构,并详细说明了模型训练过程及评估方法。项目2在数据处理上增加了标准化和周期性特征,改进了网络架构,引入了学习率调整和早停机制优化训练过程。两个项目均通过可视化对比预测值和真实值,验证了LSTM模型在时间序列预测中的有效性。文章从数据处理、模型构建到训练优化,完整呈现了温度预测的实现流程,为时序预测任务提供了实用参考。
362 0
|
5月前
|
机器学习/深度学习 人工智能 PyTorch
PyTorch深度学习实战 | 人工智能项目从训练到部署
本项目基于LSTM模型对污水处理厂总曝气量(旧区+新区)进行时序预测。通过数据清洗、Min-Max归一化、滑动窗口构造(12小时输入→预测未来1小时),构建并训练轻量级LSTM模型,支持API部署与实时调用,已实现端到端预测流程及模型保存。
400 6
|
5月前
|
机器学习/深度学习 算法 自动驾驶
图解强化学习 |手算DDPG
DDPG(深度确定性策略梯度)是一种面向连续动作空间的Actor-Critic强化学习算法。它采用4网络结构(Actor/Critic及其对应目标网络),结合经验回放与软更新,通过确定性策略梯度优化策略,广泛应用于机器人控制、自动驾驶等场景。(239字)
498 1
|
5月前
|
机器学习/深度学习 PyTorch 测试技术
PyTorch深度学习实战 |多头注意力机制
摘要:本文详细介绍了Transformer中的多头自注意力机制,从整体结构到实现细节,包括四部分内容:(1)多头自注意力的基本架构;(2)内部计算流程解析;(3)注意力计算公式详解;(4)代码实现。重点阐述了多头并行的计算方式、缩放点积注意力的计算步骤(QK转置、缩放、softmax和加权求和),以及残差连接和层归一化的作用。通过"Are you OK?"示例展示了输入张量如何经过8个64维注意力头处理后拼接成512维输出。文章最后提供了完整的PyTorch实现代码,并附测试用例验证模型
379 0
|
5月前
|
机器学习/深度学习 PyTorch 算法框架/工具
PyTorch深度学习实战 |常见层 layer结构的实现和代码实战
本文介绍了PyTorch中常见的7种神经网络层结构及其输入输出逻辑。通过代码示例演示了全连接层(nn.Linear)、卷积层(nn.Conv2d)、LSTM层、GCN图卷积层和Transformer层的使用方法,重点讲解了各层的输入输出维度变换规则。文章以一张海绵宝宝图片为例,详细展示了图像数据的预处理流程,包括使用PIL和OpenCV两种方法读取图片并转换为PyTorch张量的过程。通过"代码+实战"的方式帮助读者理解神经网络层如何对特征进行维度变换,最终实现从原始输入到目标输出的映射
342 0
|
5月前
|
机器学习/深度学习 数据采集 存储
手算循环神经网络(RNN)和LSTM
本文介绍了循环神经网络(RNN)和长短期记忆网络(LSTM)的原理与PyTorch实现。主要内容包括: RNN基础:解释RNN处理序列数据的机制,展示输入/隐藏层维度关系,并通过"不好看"情感分析示例演示数据预处理和前向传播过程。 PyTorch实现:详细构建SimpleRNN类,包含RNN层和全连接层,实现正向传播、损失计算和参数更新完整流程。 LSTM原理:对比RNN的不足,说明LSTM通过输入门、遗忘门和输出门解决长序列梯度消失问题。 LSTM实践:修改RNN代码为SimpleLS
313 0
|
5月前
|
机器学习/深度学习 算法 机器人
图解强化学习 |手算马尔可夫随机过程
本节系统讲解马尔可夫过程(MP)、马尔可夫决策过程(MDP)与马尔可夫奖励过程(MRP)三大核心模型,涵盖马尔可夫性、状态空间、转移矩阵、策略、奖励函数、价值函数及贝尔曼方程,并介绍强化学习的有/无模型、值/策/Actor-Critic及on/off-policy等分类体系。(239字)
288 0

热门文章

最新文章