最近几年机器学习算法特别是神经网络为AI带来了全新的变革。在这篇文章中我们会用通俗易懂的语言来帮助你理解强化学习的本质,同时给出强化学习的能力范围。在文末还为读者提供了一些强化学习的资源和实现方式的链接,希望能帮助你愉快地开始强化学习的旅程。

何谓强化学习?

我们通常将数据驱动的算法分为三类:监督学习,非监督学习和强化学习。前两类算法已经被广泛用于图像分类和识别等任务中,并取得了很高的准确率,但这似乎与我们所期待的AI有所不同。而这正是强化学习擅长的地方。

强化学习的概念十分简单,很像进化的过程:环境会奖励主体采取的正确行为,而惩罚错误的行为。而最主要的挑战却来自于训练出一种能在数百万种可能性中选择正确行为的能力。

Q学习和深度Q学习

Q学习被广泛应用于强化学习中。主体行为的质量(Quality)取决于其所处的状态。主体往往会采取能够最大化奖励的行为。

具体的数学细节请参阅>>https://en.wikipedia.org/wiki/Q-learning

在这一算法中主体根据环境对于每一个行为的奖励来学习每一个行为的质量(Q值)。环境状态值与对应Q值被存储在一个表格里。当主体与环境发生相互作用时,表格中的Q值就会不断更新,以帮助主体最大化从环境中获得的奖励。

深度Q学习

Q学习对于强化学习很不错,但当环境状态的数量变得很大时,这种算法就无法很好的处理强化学习的问题了。这时就需要深度强化学习来解决。深度学习可以看成是一种具有普适性的近似机器,它可以理解并提出抽象的表示。于是在强化学习中便利用了深度学习来近似Q值,并可以利用梯度下降来方便地得到优化后的Q值。

一个有趣的事实:谷歌有一个关于深度Q学习的专利

探索与开发(Exploration vs Exploitation)

通常情况下,强化学习中的主体会记住一条路径却从不会去探索其他的路径。但我们希望它可以尽可能多的探索新的路径,于是便引入了一个名为ε的超参数,它可以用来控制算法分别以多大的比例去探索新的路径,以多大的比例去开拓原有的路径。

经验回放(Experience Replay)

在训练神经网络的过程中数据的不平衡会带来很多问题。如果一个模型通过主体与环境的交互进行训练的话就会产生不平衡的问题。最近的几次训练交互过程将会产生比先前的更显著的影响。

所以我们会将所有的状态和相关的数据都存储下来,而后神经网络将会随机的从中选取相应的交互状态并进行学习,以此来避免数据不均衡的问题。

训练架构

这是深度Q学习的完整架构。需要注意的是【γ】这代表了折扣奖励(Discounted Reward)。这是一个用于控制未来奖励权重的超参数。符号【'】代表下一个次,【s’】就意味着下一个状态。

深度Q学习的训练架构

扩展强化学习

强化学习在大多数情况下都有良好的表现(AlphaGo),但当得到的反馈比较稀疏的情况却会出现问题。主体在很多时候都不会去探索那些长期获益的行为。有时候比起直接去解决问题,主体通过内部动机来对一些行为进行探索也是必须的。这使得主体可以表现出复杂的行为,同时本质上也使得主体有了“计划”行为的能力。分层学习使得这样的抽象学习成为可能。

分层深度Q学习

分层深度Q学习

这一架构中有两个Q网络,分别代表控制器和超控制器。超控制器寻找原始的状态并计算出需要实现的目标,而控制器则控制状态向着目标前进,并输出用于解决这一目标的策略。在通过严格的检验后如果目标达成则会给与控制器相应的奖励。当迭代周期完成或者达到目标时控制器便停止工作,并生成一定的奖励给予控制器。随后超控制器会选择新的目标,并重复上面的过程。这其中的‘目标’是用来帮助主体获得最后的奖励。

好了,以上就是强化学习的一些基本概念。大家一定想更深入地了解强化学习,也想尝试一下强化学习啦,下面就是一些给大家提供的资料。

强化学习的入门资料

对于理解强化学习的数学和过程十分有用。

  • 分层学习

Hierarchical Learning paper explanation video from the authors.

包括当今强化学习研究的方方面面,深入浅出的为你展示出强化学习的全貌!

Deep Q Learning in action. Output of python script in Point 5

也许是有史以来最简单的深度Q学习的Python实现,简单易读可以作为实践强化学习不错的开始~