最近学习了Reinforcement Learning部分内容,体会到其中的某些观点非常富有哲学意味。以下用RL代替Reinforcement Learning。
先放结论,免得因为太长而一拉到底。
- RL从数学原理上解释了学习的本质,自我学习与借鉴他人经验,向优秀的人学习,两者的关联和差别。
- RL指出了向自己特别遥远的榜样和偶像学习,不如像身边和自己比较类似的人学习。
- RL解释了好的老师因材施教,把自己的知识和经验传递给学生的过程。
增强学习的一些基本内容
增强学习的空间可以表示为一个五元组<S, A, R, P, gamma>
S:Agent的state的空间
A:Agent的action的集合
R:R(a_t, s_t) Agent在状态s_t采取Action a_t时获取的reward。
P:P(s_t+1 | s_t, a_t) Agent的状态转移矩阵,在状态s_t下采取a_t下转移到状态s_t+1的概率。它是潜在而不可变的,在deep reinforcement learning中我们可能不需要求解它。
gamma: reward的衰减,这里就不展开讨论它了。
我们的观察是一个一个的episode, e_i = <s0, a0, s1, a1, ..., sn>。一个episode可以理解为从最开始s0状态采取了action a0,到达s1,然后一直到终止状态sn的过程。
RL的训练目标是最大化reward的期望。
RL要求解的是在任何状态下该如何决策, π(a_t|s_t) 就是当我们处于s_t的情况下,采取哪种action。
RL的求解思路一般有两种,第一种是基于E[V(s)],或者E[Q(s,a)],(V(s) 和 Q(s,a) )这里就不解释了,RL的基本介绍里都有),这是一种间接的思路,经典算法是Q-Learning,在状态s_t下,根据Q(s_t, a_i)的值,最大的作为action。
π(a_t|s_t) = argmax a_i (Q(s_t, a_i))。
另一种直接的思路是直接计算 π(a_t|s_t) , 经典的算法是Policy Gradient。
除了这两种,还有更fancy的hybrid方法是结合了V(s)的计算和Policy Gradient, 比如A2C和A3C,在很多场景下会有更好的效果。
好了,这里不是讲哲学嘛,RL的公式到此为止。
现在新冠隔离在家,管理严厉的时候出不了小区的门,唯一的活动场所就是小区的篮球场了,所以过年的时间里经常跑去投投篮(戴着口罩哦~)。对于投篮这样的场景,我就是这个Agent,每一次投篮,从举球,瞄准,出手,到进和不进作为反馈,类似于RL的学习模型,如果进那么就加深这个流程的每个环节,如果不进,按照Policy Gradient的思路,对于整体过程的每个环节,会有一个discount,也许你在整个环节其他部分都执行的非常完美,就是眼睛是歪的瞄不准,现实中你也没法投的很准,理论上RL也是学习不了的。假设一个人最终是能达到一个更好的状态的,对于这一次失败,可能各个好的环节下会有一个discount,但是假设有足够多的训练样本下,其他成功的案例终究会证明这些环节是有益的,会带来正的reward。
好了,这就是RL的学习过程。在这个过程中,会有比较强的bias,有可能训练出各种奇奇怪怪的投篮姿势,倒马桶式,三八式,可能会能达到很好的命中率,但是实战中没人会使用这些,压根没出手的空间。我们如何避免学习出奇怪的投篮姿势,有什么学习的方法呢。
1. On Policy vs Off Policy
这里提到的两个概念,不禁要问这俩是什么鬼?
On Policy表达的是agent只能够从自身历史中学习,一个agent自身投了1000次,进了100个(比如我,咩~),那这个agent就能够根据这些历史,使用on policy的算法,比如policy gradient,学习投篮这个动作。
Off Policy则表示的是agent不光能从自身的历史数据中学习,还能够通过观察别人投篮,来学会投篮。比如通过观看NBA比赛,看Slam Dunk,学习职业篮球运动员的投篮,上篮动作(甚至学灌篮动作,咩)。也可以通过身边姿势比较标准,命中率高的球友来学习。并且Off Policy不一定从好榜样中学习,也能够从bad case学。如经典算法DQN,通过把历史数据保存在replay buffer中,在训练过程中随机sample,不需要通过完整的episode就能够学习,是一种典型的Off Policy的算法。
再通过李宏毅老师生动的例子的明确一下这两者的区别,第一种是阿光自己和佐为对弈,是On Policy,第二种是阿光在佐为的指导下下棋,实际下棋的是佐为,是Off Policy。
image.png
2. Importance Sampling
到目前为止,没有什么特殊的,那么Off Policy和On Policy有什么本质的区别?
某一方面优秀的人,我们称之为榜样,我们向他们学习。我们之前的常识告诉我们,我们生活的世界,并不能完全靠模仿别人的成功经验获取成功的,但是不妨碍借鉴到我们自身;现实中有大量现成的书本案例资源,Off Policy是比On Policy容易获取多的多,怎么利用它们,把On Policy转化为Off Policy学习。
这里的实际意义比如驾驶,教一个agent开车,agent不需要出现很多次的车毁人亡才能学会开车,而是通过学理论以及在驾校师傅指导下适量实践就能学会。这和RL有什么关联呢?这里就需要引入Importance Sampling。 下面是我以前的其他ppt里关于importance sampling的公式。
Importance Sampling 主要的思想是要在某个很难采样的分布p(θ)下采样θ,求f(θ)的期望,可以转化为另一个方便采样的函数q(θ),采样q(θ),并做适当的变换,这样计算出来的E([f(θ)])不变。(方差是有变化的)
image.png特别需要指出的是,之前已经讲过训练的目标,翻译成白话,是使得我们自己的policy,π(a_t|s_t) 的期望Reward最大,如果转换为观察别人行为来学习,按照importance sampling的观点,期望当中必须增加一项 p(at | st, θ) / q(at | st, θ)的修正项,才能使得我们基于别人的经验才能够作用到我们自己身上。下面一页ppt是从李宏毅老师的课程中截取的关于importance sampling在RL目标函数下的变换。
image.png也就是说,“榜样”的知识/技能/方法论 结合到我们自身身上时,会有一个偏差,当一个人和“榜样”接触不够密切(样本不足够充分时),学习到的variance会很大,比如上学时看到一个学霸整天和自己玩在一块儿,成绩却始终不如学霸,于是把原因归纳到智商,可实际上学霸回家以后还在学习,这就是样本不充分导致学习产生错误的结论的例子。
这里关于IS的性质再解释几点:
- p和q如果相差太大,会带来非常大的variance,也就是非常不稳定,需要更多的样本来训练。解释到投篮这个具体案例来说,看NBA的高水平运动员学习投篮,不如向水平接近的球友来学习,因为p和q两个分布差别太大了,而身边的人则和自己的分布非常相近。 实际上,在更新一点的模型,比如PPO(proximal policy gradient) 中也体现了这一思想,PPO是两大RL研究所之一的Open AI提到默认的RL实现,在很多场景下能达到非常优秀的训练效果。PPO的主要思路是在目标函数中增加了p和q两个分布的KL散度,来使得p和q尽量保持一致。
- 同样的,这个观点可以扩展到通用的学习当中,看一些鸡汤的文章,或者名人传记,从RL的观点来看,不如观察身边优秀的同学或者同事,向他们学习一些好习惯或者为人做事思路方法,这些对个人提升会更实际一些。
image.png
- 一个好的老师,就代表选择一个q分布,来逼近学生原有的p分布,并且随着学生的p分布变化,不断的更新自己的q分布,这个说的比较抽象,按照李宏毅老师最喜欢举的《麒麟王》(也就是大陆翻译的《棋魂》)的例子,阿光在棋力还不足的时候,Sai在大马步飞和小马步飞之间让阿光选择小马步飞,因为此时阿光还驾驭不好大马步飞,得到的reward的期望可能还不如走小马步飞;而当阿光棋力提升以后,Sai就更建议使用大马步飞了。这个实际上更类似于actor critic的观点。(下面这张图是拒绝性采样的图了,我想表达的是选择好的q,使得q尽可能接近于p,懒的画新的图了)。
结束语
本来就想把过年看的reinforcement learning的一些感悟记下来,结果写得还是太杂了,想到哪里就写到哪里,对于RL理解的不太深,欢迎批评指正。
就这样把,Ca va!
引用和推荐:
Karpathy讲解policy gradient
李宏毅老师的课程
Importance Sampling
RL的基本概念
RL比较新的成果
网友评论