21/8/22 读书笔记 强化学习
21/8/22 读书笔记
西瓜书不愧最好的入门教材
很多看不懂的概念,在写笔记的时候就能更深入地思考和理解
而且实在看不懂的话,围绕西瓜书的内容可以在网上找到很多的详解
但愿我的读书笔记也能像各位前辈的一样,帮助更多人理解书的内容
不过我更希望的是,我的笔记不要误人子弟hhh
机器学习 强化学习
强化学习任务中,机器处在环境中,其具有状态空间\(X\),机器所能采取的动作构成了动作空间\(A\),当动作\(a\)作用在状态\(x\)上,则会按一定的状态转移概率\(P\)发生状态的转换,在发生转换的同时环境会按照奖赏函数\(R\)来为机器进行反馈。我们称四元组\(E=(X,A,P,R)\)决定了一个强化学习任务。强化学习任务有明显的马尔科夫过程(MDP)的结构。强化学习中通常是没有所谓“训练数据”的,机器被直接放在环境中进行训练。
环境中的状态转换概率\(P\)和奖赏函数\(R\)是不为机器所能影响的,机器只能选择所要执行的动作,来影响其在环境中的状态,并且只能通过观测状态转移后的新状态和环境返回的奖赏来感知其环境。强化学习中,机器所能做的唯一行为就是选择执行的动作,其在不同的状态\(x\)下会选择不同的动作,可以表示为一个函数\(a=\pi(x)\),\(\pi\)称为一个策略。策略即可以表示为绝对的从\(X\)到\(A\)的映射关系,也可以表示为状态\(x\)下选择\(a\)的概率。
如果我们将状态看做“样本属性”,动作看做“样本标记”,实际上强化学习就可以看做监督学习中的分类器,试图为每个状态找到最匹配的动作。但是强化学习任务中,当我们需要决定时,我们并不知道状态x下做哪个动作a是最匹配的,直到一系列决策的最终结果揭晓。换言之,我们的标记信息是“延迟”给出的,因此强化学习是通过“反思”自己的行为来进行学习的。强化学习任务中,通常我们不依赖训练数据。
当我们仅考虑单步的强化学习,那么目标就是找到期望奖赏最大的动作并尽可能多地执行它。这里引入了探索和利用的问题,探索指机器需要去通过尝试来获取关于环境的信息,而利用则是基于获取的环境的信息来获取最大的利益。为了探索,机器需要尽可能多地均匀执行所有动作,以获得更为准确的地对每个动作奖赏的概率分布进行估计,但是显然这样获得的奖赏很低;为了利用,机器尽可能地执行当前已知期望奖赏最大的动作,但是显然这是放弃了更优解。为了平衡探索和利用,提出了两种主要折中方法:
- \(\epsilon\)-贪心法:给定概率\(\epsilon\),每次以\(\epsilon\)的概率执行探索,以\(1-\epsilon\)的概率执行利用,以平均奖赏作为动作的期望奖赏。
- Softmax:基于每种动作的目前已知平均奖赏来构建Boltzman分布,动作的平均奖赏越大,越可能被选中执行。其中Boltzman分布利用\(\tau\)作为参数来决定平均奖赏对被选中概率的影响程度,\(\tau\)越大,概率分布越偏向于均匀。
在机器已知环境(即四元组\(E=(X,A,P,R)\))的情况下,我们可以在机器内部来模拟出环境来,从而指导机器的行为,此时称为“有模型学习”。基于已知信息,机器对处在状态\(x\)时采用策略\(\pi\)的累计期望奖赏(状态值函数)\(V^\pi(x)\)进行估算,来评估策略的优劣。设状态-动作值函数\(Q^\pi(x,a)\)表示处在状态\(x\)时先执行了动作\(a\)后策略\(\pi\)的累计期望收益。为了获得更好的策略,可以分为:
- 策略优化:以策略为导向,优化每一次决策过程,在每次决策时选择\(Q^\pi(x,a)\)最大的动作。
- 值函数优化:以值函数\(V^\pi(x)\)为导向,直接优化策略,选择值函数更大的策略。
大多数情况下,机器对环境并没有任何了解,更无法进行建模,此时称为免模型学习。免模型学习下带来了新的挑战:
- 在评估策略的质量时并不能进行全概率展开,因此我们通过多次且有限的采样来对累计奖赏进行估计。
- 很难进行状态值函数V到状态-动作值函数Q的转换,因此我们将估计的对象从V转变为Q,即估计了每一对“状态-动作”的状态-动作值函数Q。
- 状态空间是未知的,我们只能从一个初始状态出发,去发现所有的可能状态。
因此,在模型未知的情况下,我们从起始状态\(x_0\)出发,采用某个策略进行采样,进行有限的T步,获得一个由多对有顺序的状态-动作构成的轨迹,对该条轨迹中的每对状态-动作,将其之后所有的奖赏作为该次的累计奖赏采样值。我们多次采样,以获得多条轨迹,从而获得状态-动作对的多次累计奖赏采样值,求平均后作为其状态-动作值函数的估计,这种方式称为蒙特卡罗学习。蒙特卡罗学习需要在每次采样的一个轨迹的结果全部计算完后才能进行值函数的更新,降低了学习的效率,其主要问题在于没能利用强化学习任务中的马尔科夫过程的特性。
我们希望采用的策略是确定性的,即是\(X\to A\)的映射,这种策略称为“原始策略”。但是如果我们用原始策略进行采样,这将导致我们用同一个策略从同一个起始状态出发,总是获得同一条轨迹。因此,我们在原始策略的基础上融合\(\epsilon\)-贪心法,使得策略在每次决策时具有随机性,从而获得多个不同的轨迹,这种策略称为\(\epsilon\)-贪心策略,其引入是为了方便我们进行策略评估。
同策略(on-policy)的蒙特卡罗学习,指策略评估和策略优化的对象都是\(\epsilon\)-贪心策略,但是我们期望蒙特卡罗学习获得的决策是有确定性的原始策略。因此引入了异策略(off-policy)的蒙特卡罗学习,其在策略评估的对象是\(\epsilon\)-贪心策略,而策略改进的对象是原始策略。
时序差分算法综合考虑了强化学习中MDP的结构和蒙特卡罗学习的轨迹思想,使得策略每执行一步就会更新一次状态-动作值函数。
状态空间有时是无限的,而且由于免模型学习本身就是对状态空间的探索, 因此我们在免模型学习过程前是无法探知状态空间的信息的,因此对无限的连续状态空间的离散化是不可行。此时我们希望能够将连续的状态通过线性函数映射为值函数\(V(\bold x)=\bold \theta^T\bold x\)。我们通过采样,利用采样时估计的值函数来作为真实的值函数,不断地让训练我们的参数向量\(\bold \theta\)。
模仿学习中引入了人的因素,将人给定的策略作为范例,试图让机器做出和人相同的决定。其训练方法分为:
- 直接模仿学习:将人的策略作为训练数据,利用监督学习的方式学习出策略模型,然后利用这个策略模型去作为强化学习的初始策略,在环境的反馈下不断进行改进。这种方式获得的策略通常比原来的范例策略更契合当前环境。
- 逆强化学习:我们试图模拟出一个环境,在这个环境中人的范例策略是最优策略,使得在这个环境中强化学习的目标就是获得和范例策略相同的策略。模拟中的变量主要是奖赏函数\(R\),因为状态空间、动作空间、状态转移概率都是由现实所决定而不为意志所能改变的。