机器学习分为监督学习,非监督学习,强化学习三种。不同于其他两种,强化学习并没有明确的目标,强化学习需要执行动作接受环境的反馈来不断更新参数。强化学习有两大特点:一是与环境的交互。二是奖励的延时,执行一步动作并不会告诉程序是否正确,需要执行完一系列的动作才可以知道结果,强化学习输出的是动作,一个典型的例子就是走迷宫。监督学习则是输出状态,例子:预测房价
强化学习有两个部分:agent,environment。三个要素:state,action,reward。agent根据环境的state执行action获取reward根据reward指导下一次action获取更优的reward。
这周我学习的主要内容是无模型的强化学习。有:基于价值的Sarsa,Q-learning算法以及Q-learning加入神经网络的DQN算法。基于策略的Policy Gradient算法。最后是DDPG算法。agent和会处于environment并有一个state,与environment交互执行action并获得一个reward而state和action会组成一个Q表格这是强化学习的重要依据。
一、Q-learning和Sarsa
这两个算法都是基于价值的强化学习算法。
我们做事前都会有一个价值判断,比如上课可以获得知识,所以上课认真听讲就是好状态,说悄悄话就是坏状态。那么基于价值我们就会选择认真听讲。但有时候我们也会说悄悄话,被老师发现就会有严重的后果。久而久之这种印象留在我们的大脑难以忘记。
假设正在上课的李华之前从来没有在上课的时候说过悄悄话,那么他就有两种选择:1.说悄悄话,2.继续认真听课。李华此时想说悄悄话,此时他的状态更改为说悄悄话。很不幸他被老师发现了老师点名批评了李华。李华很难受于是把上课说悄悄话定义为不好的行为。这个过程就是Q-learning和Sarsa的过程
除了更新Q表格时这两个算法有区别,其余时间都是相同的。
决策
一段时间过去李华有了一个完备的上课时的行为价值。也就是有了一个完整的Q表格。此时李华在上课(s1)他有两个选择听课(a1),说悄悄话(a2)。根据他的经验(Q表格)他知道Q(s1,a1)>Q(s1,a2)所以他选择了a1并处于s2状态,此时的他会在他的经验(Q表格)中对比Q(s2,a1),Q(s2,a2)并作出选择。不断重复选择行为(action)。这是这两种算法的决策阶段。
学习
Q-learning:根据 Q 表格, s1 中, a2 的值比较大, 通过之前的决策方法, 李华在 s1时选择了 a2, 并更新状态为 s2,。这时要更新Q 表, 此时李华并没有再次执行任何的action, 而是想象自己在 s2 上采取了Q 值最大的action, 比如说 Q(s2, a1) >Q(s2, a2) , 所以李华把Q(s2, a2) 乘上一个衰减值 gamma 并加上到达s2所得到的奖励R,将这个Q作为实际的Q(s1, a2) 的值, 但是之前是根据 Q 表估计 Q(s1, a2) 的值。所以有了实际值和估计值。根据估计与实际的差距, 将这个差距乘以一个学习效率累加上老的 Q(s1, a2) 的值更新Q表格。
Sarsa:同样会基于价值在s1的时候选择a1,但在Q-learning时你会看一下在s2的时候执行哪一个action会获得最大Q值但在真正选择的时候不一定会选择这个action。但Sarsa一定会选择这个action
二、DQN
第一种算法是传统的最简单的强化学习的算法,但随着机器学习生活的结合的越发紧密,开始出现海量的数据,这些数据如果继续使用传统的Q表格存储,就会显得十分笨拙。为了解决这个问题我们在Q-learning的基础上引入神经网络,我们把state和action作为神经网络的输入,那么神经网络的输出就是我们需要的Q值。这样就省去了查询Q表格的时间。在数据量愈发庞大的今天这种方式可以显著的提升效率。
正如Q表格需要不断更新一样,神经网络需要训练。训练神经网络的时候我们需要实际的Q值和预估的Q值,那么实际的Q值就是Q-learning中的实际的Q值,这样我们就可以更新神经网络的参数了。新的参数等于旧的参数加学习效率乘以Q实际和Q预估的差值。
但是使用神经网络会出现两个问题数据关联性太强和不稳定。DQN引入两大支柱解决这些问题1.经验回放,2.固定Q目标。
经验回放:DQN有一个庞大的记忆库存储着之前的训练数据,我们在训练神经网络的时候可以随机抽取之前的训练数据结合样本一起进行训练,可以大大降低数据的关联性。提高了效率。
固定Q目标:我们在DQN中会把数据集进行复制获得两个神经网络,一个使用最新的不断更新的数据集我们把这个神经网络输出的Q称为Q预估,一个使用旧的不更新的数据集我们把这个神经网络输出的Q称为Q实际,这个数据集并不是完全不更新而是延迟更新,我们会每隔一段时间更新一次。这样我们就可以大大提升DQN的稳定性。
三、policy gradient
与之前的算法不同Policy Gradients的是一种基于策略的强化学习方法,前两种都只适用于处理较少地action。如果action特别多怎么办,我们无法快速的作出决策。从而浪费了大量的时间,这时候基于策略的强化学习算法的优势就体现出来了。
假如现在有上下左右四个选择,这两总决策方式的区别是。
基于价值:比较这四个动作的Q,选取Q最大的方向。
基于策略:通过一个函数计算出选择的方向,f(s)=a。a即为上下左右中的一个,这个函数给出的结果是有概率的。
这是policy gradient的决策过程,他的学习过程是怎样的呢。现在我们可以得到一个state和action组成的序列。τ=s1,a1,s2,a2....我们以一个动作序列作为更新神经网络参数的更新单位。那么可以得到一个个的τ序列和reward值。如果一个动作得到的reward多,那么我们就使其出现的概率增加,如果一个动作得到的reward少,我们就使其出现的概率减小。
根据这个思想,我们构造如下的损失函数:loss= -R*log(prob)
上式中log(S)表示在状态 s 对所选动作 a 的吃惊度, 如果概率越小, 反向的log(S) 反而越大. 而R代表的是当前状态s下采取动作a所能得到的reward,这是一整个动作序列的reward值。也就是说我们必须要完成一个完整的过程才可以进行参数更新。如果在prob很小的情况下, 得到了一个大的Reward, 也就是大的R, 那么-R*log(prob)就更大, 表示更吃惊会对参数作出更大的调整。
四、DDPG