news 2026/7/5 4:05:21

深度强化学习

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深度强化学习

【王树森】深度强化学习(DRL)_哔哩哔哩_bilibili

1.1基本概念

大写字母表示变量,小写字母表示观测值

数学概念

概率密度函数PDF

概率密度函数性质——概率的积分或求和为1

期望Expectation p为概率密度函数 f为取值

随机抽样 Random Sampling

强化学习中的随机性

动作随机性:给出当前的state ,policy随机抽样得到action。

状态转移的随机性 :给出当前的state和action 环境根据状态转移函数(根据当前的s 和a 得到一个状态转移的概率,随机抽样决定下一个state。)

专业术语

状态state

智能体agent

ploicy Π: 观测到当前状态,做出决策,让agent做什么动作。其实是一个概率密度函数,根据当前的状态,会有一个包含各个动作的概率密度函数,分为确定性策略和随机性策略。下图为随机性策略,包含不同的动作,最后通过随机抽样选择一个执行的动作。

奖励Reward

状态专转移 state transition 会有一个状态转移函数,环境根据这个函数做出改变,具有随机性

轨迹trajectory

交互过程

奖励Rewards

回报Return:包含未来的所有奖励。通常采用discounted return折扣回报 设置一个折扣率调整未来的奖励重要性。

奖励Ri依赖Si和Ai,故Ut也跟未来的状态以及动作有关。回报Return的随机性来源就是未来所有的动作和状态

动作价值函数Action-Value Function Q(s,a)

由于Ut是随机变量,其依赖未来的state和reward 所以当前时刻不知道当前的Ut

故引出Q 对未来的A和S求期望 ,把所有未来随机性平均掉。用于评估当前的状态下动作的好坏。

QΠ只跟当前的st和at有关,未来的都被积分掉了。也跟当前的policyΠ有关,积分过程中会用到policyΠ,不同的Π得到的Q也不同。

最优动作价值函数:Optimal action-value Function 去掉QΠ中的Π 求最大的Qmax

状态价值函数:Stat-value Function 对A求期望,消除动作变量,只和状态有关。下图为离散和连续的期望过程

跟Π和State有关,给当前的状态打分

两种方法控制agent选择动作

根据Π选取动作

根据最优动作价值函数选择分数最高的动作

强化学习最终就是学到一个Π或Q⭐

1.2价值学习

用一个神经网络近似Q⭐。用TD算法更新网络参数

DQN

把Q⭐当作一个先知,他会告诉你每个动作的平均回报,选择执行分数最高的动作

用神经网络DQN Q(s,a,w)近似Q⭐(s,a)

Q(s,a,w) 输入当前状态s,输出所有动作打分, w是神经网络参数,优化该参数使其打分更准

执行过程 主要用到Q选动作,状态转移函数选下一个状态

Temporal Difference Learning (TD)

通过TD算法训练DQN,让他打分更准确

例1起点到终点 完整运行一次。更新一次w (蒙特卡洛)

目标最小化损失函数L

损失函数L为什么这么写:

  • 误差越大惩罚越强,平滑梯度平方是二次凸函数:误差小时梯度平缓、微调权重;误差大时梯度放大,快速修正严重偏差;全程连续可导,适合梯度下降。

  • 求导化简,消除系数 2(加 1/2 的目的)损失求导:如果不加1/2,导数会多出系数 2,训练时多一层常数计算,加1/2直接简化梯度表达式,代码更简洁。

梯度是损失函数 L 在当前参数点的上升最快方向

  • 梯度指向:往这个方向改 w,误差 L 会变大
  • 梯度反方向:往这个方向改w,误差 L 会变小
  • 故用梯度下降更新参数w,a为学习率

例2起点开始,没有走到终点,只走了一小段到DC停止。如何用这段来更新参数w (TD算法)

TD 算法 即使不跑完全程也能更新参数,让预测更准

到了DC再预测剩余路程的时间为600 ,加上起点到DC的实际时间300 用900来更新参数

可以推出原来起点到DC的预测时间为400 得到TD errorTD算法的目标就是让TD error接近0

TD learning + DQN

在DQN更新中也要用类似的路程公式 如下图

公式推导:

训练过程:目标让Loss变小

Summary

TD算法更新DQN过程

1.3策略学习

用Policy神经网络Π( a | s ; θ )近似Π(s,a)。用策略梯度更新参数θ

Policy Function Π(a|s)

Policy Network Π( a | s ; θ )

输出的所有动作的概率求和必须为1 , 必须包含所有动作

状态价值函数的近似

Policy Gradient 策略梯度

策略学习的思想:V(s; θ)可以评价状态和策略网络的好坏。学习θ让J(θ)变大 用policy gradient ascent 用梯度上升来更新θ

策略梯度计算 假设QΠ不依赖θ 但是实际Π还是和θ有关,只是简化推导

从紫色字推导

离散情况:对函数的期望=对概率X函数的求和

最后得到策略梯度的两种形式 两种等价

策略梯度的计算

离散动作

连续动作

