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

本文涉及的产品
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: 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 编辑


目录
相关文章
|
17小时前
|
机器学习/深度学习 存储 人工智能
图解人工智能的数学基础(线性代数)
本文系统讲解线性代数核心概念,涵盖向量(定义、几何/坐标表示、内积)、矩阵(含义、运算、秩、逆、相似、分解)、行列式(几何意义与变换关系)、线性方程组、特征值与特征向量、二次型、向量空间及范数等,强调其在AI与神经网络中的实际应用。
38 7
|
17小时前
|
机器学习/深度学习 人工智能 算法
图解强化学习 |手算近端策略优化算法(PPO)
PPO(近端策略优化)是当前最主流的强化学习算法,以训练稳定、上手简单、泛化性强著称。它通过Actor-Critic双网络架构,结合PPO-Clip损失函数限制策略更新幅度,并利用GAE优势估计提升样本效率,广泛应用于游戏AI、机器人控制、大模型对齐等领域。
36 3
|
云栖大会 开发者
收到阿里云【乘风者计划】博主证书和奖励
收到阿里云【乘风者计划】博主证书和奖励 2023年2月对我来说是一个很好的开端,因为我在1号就收到了阿里云寄给我的【乘风者计划】博主证书和奖励。好兆头啊! 我收到的是我获得的【技术博主】【星级博主】【专家博主】三个的奖品和证书,一快给我寄过来哒!
3276 2
收到阿里云【乘风者计划】博主证书和奖励
|
SQL 存储 弹性计算
Redis性能高30%,阿里云倚天ECS性能摸底和迁移实践
Redis在倚天ECS环境下与同规格的基于 x86 的 ECS 实例相比,Redis 部署在基于 Yitian 710 的 ECS 上可获得高达 30% 的吞吐量优势。成本方面基于倚天710的G8y实例售价比G7实例低23%,总性价比提高50%;按照相同算法,相对G8a,性价比为1.4倍左右。
|
3天前
|
弹性计算 前端开发 Ubuntu
阿里云服务器ECS的租用教程和简单的前端页面部署
本文详解阿里云学生福利领取(含300元卡券)及ECS轻量服务器选购与部署全流程:涵盖学生机免费申领、配置选型建议(Ubuntu/CentOS/Windows)、安全组设置、Nginx安装、网页部署及Xshell远程连接等实操步骤,新手友好。
159 8
|
1月前
|
人工智能 自然语言处理 JavaScript
OpenClaw 一键安装包使用方法与功能体验
OpenClaw一键安装包(v2.6.1)专为Windows 10/11设计,全程可视化操作,内置Python/Node.js等全部依赖,5分钟极速部署。无需命令行,新手友好,支持AI自动化办公与键鼠模拟,内置28万Tokens额度,开箱即用。(239字)
OpenClaw 一键安装包使用方法与功能体验
|
3月前
|
机器学习/深度学习 人工智能 物联网
烧显卡不烧钱:学生党个人开发者GPU选购指南,看完不再被割韭菜
本文为学生与个人开发者量身打造大模型微调硬件选购指南:解析LoRA/QLoRA等高效微调技术如何大幅降低显存需求,对比RTX 3060/3090/4090等显卡的显存、带宽、算力与性价比,提供2000–8000元梯度配置方案,并分享混合精度、梯度累积等显存优化技巧及云资源省钱策略。
|
1月前
|
机器学习/深度学习 人工智能 安全
桥梁裂缝检测数据集(4000张)|YOLO训练数据集 结构安全监测 自动巡检 无人机检测 小目标识别
本数据集含4000张真实桥梁图像,专为裂缝检测构建,适配YOLO等模型。覆盖多桥型、多环境、多尺度裂缝(含发丝级),标注精准、结构规范,支持自动巡检、无人机检测与小目标识别,助力桥梁结构安全智能监测。
|
1月前
|
人工智能 弹性计算 自然语言处理
阿里云学生算力包:大学生上云练手、做毕设、玩 AI 的全能方案
阿里云推出“学生算力包”,19元起享灵活按小时抵扣的云资源,支持一键部署AI简历、个人网站等实战项目;深度联动清华、浙大等数十所高校,提供课程、实训营与赛事支持,助力学生低成本入门AI开发与云实践。
338 9
|
6月前
|
人工智能 数据可视化 知识图谱
NanoBanana pro真的强嘛?我试了试结果...........【附带工具+Prompt双邪修玩法】
小阁带你体验Nano Banana Pro!1:1动漫转真人、老照片修复、文生图、漫画上色翻译……效果惊艳,中文理解超强。阁下AI全球首发集成该模型,打造AI创作新境界,一键生成爆款内容,重新定义你的生产力!