机器学习与数据挖掘

几个比较经典的强化学习算法,以及在NLP中的应用

2019-03-15  本文已影响100人  VanJordan

从没有转移方程的强化学习说起

在深度学习里面的强化学习方法基本上是没有转移概率的,所以不能直接有贝尔曼方程求解。


无法通过转换方程求解,我们使用蒙特卡洛采样方法求解

因为实际上使用bellman方程,迭代的得到状态-行动值函数是求期望,而通过采样的方式同样也可以求期望。



时序差分法(TD法)

使用蒙特卡洛法需要从当前状态开始一直采样,直到游戏结束,但是这样有个问题是如果状态序列特别长,需要采样的次数也太多了,非常的耗费计算资源,如果采样的次数过少那么期望的方差就很大,导致训练很不稳定,TD法解决这个问题的策略是对于下一个时刻的状态我们使用估计得来,而不是采样得来,那么需要采样的仅仅就是下一个状态以及动作了,需要采样的次数大大降低。




TD算法在整儿系统都没有达到最优的情况下,估计是有偏差的,但是由于只是估计了一步,所以方差会比较小,本质少来说就是为了降低方差而牺牲了偏差,而降低方差的方式是使用估计值代替长序列的采样值,这样就能减少需要采样的次数。

Q-learning算法

Q(s,a)指的是从在状态s下,采取动作a,那么直到游戏结束所能获取的reward的期望,Q-learning法是对时序差分法的一种改进,是一种off-learning的方法,因为他不是使用真实的交互序列来进行训练的,他总是假设,在下个状态的时候会做出reward最大的动作。



Q-learning算法的性质以及和DeepQ-learning算法的引入

DeepQ-learning算法的改进

DQN存在的问题,以及改进

解决冷启动问题

image.png

Policy Gradient

Policy Gradient和最大似然的区别与联系

Actor-Critic

Policy Gradient的关系就像是MCTD的关系,都是使用估计来代替轨迹长期回报。

其他强化学习算法


层次强化学习

课程学习

模仿学习


AlphaZero








强化学习算法可以分为value-based的方法和,policy-based方法,value-based的方法是根据一个值函数网络估计出当前状态下进行各个动作的value,然后选出value最大的action,policy-based的方法是直接学出一个policy,这个policy可以在当前状态下选取最佳的动作,可以看到policy based的方法是比较直接的,但是两个直接也是由交集的就是actor-critic的方法,这种方法是做出了一个动作然后有一个critic进行打分,迫使actor做出reward高的动作。


policy-based

直接参数化一个策略函数



然后就是为了寻找最优的参数,确定强化学习的目标函数,这里我们直接说明是累积回报的期望

actor-critic

value-based

最为经典的方法是Q-learning,之前都是使用表格来装Q值函数,但是这种函数是有缺陷的,即如果当状态空间很大的话,需要大量的存储空间,第二个就是当问题规模变大以后,想要准确地计算出这张表中的每个值需要的时间开销是巨大的,而且在许多实际的任务中,有些状态和东欧是永远不会出现的,导致价值函数难以准确的计算,并且在实际的任务中,许多状态和动作是永远也不会出现的,这就导致了价值函数很难准确计算。

Q-learning 和DQN

学习动作值函数,即输入一个状态以及一个动作,需要得到这个动作的期望分数。

这个期望分数是对直到游戏结束所能获得的总的奖励
Q-learning 步骤
Q-learning算法
如何选择一个动作?使用epsilon greedy strategy策略:
因为初始的时候Q表示随机分布的,因此我们需要在开始的时候随机的进行动作探索,但是在快训练好的时候需要尽可能的选择Q值最大的动作。
于是我们先指定一个探索率叫做epsilon,在开始的时候我们设置他为1,于是我们在[0,1]之前选择一个随机数,这个随机数如果小于epsilon,那么我们就做随机探索,如果这个随机数字大于epsilon那么就选择Q值最大的动作。
epsilon
更新公式:
是一个bellman equation

采用的trick

  1. 使用深度卷积网络来逼近值函数。
  2. 使用经验回放对强化学习的学习过程进行训练,DQN有一个记忆库用于学习之前的经历,所以每次DQN更新的时候,都可以随时抽取一些之前的经历回放,随机抽取这种做法打乱了经历之间的相关性,使得神经网络更新更有效率。[可以想象在传统的训练文本分类的时候,不同类别的数据进来的第一件事就是打乱标签],这两个的道理差不多吧。
  3. 独立设置了目标网络来单独处理时间差分算法中的TD偏差问题,目标网络也是一种打乱相关性的机理,也就是说DQN中使用两个结构相同但是参数不同的神经网络,其中需要评估的Q神经网络具备最新的参数,而目标Q神经网络使用的参数是很久之前的,这样使得训练更加robust[??].
    训练步骤:
  4. 首先初始化两个Q网络的参数。
  5. 随机选择一个初始的状态,然后利用概率选取一个随机的动作at。
  6. 执行行动策略采样,得到大量经历数据(例如百万级的)以(st,at,rt+1,st+1) 的形式存储在内存里。
  7. 从记忆库中随机抽取一个batch 的数据,数据格式为(s,a,r,s')。
  8. 从目标Q网络中产生Q目标值,这里的目标值相当于标签数据,而另外一个评估Q网络用来评估策略,更新参数,注意,这里的目标Q网络的参数是评估Q网络上一轮迭代对应的参数[这里有点不理解]。
  9. 最后使用半梯度下降的方式,来优化Q网络和Q目标值之间的最小平方差:


    半梯度下降
上一篇 下一篇

猜你喜欢

热点阅读