- 强化学习基于值函数的学习方法。
- 最重要的是SARSA、Q学习、DQN。但是这些都依赖于前面的动态规划和蒙特卡罗方法。
值函数的学习方法
- 穷举所有策略选择最好策略(没用)
- 迭代优化策略,根据策略的值函数去优化策略 (重点)
- 动态规划(已知状态转移概率
和奖励函数 ) - 蒙特卡罗方法(不知模型),先采一些样本,再优化
- 时序差分学习算法:SARAS和Q学习
- 深度Q网络
值函数(
1. 穷举策略法 (无用)
- 如果策略有限,可以对所有策略进行评估,选出最优策略
- 缺点:实际策略空间
非常大,根本无法搜索。
2. 迭代优化策略法 (重点
)
核心步骤
- 随机初始化一个策略
- 计算该策略的值函数:
动态规划
、蒙特卡罗
等方法 - 根据值函数来设置新的策略
例子
- 给一个初始策略
,根据 去不断迭代去优化,直到收敛。 - 得到新策略函数
(确定性策略) - 新策略的值函数会
不断变大
:
- 给一个初始策略
动态规划算法
总体思想
1. 动态规划思想
- 已知环境模型:
状态转移概率
和 奖励
- 迭代计算值函数:通过贝尔曼或贝尔曼最优方程,先算
,再算 - 通过值函数来优化策略:一般为优化为固定策略
2. 两种方法
策略迭代算法
- 有策略,
均等初始化策略
,贝尔曼方程
迭代计算V函数(均值
) - 再计算Q函数,依Q更新策略
- 有策略,
值迭代算法
- 无策略,直接优化V函数,
均0初始化V函数
,贝尔曼最优方程
迭代计算V函数(最大a
) 直到V函数收敛
,再计算Q函数,依Q更新策略
- 无策略,直接优化V函数,
3. 缺点
- 要求模型已知:
、 - 效率太低:状态动作数量太多时,无法计算,如棋盘361个位置、每位置3种状态,则棋盘状态有
个,无法计算 - 可以通过神经网络来近似计算值函数
策略迭代算法
核心思想
- 显式维护和更新策略,通过
策略评估
和策略改进
2个步骤来完成1次更新。 - 给定策略
(初始随机), - 使用
贝尔曼方程(所有a求期望)
来算出该策略下各状态的价值函数
- 再算出
来 更新策略
- 使用
关键步骤
- 均等概率初始化策略
- 使用
贝尔曼方程
迭代计算该策略各状态s的价值函数
,所有a求均值
- 利用
计算 函数
- 根据
更新策略 ,选择最好的动作a,更新为固定策略,最终输出策略

价值迭代算法
核心思想
- 无需策略,通过
贝尔曼最优方程
,直接迭代更新直到其收敛
,收敛后再算和 收敛时的值函数
就是最优值函数
,对应的策略
是 最优的策略
关键步骤
- 均0初始化值
函数
无需策略
,使用贝尔曼最优方程
迭代计算, 直到其收敛
。每次迭代
,选择最大化当前价值的动作
- 收敛后,利用值
计算 函数
- 最后,根据
更新策略 ,选择最好动作a, 最终输出策略

蒙特卡罗采样方法
模型无关的强化学习
采样学习方法
1. 背景
- 智能体和环境交互
采集一些样本
,根据样本期望来估计Q函数
,求解最优策略 模型未知
,不知, 通过采样来计算
2. 方法步骤
- 从状态
,动作 开始随机游走探索环境, 采集N个样本/轨迹
,得到轨迹总回报
利用轨迹总回报去估计
- 也可
增量计算
,不用每次计算平均值。
- 基于
改进策略
, 贪心法
鼓励探索和利用。 - 在新策略下,再去
采集样本
、估计Q
、改进策略
,直到收敛
3. 缺点
依赖每条轨迹的真实回报
, 需每个轨迹完成以后
(回合结束),才能算出真实回报
,再利用回报去更新价值函数。- 在回合结束之前,价值函数的估计不会发生改变,
学习效率较低
,不适用于长序列任务
。
增量计算Q回报
背景
- 需拿到所有轨迹的回报后平均,才能算出Q值,效率低。原始公式
增接迭代计算回报(Q值)
第N次后的平均(Q值)
=第N-1次后的平均(Q值)
+第N次的1个增量
增量(蒙特卡洛误差)
=轨迹真实回报
-期望回报
- 具体推导过程
- 符号定义
:N-1次实验(轨迹)后的Q函数值 :N次实验(轨迹)后的Q函数值 :第i条轨迹/第i次实验的真实回报
优点
每采样一个新轨迹
, 就可以更新
无需拿到所有轨迹的回报后
才计算Q值,而为增量迭代计算
利用和探索
1. 利用和探索
- 试验轨迹
应覆盖所有状态和动作
,以找到更好的策略 - 采用
贪心法 👏, 少数情况下随机选择动作
,鼓励对环境进行探索
- 如用纯贪心法 ,则
没有探索
,只对环境进行利用- 每次试验得到的轨迹是一样的
- 只能算出
,无法计算出 ,即无法计算出其它动作 的Q函数
2. 同策略和异策略
同策略(on-policy) (普通MC)
- 环境交互的
行为(采样)策略
,和评估价值的目标(改进)策略
,相同
,都是。
- 环境交互的
异策略(off-policy)
- 采样策略是
, 优化的目标策略是 ,采样和改进策略 不同
。
- 采样策略是
我们希望:行为策略能尽可能
探索环境
,目标策略直接利用已有经验
选取最佳策略。
3. 重要性采样
思想:通过在一个分布上采样,来估计另一个分布下的期望值。
RL:
- 用策略
生成数据
,来估计策略的 价值函数
,实现off-policy - 为每个
的轨迹回报,赋予 重要性采样权重
,弥补矫正2个策略的差异 - 从而实现用
一个策略的数据
来估计另一个策略的价值函数
- 用策略
: 重要性采样权重
时序差分学习算法
总体思想
时序差分学习
=蒙特卡罗
+动态规划
,无需知道完整轨迹就能对策略进行评估。蒙特卡罗增量计算价值函数
:贝尔曼估计轨迹回报
:
- 动态规划:
效率低
,状态动作数量多,难以计算 - 蒙特卡罗:
效率低
,需拿到完整轨迹才能对策略进行评估和更新 - 时序差分(TD)
- 对
蒙特卡罗的改进
,引入动态规划来提高效率
- 模拟一段轨迹,每行动一步或几步,就利用贝尔曼方程来评估行动前状态的价值
- 对
时序差分学习
(temporal-difference learning)结合了动态规划
和 蒙特卡罗
方法。
1. 改进蒙特卡罗 增量计算
第N次后的Q值
=第N-1次后的Q值
+1个增量
增量
是第N条轨迹实际回报和预测回报的误差
,是一个较小的权值
- 依赖:
每条轨迹的真实回报
2. 利用贝尔曼估计轨迹回报
- 无需完整轨迹,利用⭐Q函数贝尔曼方程动态规划,来
估计完整轨迹回报
- 从
开始,采样 下一步状态动作
并 得到奖励
, 即可估计轨迹回报
- ⭐用
当前
,去估计 当前轨迹未来
的 总回报
‼️
3. 总结
贝尔曼估计总回报
(马尔可夫性,动态规划)
增量更新值函数
(蒙特卡罗)
1. 两种算法
- SARSA:同策略。采样动作
和值函数更新 ,都关于同一个策略 - Q学习:直接选择最大的值函数
更新,更新的Q是关于策略 的。
2. 蒙特卡罗方法和时序差分方法比较
- 蒙特卡罗方法:
需完整路径
才能知道总回报,不依赖马尔可夫性质 - 时序差分学习:
只需一步
就能知道总回报,依赖于马尔可夫性质
SARSA算法
- 当前
, 奖励 , 新的 , 优化 - 贝尔曼估计实际奖励
: - 增量计算Q:
- 更新策略
: - SARAS:优化所有
直到收敛。对每一个 ,每一步状态转移,计算Q,直到s为终止状态
SARASState Action Reward State Action
,一种同策略
的时序差分学习算法。
1. 核心思想
蒙特卡罗
增量计算Q函数
,其中轨迹回报
用贝尔曼估计来计算
⭐不断优化Q函数,
减少实际值和预期值的差距
,通过下面3项来更新当前状态动作
:奖励
:下一步状态动作
:
2. 核心推导
增量计算价值函数
贝尔曼方程估计轨迹回报
- 得到最终
Q函数更新方程
⭐
- 本质:蒙特卡罗
增量计算Q函数
,其中轨迹回报
用贝尔曼估计来计算
⭐
3. SARSA 算法步骤
随机初始化策略
, 不断迭代直到
收敛
,进行以下迭代- 确定初始状态动作
,不断执行以下流程,直到 为终止态 执行动作
:得到 奖励
和 新状态
- 在
新状态
: 依概率选择新动作
更新Q函数
:更新策略
: 状态前进
:

Q学习算法
核心思想
- 整体和SARAS类似,区别:
不通过
来选下一步动作a,而是 直接选择最优的Q函数
更新后的Q函数
是关于的,而非 ,是一种 异策略的TD算法
核心推导
- Q函数推导公式
直接选择最大的Q函数
,不用依概率选择a对应的Q
核心流程
- 在状态
,选择动作 执行动作
:得到 奖励
和 新状态
- 在
新状态
: 不依概率选择新动作
,而是直接选择最优的Q函数
- s状态前进
,直到s为终止态

DQN 算法
Q网络
1. 背景
- 在
连续的状态动作空间
里计算值函数,
2. 核心思想
- 使用
神经网络参数
来 近似逼近值函数
是 状态动作 的 向量表示
。
- 若是蒙特卡罗方法,参数逼近
平均总回报
- 若是SARAS算法,参数逼近
贝尔曼方程估计的轨迹回报
- 若是Q学习算法,参数逼近
贝尔曼最优方程估计的轨迹回报
3. Q网络的目标函数(以Q学习为例)
- 以Q学习为例,采用SGD来优化,目标函数如下:
DQN
1. 背景
- Q网络存在2个问题
- 实际目标值不稳定:
参数学习的目标依赖于参数本身
。label本身也包含参数 - 样本之间有很强的相关性
- 实际目标值不稳定:
2. DQN(Deep Q Networks)
- 两个方法
目标网络冻结
:在一个时间段内,固定目标中的参数经验回放
:- 构建经验池(最近经历的数据)来去除相关性
- 训练时,随机从经验池中抽取样本来代替当前样本进行训练,打破和相邻样本的相似性,避免局部最优
- 类似于监督学习,先收集样本,再在样本上训练
3. DQN的训练过程
初始化
经验池
、容量为N, Q网络参数
, 目标Q网络参数
初始化
,执行以下流程,直到 为终止态;目标是让 都收敛, 采样动作状态加入经验池
- 在状态
, 选择执行动作
,得到奖励 、新环境状态 - 把
加入经验池
- 在状态
从
中 采样一条数据
,。 (去除样本相关性) 计算实际目标值
(解决目标值不稳定的问题)
- 再
计算损失函数
,梯度下降法去训练Q网络
状态前进
更新目标Q网络的参数 每隔C步更新:

总结
策略迭代
已知模型。利用贝尔曼方程(算均值
)迭代计算出
值迭代
已知模型。利用贝尔曼最优方程迭代算出
蒙特卡罗
未知模型。从
时序差分算法
无需知道完整轨迹就能对策略进行评估。
时序差分学习=动态规划-贝尔曼估计
贝尔曼估计轨迹总回报
增量计算
SARSA
同策略的时序差分算法,是Q学习的改进。
1、当前状态
2、执行动作
4、依概率选择新动作
5、更新Q函数
6、更新状态和动作:
Q学习
1、当前状态
2、执行动作
3、不依概率选择新动作,而是直接选择最大的值函数
4、更新Q函数
5、更新状态:
Q网络
使用神经网络
DQN
深度Q网络:
- 目标网络冻结-稳定目标值。
训练网络, 目标值网络。定期更新参数 - 经验池的经验回放-去除样本相关性- 每次采集一条数据放入经验池,再从经验池取数据进行训练。
生成新数据加入经验池
1、状态
2、执行动作
3、
采经验池中采样一条数据计算
1、从
2、计算实际目标值
3、损失函数
如下,梯度下降法去训练Q网络
状态前进
更新目标Q网络的参数
每隔C步更新: