Dynamic programming, 动态规划
以下属于 Model-based 算法,其中 Model 指某个状态下执行某个行为后,获得的奖励概率
Value iteration
WARNING
这里的
- 初始化
向量,其表示每个状态的值 - 计算
对应的最优策略
对于每个状态- 计算每个行为的值
- 选取
最大的行为 - 得到该状态下的最优策略
- 计算每个行为的值
- 通过
和 计算新值 。因为使用贪婪策略,所以新值等于各状态下最大的 - 如果
低于设定阈值, 则表示收敛
Policy iteration
- 初始化策略
- Policy evaluation, PE
已知策略,代入贝尔曼方程,求解价值向量 - 矩阵求解:
(计算开销大) - 迭代求解: 先假定一个
, 再通过贝尔曼方程算出 , 如此迭代直至收敛
- 矩阵求解:
- Policy improvement, PI
计算对应的最优策略 ,同值迭代
Truncated policy iteration
对比 2 种迭代算法:
值迭代:
策略迭代:
其中
所以我们可以把
这个算法和策略迭代几乎一样,除了在
Monte Carlo, 蒙特卡洛
本节及其后均属于 Model-free 算法,即在不知道 Model 的情况下进行求解。
MC Basic
Model-free 的主要思想是把策略迭代中关于 Model 的部分移除。 在
采样表示让智能体与环境进行一次交互。在状态
每次交互可以看作一次探索,而
Exploring Starts
考虑从
- first-visit: 仅在第一次遇到
时估计 - every-visit: 每次遇到相同的
时估计
在每次迭代中,对
- 对于每个
,多次采样取均值,见 MC Basic - 对于每个
,只采样一次,但控制探索步数
由于使用贪婪策略,使得每次
epsilon-Greedy
为了突破 exploring starts 条件,可以采用
其中
这样可以保证在一次交互中,只要探索步数足够长,智能体就可以达到所有的
INFO
这里实际上将求解贝尔曼最优公式的目的从“从所有可能的策略中找到最优策略”变成“从所有可能的
Temporal-Difference, TD, 时序差分
所有 TD 算法都可以看作使用 随机近似 算法求解贝尔曼方程或贝尔曼最优方程,它们的更新公式都可以表示为:
其中
通过不断迭代更新, 将逐渐逼近 TD 目标
可以发现,随着时间步
TD, 估计状态价值
该算法用于求解在给定策略
使用 RM 算法逼近
从公式中可看出,要想对价值估计值
- 当前状态
- 及时奖励
- 下一个状态
于是通过采样得到
由于
Sarsa, 估计行为价值
该算法用于求解在给定策略
和 TD 一样,使用 RM 算法逼近
这种算法在
Expected Sarsa
该算法对应的贝尔曼期望方程为:
更新需要
-step Sarsa
该算法对应的贝尔曼期望方程为:
其中
其中
由公式可知,当
INFO
这里的
Q-learning, 估计最优行为价值
该算法并不求解给定策略
更新公式为:
INFO
RL 中有两种策略:
- behavior policy:用于从环境中采样数据
- target policy:被迭代优化的策略
由此分为两大类学习算法:
- on-policy:behavior policy 与 target policy 相同
即在每一次迭代中,用优化后的策略进行下一次采样。 - off-policy:behavior policy 与 target policy 不同
即用 behavior policy 采样的数据训练 target policy。
Q-learning 可以分为 on-policy 和 off-policy 两种版本。 由于 on-policy 版需要用 target policy 采样数据,要想保证探索性的话,就需要让 target policy 为
Value Function Approximation, VFA, 价值函数近似
基于表格的 TD 中,
VFA 基本思路
给定一个策略
由于
其中
要找到
由于
这个更新公式中的
Deep Q-learning, DQN
即 Deep Q-network
和 Q-learning 一样,该算法对最优策略下的行为价值进行估计:
则目标函数或损失函数为:
其中包含两个相同的神经网络:
参考 off-policy 版本的伪代码:
- 根据给定策略
进行采样,得到以 为元素的集合 ,其称为 replay buffer - 对目标网络进行迭代训练,每次迭代进行 MBGD:
- 从
中随机均匀地进行一些采样得到小批量样本集,对于每个样本 : - 使用目标网络计算
- 使用
更新主网络参数 ,以最小化损失值
- 使用目标网络计算
- 从
- 每迭代
次后,更新目标网络权重
INFO
在 基本思路 中提到
另一方面,因为
Policy Gradient, PG, 策略梯度
即 Policy Function Approximation,策略函数近似
像 VFA 一样,我们也可以用函数表示策略
Metric
在 VFA 基本思路 中提到每个策略
其中
也可以使用奖励的加权平均作为优劣指标,它也表示从任意状态出发走无数步后获得的平均奖励:
当
Metric 梯度
对于
该式在不同指标间存在一些差异
令
把梯度写成期望值的形式,就可以使用 SGD 进行优化。对于这个公式,需要保证
其中
PG 参数更新
为了找到
由于
- 使用 MC 估计,则得到 REINFORCE 算法
- 使用 TD 估计,则得到 Actor-Critic-* 算法
无论哪种估计方法,都需要先采样,这就涉及到
对更新公式进一步转化:
这表明更新公式实际上是在更新
REINFORCE
在每次迭代中:
- 选择初始状态
,使用 进行采样,对于每个样本 : - 计算
为折扣奖励总和 - 更新
- 计算
- 将最后一次
赋给
Actor-Critic, AC
Actor 表示通过 PG 进行策略更新,Critic 表示用结合 VFA 的 TD 进行价值估计。
Q actor-critic, QAC
使用 Sarsa 进行价值估计。在 Critic 阶段进行价值函数参数更新:
在 Actor 阶段进行策略函数参数更新:
Advantage actor-critic, A2C
向策略函数参数梯度公式中引入偏置量:
代入参数更新公式:
其中
其中分子部分表示对数据的充分利用,相比之前的绝对行为价值
结合 TD 得到具体更新公式,其中
off-policy actor-critic
由于
由于 behavior policy
Importance Sampling
对于 off-policy 算法,需要引入 importance sampling,即在更新参数时,使用旧策略的采样结果来估计新策略的期望。
由此得到
其中步长的分母
Deterministic actor-critic, DPG
之前选择行为的概率都满足
其中
如果要把该算法改成 on-policy,即使用 target policy
该算法还涉及