蒙特卡洛近似:g(a顶,θ) 是策略梯度的无偏估计,故用它来近似策略梯度

  • 高斯分布 = 动作的概率规则(从这里抽动作);
  • 蒙特卡洛 = 利用抽取到的样本去估算梯度期望的数学方法。

Summary

但是3中QΠ不知道

有两种方法来近似QΠ

Reinforce用观测到的ut来近似QΠ 需要完成一局游戏拿到所有奖励才能更新参数

最基础的蒙特卡洛策略梯度算法:

  • 逐步蒙特卡洛采样 每一步从策略分布抽动作,算出对数梯度并缓存,目的是近似梯度期望;单步仅存数据,无更新操作。
  • 蒙特卡洛回报Ut需要完整一局所有奖励折现求和,只有轨迹终止后才能算出;REINFORCE 只用它作为Qt计算梯度g,这是该算法独有的特点。
  • 整体流程串联 边走边采样存梯度 → 对局结束算出全部Ut → 梯度 ×Ut得到g → 统一梯度上升更新策略网络。

神经网络来近似QΠ 即 A C 方法 具体内容见 1.4一步一更新

1.4Actor-Critic Method

基本概念

训练

训练步骤

Value network q (TD)

TD

policy network Π(policy gradient)

更新流程

Summary

如果使用baseline 就不用qt了

1.5AIphaGo

2.1蒙特卡洛

计算Π

、蒙特卡洛近似求积分也是重要的应用

蒙特卡洛近似期望

根据概率分布抽样,不再是随机抽样,高斯分布这些都有现成的抽样函数

2.2随机排列

均匀随机排列

任何一个元素出现在n个位置上的概率都是1/n

另一种定义:任何一个位置上出现n个元素中的一个的概率都是1/n

Fisher-Yates Shuffle

Original Version

目标对元素均匀随机排列--如扑克牌

随机数生成器:在指定区间内,每个数值被抽取到的概率完全相等

  • 准备原始数组(所有牌)+ 全新空数组两块存储空间;
  • 均匀随机生成器,在「剩余未抽牌索引区间」均等抽一个下标 j;
  • 取出下标j对应的牌,放入空数组尾部;
  • 原始数组删掉这张牌,后面所有元素整体前移填补空位
  • 循环直到原始数组清空,新数组就是随机洗牌结果。

缺点

  • 时间复杂度 \(O(n^2)\),很慢每次删除元素都要把后面全部数据向前平移;平均每次移动 \(n/2\) 个元素,总操作平方级增长,牌越多越卡。
  • 必须额外开一块新内存空间复杂度 \(O(n)\),需要两倍存储存放原始 + 结果数组,内存开销大。

Modern Version

这个是倒序,抽到的放到最后一个位置

  • 设数组长度为 n,循环变量 i 从最后一位下标 (n-1)倒着走到 1;
  • 用均匀随机生成器,在区间 [0,i]生成随机下标 j(只在还没固定的元素里抽);
  • 交换数组arr[i]arr[j]
  • i 减 1,此时下标 i 及之后的元素已经完成洗牌,不再变动。

时间复杂度低,不需要额外内存

用处

均匀随机生成器是 RL 所有随机采样的底层工具;Fisher-Yates 原地洗牌主要用于经验回放池、离线数据集、多轨迹样本打乱,消除时序样本相关性,稳定网络训练。

3.1Sarsa算法(TDlearning-1)

Saras 是一种TD算法,可以用来学习动作价值函数QΠ

做蒙特卡洛近似

TDlearning的目标

Sarsa 查表方法

  • Q 表存储所有离散 (s,a) 价值,仅小规模离散场景可用;
  • 表格初始化全部置 0;
  • 每走一步交互,即时更新对应 (s,a) 格子;
  • 后续任意步骤查表,均使用此前所有步骤更新完成后的表格值。

通过查表取出来 QΠ(st,at)也能查出来

Sarsa:神经网络版本

不用 Q 表,用神经网络 (q(s,a;w)拟合动作价值 Q(s,a));输入状态、动作,输出单一路 Q 估值。

第一章就用的这种方法

单步 SARSA:1 个五元组((st,at,rt,s{t+1},a{t+1) 即可完成一次网络更新

Summary

3.2Q-learning算法(TD learning-2)

Q-learning是TD算法,用来学习最优动作价值函数Q⭐

Sarsa VS Q-Learning

TD Target的计算

对期望做蒙特卡洛近似,得到TD Target.通过一次环境交互完成蒙特卡洛单点采样,取出分布内一组观测样本rt st+1 然后代入公式替代期望

Q-Learning表格

找到对应的行,找到最大值,然后计算

仅更新当前交互的一组\(st,at)对应的表格格子:Q(st,at). Q(St+1,a)只用来辅助计算,不执行

Q-Learning神经网络--DQN

训练DQN最常用的算法就是Q-Learning

被更新的对象:整套网络所有权重参数w

Summary

3.3Multi-Step TD Target(TDlearning-3)

如上图,两种TDTarget 只包含一个rt.

这种叫one step TDTarget如下图

下一次用rt+1来更新

其实可以用多个r来计算TD Target如下图

多步TD Target数学推导:

由Ut可以推出TD Target 的公式

一步VS多步

4.1经验回访(价值学习高级技巧-1)

回顾TD算法

用完之后,这个四元组就会丢掉

经验回放概念

传统的,会造成经验浪费

之前按顺序使用四元组transition,前后相关性太强,不利与训练.如果能把序列打散,消除相关性,会更好训练DQN

经验回放

设置了一个Repaly Buffer

TD with Experience Replay

从经验池里随机抽一个四元组,用来计算TDTarget,来训练网络:rt就是回放池里存好的历史旧值,如此类推。

优点:

打破序列的相关性

能够重复利用过去的经验

实验中可能抽取多个四元组,算出多个梯度,用平均梯度更新网络

优先经验回放Prioritized Experience Replay

用非均匀抽样代替均匀抽样

Buffer有许多transitions ,但是重要性却不一样

可以用TD error的绝对值判断重要性,越大,越重要,应该给更高的优先级

两种不同的抽样方法

调整学习率,抵消不同抽样概率造成的偏差

如果一条transition有较大的抽样概率,那么设置他的学习率较低

是一个超参数,需要自己调参,初始调低,慢慢变成1

为了做优先经验回放,对每一条的transition 标记TDerrot

还没有用过的,给最高优先,使用后更新,就有了新的权重

Summary

4.2高估问题、Target Network、Double DQN(价值学习高级技巧-2)

高估的产生

自举,在RL中,用一个估算去更新同类的估算

yt里有DQN的估计值,然后用包含yt的公式更新DQN---这就是自举

问题会产生高估

会有累计高估,如果当前的DQN已经高估,用这个去更新会更加高估,会高估下一状态真实最优价值

最大化高估的数学解释

DQN中

另一个原因自举

为什么会高估--会产生一个正反馈,一旦出现高估,就会原来越高估

高估的害处

均匀的高估不会影响最优动作价值函数选择最优动作,但是不均匀的高估会影响DQN的准确性

解决办法-Target Network

在一定程度上避免自举

Target Network的参数需要隔一段时间更新一次

比较两种方法,原始的和Target Network 计算TD Target 时候不同.但是无法消除,依赖DQN参数无法独立DQN,以及最大化操作也不可避免

解决办法-Double DQN

原始DQN-严重高估

Target Network--高估还是挺严重

Double DQN--三种最好的,但是高估仍然存在 可以缓解最大化造成的高估

Summary

4.3Dueling Network(价值学习高级技巧-3)

讲述在DQN上的使用

Advantage Function优势函数

将V⭐作为Baseline A⭐表示动作a的相对于Baseline的优势

定理一直接给出

最后一项很重要

Dueling Network

这节课的内容如下:

用神经网络近似

Dueling Network 和DQN的输入输出完全一样

5.1策略梯度中的Baseline(1)

5.2Reinforce with Baseline(2)

5.3A2C方法(3)

5.4Reinforce与A2C异同(4)

6.1离散控制与连续控制(连续控制1)

6.2确定策略梯度DPG(连续控制2)

6.3随机策略做连续控制(连续控制3)

7.1TRPO

8.1多智能体强化学习基本概念

8.2多智能体强化学习三种架构

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/5 4:04:08

BiliTools跨平台工具箱:如何优雅管理你的B站内容收藏

BiliTools跨平台工具箱:如何优雅管理你的B站内容收藏 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools 你…

作者头像 李华
网站建设 2026/7/5 4:02:35

AdaBoost 算法 sklearn 1.4.2 实战:鸢尾花分类准确率 98.5% 的 5 步调优

AdaBoost算法在sklearn 1.4.2中的实战调优:鸢尾花分类98.5%准确率达成指南鸢尾花分类是机器学习领域的经典案例,但如何将AdaBoost模型优化到接近完美的准确率?本文将带您深入scikit-learn 1.4.2版本中的AdaBoostClassifier,通过5个…

作者头像 李华
网站建设 2026/7/5 4:01:48

300元真无线耳机技术真相:为什么它成了性价比分水岭

1. 这不是在挑耳机,是在选“耳朵的第二层皮肤”“求一款性价比高的无线耳机?”——这句话我每天在数码论坛、社群、私信里看到不下二十遍。它背后藏着的,从来不是单纯问个型号,而是一连串没说出口的现实约束:预算卡在3…

作者头像 李华
网站建设 2026/7/5 4:00:23

如何快速恢复被遗忘的ZIP文件密码:专业数据解锁终极指南

如何快速恢复被遗忘的ZIP文件密码:专业数据解锁终极指南 【免费下载链接】bkcrack Crack legacy zip encryption with Biham and Kochers known plaintext attack. 项目地址: https://gitcode.com/gh_mirrors/bk/bkcrack 忘记ZIP文件密码是许多用户面临的常见…

作者头像 李华
网站建设 2026/7/5 3:59:22

codex CLI使用技巧

文章为个人辛苦整理,已加入原创侵权保护,禁止私自转载。 文章所在专栏:《黑猫的AI工具箱》 1 为什么建议用CLI 做嵌入式开发,linux环境下编译代码。通过Samba/UNC虽然映射到Windows上。但通过codex应用访问代码,还是容…

作者头像 李华