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

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

蒙特卡罗采样学习方法
- 蒙特卡罗方法:随机游走采集样本,估计
,根据Q去改进策略 : 依概率选择 - 同策略和异策略:采样与改进策略相同为同策略
- 需要拿到完整的轨迹才能对策略评估更新模型,效率较低
模型无关的强化学习
也称为无模型的强化学习。蒙特卡罗方法:
在不知
、 的情况下, 需要智能体和环境进行交互,并且收集一些样本。然后根据这些样本去求解马尔可夫决策过程最优策略
Q函数
模型未知,Q函数可以通过采样来计算。
1. 蒙特卡罗方法
1、从状态
2、得到N个轨迹
3、利用轨迹的总回报去估计出
4、基于
5、在新的策略下,再去采集样本、去估计Q,再去改进策略,直到收敛
2. 利用和探索
如果采用确定性策略
:
- 则每次试验得到的轨迹是一样的
- 只能计算出
,无法计算出 ,即无法计算出其它的 的Q函数 - 只对当前环境进行了利用,而没有探索
- 而试验的轨迹应该覆盖所有的状态和动作,以找到更好的策略
采用**
3. 同策略和异策略
- 同策略:采样策略
, 改进策略 , 相同 - 异策略:采样策略
, 改进策略 , 不同。可以使用重要性采样、重要性权重来优化
时序差分学习算法
总体思想
- 无需知道完整轨迹就能对策略进行评估。时序差分学习=蒙特卡罗+动态规划
- 贝尔曼估计轨迹的回报。
- 增量计算
。
蒙特卡罗方法需要拿到完整的轨迹,才能对策略进行评估。
时序差分学习(temporal-difference learning)结合了动态规划和蒙特卡罗方法。
1. 增量计算
蒙特卡罗方法:从状态
值函数
增量 :实际回报与估计回报直接的误差。
2. 贝尔曼方程估计
从
无需得到完整的轨迹去计算总回报,使用贝尔曼方程去估计第N次试验后面
使用N-1次实验后的
3. 两种算法
- SARSA:同策略。采样下一个动作:
,值函数更新 ,更新的Q是关于策略 的 - Q学习算法:直接选择最大的值函数
更新,更新的Q是关于策略 的。
4. 蒙特卡罗方法和时序差分方法比较
- 蒙特卡罗方法:需要完整路径才能知道总回报,不依赖马尔可夫性质
- 时序差分学习:只需要一步就能知道总回报,依赖于马尔可夫性质
5. 总结
贝尔曼估计总回报(马尔可夫性,动态规划)
增量更新值函数(蒙特卡罗)
SARSA算法
- 当前
, 奖励 , 新的 , 优化 - 贝尔曼估计实际奖励
: - 增量计算Q:
- 更新策略
: - SARAS:优化所有
直到收敛。对每一个 ,每一步状态转移,计算Q,直到s为终止状态
SARASState Action Reward State Action
算法,是一种同策略的时序差分学习算法。
1. 思想目的
要算出
- 当前状态和动作
- 得到的奖励
- 下一步的状态和动作
不断优化Q函数,减少实际值和预期值的差距。
2. 核心计算
结合增量计算
得到:
简单点:
3. SARSA算法步骤
输入:状态空间
输出:策略
1 初始化
随机初始化
2 计算所有
选择初始状态
a. 执行动作,得到新状态和新动作
- 当前状态
,动作 - 执行动作
:得到奖励 和新状态 - 选择新动作:
b. 增量计算
c. 更新策略
d. 状态前进

Q学习算法
- SARAS:
, 选择新状态 ,值函数 - Q:
,选择当前动作 , ,直接选择最大的值函数
SARAS是Q学习算法的一种改进。
1. SARAS
1、当前状态
2、执行动作
4、依概率选择新动作
5、更新Q函数
6、更新状态和动作:
2. Q学习
1、当前状态
2、执行动作
3、不依概率选择新动作,而是直接选择最大的值函数
4、更新Q函数
5、更新状态:

深度Q网络
Q网络
1. Q网络
参数为Q网络
。输入两个向量,输出为1个实数。
2. 两种逼近
学习一组参数
蒙特卡罗方法:
时序差分方法:
3. Q学习的目标函数
以Q学习为例,采用随机梯度下降来优化,目标函数(减小差距)如下:
一般,标记是一个标量,不包含参数;不依赖于网络参数,与网络独立。
两个问题:
- 实际目标值不稳定。参数学习的目标依赖于参数本身。label本身也包含参数
- 样本之间有很强的相关性
Deep Q Network
深度Q网络(deep Q-networks, DQN)
- 目标网络冻结。在一个时间段,固定目标值中的参数
- 经验回放。构建经验池来去除数据相关性
经验池
。最近的经历组成的数据集
带经验回放的DQN算法
带经验回放的深度Q网络。
1. 初始化经验池、Q网络参数、目标Q网络参数
- 经验池:
,容量为N - Q网络参数:
- 目标Q网络的参数:
2. 要让
每一次初始化起始状态为
3. 每一时刻
生成新数据加入经验池
1、状态
2、执行动作
3、
采经验池中采样一条数据计算
1、从
2、计算实际目标值
3、损失函数如下,梯度下降法去训练Q网络
状态前进
更新目标Q网络的参数
每隔C步更新:
4. DQN算法中经验池的优点
1、去除样本相关性,避免陷入局部最优
经验池中抽取样本代替当前样本进行训练,打破了与相邻训练样本的相关性,避免陷入局部最优。
2、经验回放类似于监督学习
s
总结
策略迭代
已知模型。利用贝尔曼方程(算均值
)迭代计算出
值迭代
已知模型。利用贝尔曼最优方程迭代算出
蒙特卡罗
未知模型。从
时序差分算法
无需知道完整轨迹就能对策略进行评估。
时序差分学习=动态规划-贝尔曼估计
贝尔曼估计轨迹总回报
增量计算
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步更新: