强化学习演进史

  • Post author:
  • Post category:其他


本文主要是pinard老师的系列笔记 详细请参考系列文章:

https://www.cnblogs.com/pinard/p/9385570.html


一年多前看这一系列的文章时 对这种一步一步改进的过程感受挺深。 所以这篇笔记中,一起去看看得到的东西缺点在哪里, 以及针对这种缺点的改进版是怎样。仅供复习吧,有错误欢迎指正 谢谢。

最开始时 是想整理一个思维导图的, 但是觉得导图文字要比较精简;最后用了个ppt:


附件: https://download.csdn.net/download/anthea_luo/13117989



机器学习可分三类: 监督学习/无监督学习/强化学习, 强化学习训练数据没有标签,评价标准是奖励值大小, 且奖励值不是事先准备好喂入网络, 而是延后处理的。

强化学习 可以与环境交互后,依据交互结果奖励值学习。(交互的意思是 拿当前数据去神经网络或实现类似功能的模型中 模拟计算一把并得到返回结果) 也可以不与环境交互(model-based),或部分与环境交互学习(比如Dyna)

强化学习 大体分三类 value-based/policy-based/model-based

强化学习常用于(包括不限于)游戏/机器人/自动驾驶/推荐等需要决策的场景 其目标 主要有 求解控制/求解预测  也就是求解下一步怎么走/这样走好不好


好吧 一般开始强化学习之旅 绕不开那些个要素概念的铺路 我也没有创新:

如下是简化版:

1 环境的状态S: t时刻环境的状态
$S_t$
是它的环境状态集中某一个状态。

2 个体的动作A: t时刻个体采取的动作
$A_t$
是它的动作集中某一个动作。
$\pi(a|s) = P(A_t=a | S_t=s)$

3 环境的奖励R: t时刻个体在状态
$S_t$
采取的动作
$A_t$
对应的奖励
$R_{t+1}$
会在t+1时刻得到。

4 个体的策略(policy)π: 它代表个体采取动作的依据,即个体会依据策略π来选择动作。策略常用条件概率分布
$\pi(a|s)$
表示, 即在状态s时采取动作a的概率。即
$\pi(a|s) = P(A_t=a | S_t=s)$
.此时概率大的动作被个体选择的概率较高。

5 个体在策略π和状态s时,采取行动后的价值(value): 一般用vπ(s)表示。这个价值一般是一个期望函数, 因为价值要综合考虑当前的延时奖励和后续的延时奖励。
$$v_{\pi}(s) = \mathbb{E}_{\pi}(R_{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3}+...|S_t=s)$$


另外,关于容易混淆的 这几个概念: 奖励R /g(t)   收获r   价值v  可以看看:

https://zhuanlan.zhihu.com/p/57117940


奖励reward:     即时的,每个状态下 执行action后 立即获得的评价性响应

收获return/Gt:  累计的,累计未来的reward

价值value:      全局的/统计学意义的,是我们希望通过采样进行估计和逼近的。

行为价值函数q: 一般与状态相关。

后两者十分相似:其相同不同点分别为:

相同:

都为 该步收获+下一状态价值,

不同:

q是 在某一状态下 某一行为或选定行为 的描述,

v是 某一状态的描述,包含了某一状态下 所有行为 的描述


一个状态的价值 可以用该状态下        所有行为的价值 来表达,

一个行为的价值 可以用该行为所能到达的后续状态的价值 来表达

状态的最优价值 等于该状态下的最优行为价值;

行为的最有价值 为该行为可能进入的所有后续状态的最优状态价值 加权得到

————————————————-

进入正题啦!

先看model_based

状态转化模型Pass′ 如果按照真实的环境转化过程看,转化到下一个状态s′的概率既与上一个状态s有关,还与上上个状态,以及上上上个状态有关。

其缺点是:依赖的东西太多啦! 如果不做马尔科夫假设,难以建模

改进: 引入MDP, 用动态规划 求解MDP

注意 MDP与马尔科夫链MC 不同点在于:MDP考虑了当前采取的动作带来的价值

首先 我们递推
$S_t$

$S_{t+1}
的关系
$$v_{\pi}(s) = \mathbb{E}_{\pi}(R_{t+1} + \gamma v_{\pi}(S_{t+1}) | S_t=s) $$
同样的 可以得到动作价值函数
$q_{\pi}(s,a)$

$$q_{\pi}(s,a) = \mathbb{E}_{\pi}(R_{t+1} + \gamma q_{\pi}(S_{t+1},A_{t+1}) | S_t=s, A_t=a) $$

这些递推式子 叫贝尔曼方程。 贝尔曼方程 是动态规划这类数学最优化方法 能够达到最优化的必要条件

我们想要求一个最好的策略 以便得到最好的收获或价值 在最初期,可以定义最优状态价值函数为
$$v_{*}(s) = \max_{\pi}v_{\pi}(s)$$
即取所有此策略下的状态价值中最大一个。 这里有缺点,呆会说。

求解最优策略 基本解法有也三种: 它们也是一个接一个的改进.

动态规划法

蒙特卡洛法

时序差分法

先看DP:

之前说过 RL 目标是求解控制/求解预测

策略评估求解预测或说价值:

通过贝尔曼方程来完成 :

我们每一轮可以对 计算得到的新的状态价值函数 再次进行迭代,直至状态价值的改变很小(收敛),就得出了 预测问题的解, 即给定策略的状态价值函数v(π)

策略迭代求解控制:

循环如下两步 得到收敛的策略π* 和状态价值V*

1 策略评估: 利用贝尔曼公式 vπ(s) 迭代直到vπ(s)收敛

2 策略更新: 用贪婪策略选取使v(s)最大的策略

注意策略迭代 只有在状态价值更新到收敛后,才更新策略。


