学习过传统的监督和无监督学习方法后,我们现在已经可以自行开发机器学习系统来解决一些实际问题了。我们能实现一些事件的预测,一些模式的分类,还有数据的聚类等项目。但是这些好像和我们心目中的人工智能仍有差距,我们可能会认为,人工智能是能理解人类语言,模仿人类行为,并做到人类难以完成的工作的机器。所谓KNN、决策树分类器,好像只是代替人类进行一些简单的工作。
但今天,我们似乎在强化学习的领域找到了通往真正的人工智能的大门。经过强化学习训练的AI,似乎已经可以做到人类做不到的事情。chat bot可以生成逼真的语言,GAN可以进行艺术创作,甚至有些AI可以在星际争霸上打赢人类玩家。这些工作都与强化学习分不开关系。
我们之前实现的学习井字棋强化学习似乎已经能在完全没有训练资料的情况下学会下棋,甚至可以在不犯任何失误的时候找到人类的破绽。虽然井字棋这个游戏非常简单,对20000不到的状态空间,我们可以直接在蒙特卡洛树中搜索出最好决策,但是这依然体现了强化学习的潜力。
在之前的学习过程中,我们学习了表格型的Q-Learning,在表格型的Q-Learning方法的学习过程中,我们逐渐会形成一张表格。在许多简单的问题中,这种表格型的Q-Learning方法是比较实用的,但是当我们所处理的问题具有较大的状态集合动作集时,这种表格型的方法就显得十分的低效了。此时我们需要一种新的模型方法来处理这种问题,所以出现了结合了神经网络的Q-Learning方法,Deep Q-Learning(DQN),通过在探索的过程中训练网络,最后所达到的目标就是将当前状态输入,得到的输出就是对应它的动作值函数,也即f(s)=Q(s,a)f(s)=Q(s,a)f(s)=Q(s,a) ,这个f就是训练的网络.
Deep Q learning我们前面学习井字棋使用的学习方法是让机器对弈,产生一条情节(episode)链,然后从后向前遍历序列并更新Q值。每个状态的更新公式都决定于该步action的奖赏和后续一个状态的Q值。
Q(x,a)=(1−α)Q(x,a)+α(R(x′,a′)+γQ(x′,a′)) Q(x,a) = (1-\alpha)Q(x,a)+\alpha (R(x',a') + \gamma Q(x',a')) Q(x,a)=(1−α)Q(x,a)+α(R(x′,a′)+γQ(x′,a′))
使用神经网络来做deep的end to end Q学习时,这个问题就不是直接修改表,而是让模型做一个回归。回归使用的误差函数是MSE均方误差。就是把上面的公式计算出来的新Q值当作回归目标,计算网络输出和它的均方误差,然后用梯度方法更新一下就好了。
原创文章 50获赞 9访问量 4486
关注
私信
展开阅读全文
作者:Hαlcyon