返回目录:财经要闻
Steeve Huang。fastai深度学习社区译。
第一部分(Q-Learning,SARSA,DQN,DDPG)
强化学习(RL)指的是一种机器学习方法,其中代理在下一个时间步骤中收到延迟奖励,以评估其先前的行为。它主要用于游戏(例如Atari,Mario),表现与人类相当,甚至超过人类。最近,随着算法的发展,神经网络的结合,它能够解决更复杂的任务,如钟摆问题.
虽然有大量的RL算法,但似乎并没有对它们进行全面的比较。当决定将哪些算法应用于特定的任务时,这让我很难。本文旨在通过简要讨论RL配置来解决这个问题,并介绍一些众所周知的算法。
1.强化学习101
通常,RL配置由两个组件组成,一个代理和一个环境。
那么环境是指代理正在作用的对象(例如Atari游戏中的游戏本身),而代理代表RL算法。环境首先向代理发送一个状态,然后基于其知识来采取行动来响应该状态。之后,环境发送一对下一个状态并奖励给代理。代理人将用环境所回报的奖励来更新其知识,以评估其最后的行动。循环一直持续,直到环境发送一个终止状态,终止于情节。
大多数RL算法都遵循这种模式。在下面的段落中,我将简要地谈谈RL中使用的一些术语,以便在下一节中进行讨论。
定义
行动(A):代理可以采取的所有可能的行动
状态(S):环境返回的当前状况。
奖励(R):从环境中立即返回以评估最后的行动。
策略(π):代理人根据当前状态采用的策略来确定下一个操作。
价值(V):具有折扣的期望长期收益,而不是短期回报R.Vπ(s)被定义为当前状态更新策略π的预期长期回报。
Q值或动作值(Q):Q值与Value类似,只不过它需要一个额外的参数,即当前动作a。Qπ(s,a)是指当前状态的长期回报,采取一个低于策略π的行动。
无模型与基于模型的
该模型代表了环境动态的模拟。也就是说,该模型从当前状态对s0中学习转移概率T(s1 |(s0,a)),并将a动作到下一个状态s1。如果转换概率被成功学习,那么代理将知道给定当前状态和动作时进入特定状态的可能性。然而,随着状态空间和动作空间的增长,基于模型的算法变得不切实际(S * S * A,表格设置)。
另一方面,无模型算法依靠试错来更新其知识。因此,它不需要空间来存储所有状态和动作的组合。下一节讨论的所有算法都属于这一类。
On-policy vs Off-policy
政策上的代理人根据当前的行动a来学习价值,而非政策的代理人根据贪婪行为a *来学习。(我们将在Q-learning和SARSA上进一步讨论)
2.各种算法的说明
2.1 Q-学习
Q-Learning是一个基于众所周知的Bellman方程的无关模型的RL算法:
上式中E代表期望值,ƛ代表折扣系数。我们可以用Q值的形式重写:
表示为Q *的最优Q值可以表示为:
目标是最大化Q值。在深入研究优化Q值的方法之前,我想讨论两个与Q学习密切相关的值更新方法。
策略迭代
策略迭代在策略评估和策略改进之间运行。
策略评估使用从上次策略改进中获得的贪婪策略来估计价值函数V. 另一方面,策略的改善,更新策略,采取最大化V的行动,为每个状态。更新方程基于Bellman方程。它保持迭代直到收敛。
价值迭代
值迭代只包含一个组件。它根据Optimal Bellman方程更新了值函数V.
迭代收敛后,通过对所有状态应用一个自变量 - 最大值函数,可以直接推导出最优策略。
注意,这两种方法需要知道转移概率p,这表明它是基于模型的算法。但是,如前所述,基于模型的算法存在可伸缩性问题。那么Q-learning如何解决这个问题呢?
α是指学习率(即我们接近目标的速度有多快)。Q学习背后的思想高度依赖于价值迭代。但是,更新公式替换为上面的公式。因此,我们不必担心转换概率了。
请注意,下一个操作a'被选择为最大化下一个状态的Q值,而不是遵循当前策略。因此,Q-learning属于非策略类别。
2.2状态行动奖励状态行动(SARSA)
SARSA非常类似Q-learning。SARSA和Q-learning之间的主要区别在于SARSA是一种在线策略算法。这意味着SARSA根据当前的策略行为而不是贪婪的策略来学习Q值。
动作a_(t + 1)是当前策略下在下一状态s_(t + 1)中执行的动作。
从上面的伪代码中,您可能会注意到执行了两个操作选择,这总是遵循当前的策略。相比之下,只要Q学习最大化下一个状态的Q值,Q学习就不会对下一个动作产生任何限制。因此,SARSA是一种策略上的算法。
2.3深度Q网络(DQN)
虽然Q学习是一个非常强大的算法,但它的主要缺点是缺乏通用性。如果您将Q-learning视为更新二维数组(动作空间*状态空间)中的数字,则实际上它类似于动态编程。这表明,对于Q学习代理以前从未见过的状态来说,它不知道要采取什么行动。换句话说,Q学习代理人没有能力估计看不见的状态的价值。为了解决这个问题,DQN通过引入神经网络来摆脱二维阵列。
DQN利用神经网络来估计Q值函数。网络的输入是电流,输出是每个动作的相应Q值。
在2013年,DeepMind将DQN应用于Atari游戏,如上图所示。输入是当前游戏情况的原始图像。它经过了几层,包括卷积层和全连接层。输出是代理可以采取的每个操作的Q值。
问题归结为:我们如何训练网络?
答案是我们基于Q学习更新方程来训练网络。回想一下,Q学习的目标Q值是:
φ等于状态s,而θ代表神经网络中的参数,这不在我们讨论的范围内。因此,网络的损失函数被定义为目标Q值与从网络输出的Q值之间的平方误差。
另外两种技术对于训练DQN也很重要:
1.经验回放:由于典型的RL配置中的训练样本是高度相关的,数据效率较低,这将导致网络难以收敛。解决样本分配问题的一种方法是采用经验回放。本质上,样本转换被存储,随后将从“转换池”中随机选择以更新知识。
2.分离目标网络:目标Q网络与估算值相同。每C步骤,根据上面的伪码,目标网络被重置为另一个。因此,波动变得不那么严重,导致更稳定的训练。
2.4深度确定性策略梯度(DDPG)
虽然DQN在高维问题(例如Atari游戏)中取得了巨大的成功,但动作空间仍然是离散的。但是,很多感兴趣的任务,特别是物理控制任务,动作空间是连续的。如果你把动作空间分离得太细,那么你的动作空间就太大了。例如,假设自由随机系统的程度为10.对于每个学位,您将空间分成4个部分。你结束了4^10= 1048576的行动。为了这样一个巨大的行动空间而聚合也是非常困难的。
DDPG依靠行动-评论的体系结构与两个同样重要的元素,行动和评论。参与者被用来调整策略函数的参数θ,即决定特定状态的最佳动作。
评论者用来评估根据时间(TD)误差评估行动估计的策略函数。
在这里,小写字母v表示行动决定的策略。它看起来很熟悉吗?是! 它看起来就像Q学习更新方程!TD学习是学习如何根据给定状态的未来预测值的一种方法。Q学习是学习Q值的一种特定类型的TD学习。
DDPG也借用经验回放方法和DQN中的独立目标网络。DDPG的另一个问题是很少对行动进行探索。解决方法是在参数空间或动作空间上添加噪音。
根据OpenAI写的这篇文章,声称在参数空间上加入噪声比在操作空间上更好。一种常用的噪声是Ornstein-Uhlenbeck Random Process。
3.结论
我已经讨论了Q学习,SARSA,DQN和DDPG的一些基本概念。在下一篇文章中,我将继续讨论其他最先进的强化学习算法,包括NAF,A3C等等。最后,我将简要地比较我所讨论的每个算法。如果您对本文有任何问题或疑问,请不要犹豫,在下面留言或发邮件给我:khuangaf@connect.ust.hk。
fastai深度学习社区