价值迭代求解控制:

没有等到状态价值收敛后,才调整策略, 而是随着状态价值的迭代 及时调整策略, 更快。

动态规划法:利用贝尔曼方程迭代更新状态价值, 用贪婪法迭代更新 最优策略。

动态规划算法使用 全宽度(full-width)的回溯机制来进行 状态价值的更新,

在每一次回溯更新某一个状态的价值时,都要回溯到 该状态的所有可能的后续状态,并利用贝尔曼方程更新该状态的价值。

其缺点是: 1:状态数较多 问题规模较大时 计算量太大啦! 2: 要求转化模型P已知,这个在实际中经常难以得到。

改进: 蒙特卡洛法。 注意,这里已经是不基于模型的强化学习问题,转到value_based啦。


蒙特卡罗法通过采样 若干经历完整的状态序列(episode)来估计状态的真实价值。所谓的经历完整,就是这个序列必须是达到终点的。

有了很多这样(越多越接近真实值)经历完整的状态序列,可以近似的估计状态价值:只需求出 所有的完整序列中 该状态出现时候的收获 再取平均值即可近似求解,也就是:

$$G_t =R_{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3}+... \gamma^{T-t-1}R_{T}$$

$$v_{\pi}(s) \approx average(G_t), s.t. S_t=s$$

$$V(S_t) = V(S_t) + \alpha(G_t - V(S_t) )$$

$$Q(S_t, A_t) = Q(S_t, A_t) +\alpha(G_t - Q(S_t, A_t) )$$

系数α 功能类似于 用来取平均的N(St)

和动态规划比,蒙特卡罗法不同之处体现在三点:

1 预测问题策略评估的方法不同

2 蒙特卡罗法一般是优化 最优动作价值函数q∗,而不是状态价值函数v∗。(没有P 转而计算q??)

3 动态规划一般基于贪婪法更新策略。而蒙特卡罗法一般采用ϵ−贪婪法更新。 (因为想要更多的动作 被计算q(s, a))

一般ϵ会随着算法的迭代过程逐渐减小,并趋于0。这样在迭代前期,我们鼓励探索,而在后期,由于我们有了足够的探索量,开始趋于保守,以贪婪为主,使算法可以稳定收敛。


蒙特卡罗法

其缺点是: 它每次采样都需要一个完整的状态序列。

改进: 时序差分TD (Temporal-Difference)



R_{t+1} + \gamma v(S_{t+1})
来近似的代替收获G(t), 前者又称TD目标值

时序差分法在知道结果之前就可以学

时序差分法在 更新状态价值时使用的是TD目标值,即基于即时奖励和下一状态的预估价值 来替代当前状态在状态序列结束时可能得到的收获,是当前状态价值的有偏估计,而蒙特卡罗法是 无偏估计

n步时序差分 当n越来越大,趋于无穷,或者说趋于使用完整的状态序列时,n步时序差分就等价于蒙特卡罗法了。


时序差分法 求解控制 分在线算法(代表者SARSA) 和离线算法(代表者Q-learing) 分别为 行动策略 和要评估的策略 是不是同一个策略的场景。

再解释一下:

在线控制 一般只有一个策略(常用ϵ−贪婪法)

离线控制 一般有两个策略 其中一个策略(常用ϵ−贪婪法) 用于选择新的动作  另一个策略(常用贪婪法)用于更新 价值函数

除了收获G(t)不同 SARSA其他同蒙特卡罗法

对于价值函数的更新,Q-Learning用贪婪法,SARSA用ϵ−贪婪法。这是SARSA和Q-Learning本质的区别。

Q-Learning直接学习最优策略,而SARSA在学习最优策略的同时还在做探索。 但SARSA学习过程会比较平滑, Q-Learning可能受到训练数据方差的影响, 或遇到一些特殊的最优“陷阱”。

SARSA和Q-Learning的缺点是:

Q(S, A)的值 使用一张 大表来存储的 可能溢出


对于资格迹, 刘建平老师的文章是 先在TD算法中讲的,那时还没说到 价值逼近函数。所以我当时没看太明白。 我觉得这个问题的BourneLin答主  说的比较好:

https://www.zhihu.com/question/60612010/answer/214118815

定义一个叫做资格迹(Eligibility Trace)的向量 Zt,其维度和逼近函数的权重向量Wt一致。

那么资格迹就可以根据过往价值变化对如何调整当前Wt影响定义为:

$$Z_{t} \doteq \lambda Z_{t-1} + \bigtriangledown v (S_{t}, w_{t}))$$

一般形式的逼近函数更新公式

$$W_{t+1} = W_{t} + \alpha\left [ R_{t+1} + v (S_{t+1}, w_{t1})- v (S_{t}, w_{t})\right ] \bigtriangledown v (S_{t}, w_{t})$$

价值逼近函数的更新公式

$$W_{t+1} = W_{t} + \alpha\left [ R_{t+1} + v (S_{t+1}, w_{t1}) - v (S_{t}, w_{t})\right ] Z_{t} $$

差别就在于最后一项
Z_{t}

\bigtriangledown v (S_{t}, w_{t})

。前者是考虑了过去的价值梯度
$\bigtriangledown V_{t-1} (S_{t-1}, w_{t-1})$
$\bigtriangledown V_{t-2} (S_{t-2}, w_{t-2})$

$\bigtriangledown V_{0} (S_{0}, w_{0})$
对更新
W_{t+1}
的影响,这也正是资格迹的真正意义;而后者并没有考虑过往影响。

————–

本文一两年前就开始写,总是被中断..  其实本文的精华主要是上面的那个ppt,以画面的形式展现。 其他的内容不是很重要,没啥创新,只是个人的笔记, to be continue   但不用期待哈



版权声明:本文为anthea_luo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。