0%

ReinforcementLearning_WatermelonBook_Summary

Preface

最近吴老师需要入手强化学习,百战不怠呀,从零开始,认真学习!

ReinforcementLearning_WatermelonBook_Summary

周志华西瓜书 Summary

简单介绍什么是强化学习

强化学习由<S,A,P,R> 由state状态空间S,动作控件action,状态转移概率Probability,Reward奖励值四个表示。而这样的描述一个学习过程,我们成为用MDP,马尔可夫决策过程来描述强化学习。
而机器的目标则是学会一个策略函数π,而通常而言我们将通过π(s,a)来表示,表示在状态空间S中某个状态s,我们选择动作空间A中a的概率为多少。这就是策略的一般表示

强化学习例子1——摇臂赌博机

考虑这样的一个问题,有一个k个摇杆的赌博机,你并不知道按下摇杆会吐出多少钱,现在的问题是我只有100次机会我应该如何利用来达到最大金钱总数

建模

这个其实也是一个典型的马尔可夫过程。环境是k摇臂赌博机,S是当前我已知按过的摇臂,吐出过多少钱。动作A是我当前应该按下哪个摇杆。而状态转移概率P指的是我当前这个状态,按下某个摇杆到达另一个金钱状态的概率。而Reward很明显为当前的金钱奖励总和。

算法Exploration & Exploitation & Epsilon-Greedy

很明显这个例子,我们有两种选择,选已知的平均奖赏最大的赌博机,和随机选一个摇杆。
而我们设置一个值epsilon,当随机正态分布<Epsilon的时候进行explore,在1-epsilon中进行exploit。

算法Softmax

利用Boltzmann分布,很直接想法,我们探索多了,那么应该多利用一些,所以设置常数T,为尝试次数,当T增加,趋于仅exploit,当T->0,区域仅explore。

很明显,我们每次的选择,都没有考虑到这一次的special反馈,没有考虑到MDP的特性,后面我会有效利用做出更好的选择。

model-based learning

马尔可夫状态有个好的性质,当前时刻仅有系统上一个时刻的状态决定,不依赖以往任何状态。

值函数定义

在有模型的学习中,我们首先定义state value function V,表示从x状态开始,走T步的累计奖赏,而state action value function表示如果当前执行动作a再使用策略,的T步累计奖赏。很明显可以知道,我们可以一路递推因为模型已知,所以我们往后推T步,都能知道每一次所有的奖励和,

策略改进

我们在上一步求累计奖赏的时候,是把后面所有的可能奖励求和来完成的,这样并不能起到改进效果。思考:
我们把当前的值函数,改为求后面所有动作的值函数最大值,同时我们更新策略,当前策略为这个状态下选这个后面最大值的动作。如果发现,哦,策略没变化收敛了。在模型已知的情况下,我们完全可以计算出来。

model-free Learning

因为没有模型,所以我们要去尝试去知道这个模型大概啥样(采样)。这样的学习,因为MDP的原理,所以每次时间我们都在更新diff,所以又称为时序差分学习(temporal difference)TD学习。
当我们模拟一个游戏的时候,我们需要去尝试=>模拟在当前状态,选取某个action以后,达到下一个状态reward的过程,接着去和上个valuefunction对比,直到value function收敛即为值函数迭代。而我们的更新方法,只需要上一步和这一步的reward即可更新。所以可以通过不断在模型中试错去完成值函数的计算。(依托全概率展开),但是尝试的时候不能总使用一个值,所以才会学习epsilon-greedy来知道是否需要划分概率学习。

epsilon-greedy的问题

我们当前引用epsilon,我们是否假设我们用值函数去探索了(评估了),然后在真实去走的时候还是用epsilon来决定怎么去走呢?
这样的方法,我们称为off-policy。(我们最后用的还是值函数)
on-policy(我们最后用的是epsilon-greedy的值函数策略)

所以我们将值函数在free-model下的off-policy称为qlearning而on-policy称为Sarsa。

值函数近似

当前的深度强化学习,主要运用的就是西瓜书这一章的内容,value function approximate。 用函数,模拟上个步骤中的表格。每个状态s=>s*θ(T)。这样在qlearning中,我们的每一次时序差分学习中的更新变成一个梯度下降。
而这样得到的是线性的,我们可以通过核函数展开而得到非线性的,再通过梯度下降,使得我们希望的值函数和我们实际走的计算出来的值函数,误差的极值尽可能小,这样的梯度是让参数梯度下降。这样我们的参数会不断更新。

从而我们可以得到 线性值函数近似Sarah,Qlearning,非线性值函数近似Sarah,Qlearning。

直接模仿学习和逆强化学习

已知决策的轨迹数据集,我们找到一个reward函数,在这种情况这个轨迹数据集是最优的,再而训练强化学习。