强化学习是什么
我们先通过图一的三种方法的对比来看看强化学习和其他方法的差异是什么:
![](https://i-blog.csdnimg.cn/blog_migrate/0967cbf2dc4b583548225c1118de1099.png)
有监督学习(supervised learning):
它的数据都是有标签y的。比如手写数字分类问题中,输入的是手写数字的图片,标签就是这个图片属于的类别,比如所有数字0的类别是0,这样手写数字集会有10个类别,0-9就是它的标签。
有监督学习的目标就是对于输入数据x,预测出它所属的类别y。 如输入一张6的图片,输出是这个图片属于的类别,假如预测正确的话,y就是6。 图中的例子是给一个苹果的数据,有监督学习的输出是苹果的标签。
无监督学习(unsupervised learning):
无监督学习只有数据x,没有标签y。不仅测试数据没有y标签,训练数据也没有y标签。比如人类大脑的不同区域的数据可能会对应不同的功能,但是我们不知道那些功能是什么,能分成多少种类别。无监督学习的目的就是学习这些不同区域内的数据的特点,学习潜在的结构,将相似的数据点聚成一类。当来了一个新的数据时,可以根据它的潜在的数据特点,将它归为某一个类别中。图中的例子指的是来了一个红色的苹果,它和白色苹果的特点很相似,那就把它和白色苹果归为一类,虽然它可能也不知道白色苹果到底是什么。
强化学习(reinforcement learning):
在强化学习中,有一个agent能在环境中采取行动并获得这个动作对应的reward。强化学习的目标是学习采取什么样的行动才能最大化reward.
在有些强化学习中,如q-learning中,数据是状态(state)-动作(action)对。比如小朋友在家里时可以选择看电视,也可以选择学习。“小朋友在家里“是一个状态,“看电视“和“”学习“是两个不同的动作。在这个特定状态的选择不同的动作会得到不同的奖励(reward)。比如选择学习会奖励一颗糖果(奖励+1分),选择看电视会被批评(奖励-1分)。
强化学习的目标是最大化未来的奖励。比如小朋友为了让奖励最大化,可能会一直选择学习。
图中的例子是,当出现一个苹果,强化学习会选择一个动作,比如吃了它。因为它能让人活着,能得到正向的奖励。
强化学习中的概念:
![](https://i-blog.csdnimg.cn/blog_migrate/5cb1366b08152f0caa206013428f6a42.png)
agent是采取行动的主体,比如超级玛丽游戏中的玛丽,下围棋时的一个玩家,比如在现实生活中,你就是一个agent。
environment是agent存在的地方,在environment中,agent能执行一些actions。
action是指agent在environment中能做的一些操作。表示在时间t采取的行动。agent能采取的行动通常有一个动作集。比如在小霸王游戏中,手柄能操作的常用键一般是上下左右4个方向键还有其他几个功能键,这些动作属于离散的集合。也有一些动作是连续的,比如自动驾驶汽车中方向盘的角度。
observation是指agent在environment中采取了一个action之后,environment返回的一个状态,比如在超级玛丽游戏中按了一个上跳的按键,那返回的observation就是玛丽跳起来的画面。
state是agent能看到的,听到的,感受到的状态。
reward是指在agent在某一个observation下执行某个action之后environment给的一个成功或者失败的反馈。比如超级玛丽碰到了一个金币,就会得到一个正向的reward。reward可以很快速的获得,比如超级玛丽碰到金币分数马上就增加。也可以延时获得,比如超级玛丽发射子弹去打一个在远处的乌龟,在执行发射子弹的那个瞬间,小乌龟并没有被打中,reward不会有变化。而是当过了一小段时间,当子弹碰到并消灭乌龟时,environment才会给一个正向的reward。又比如下棋的时候,在一局棋没有结束之前,每下一步两个玩家都没有reward,一直到一局结束才会获得赢了,输了或者平局的reward。这个reward可能延时了很长一段时间才获得。
total reward是指从时间t开始到未来获得的总的reward。如果用表示时间t获取的reward,total reward可以表示为:
它表示时间t,t+1……t+n ……所有reward的总和。如果时间是无穷多的,那total reward也是无穷大的,这不是一个好的数学公式的特性。所以就有了discounted total reward。
discounted total reward 引入一个折扣因子,
是一个在[0,1]区间的数,它表示离时间t越近的reward能获得越高的权重,离时间t越远的reward的权重会减少。
如果=1,表示在任何时间获得的reward的权重是一样大的;如果
=0,表示只采用当前获得的reward,之后获取的reward均为0。
越小,表示agent越重视短期奖励,
越大,表示agent越重视长期奖励。
上面就是强化学习中经常会使用的概念和术语。
举个例子,下面是超级玛丽游戏中各个术语的表示。state就是目前游戏的画面,environment就是这个游戏,action是手柄上的可以操作的键,reward是游戏的得分。
![](https://i-blog.csdnimg.cn/blog_migrate/ef40e4e4849e9d412c45438851a01dc8.png)
Q function
![](https://i-blog.csdnimg.cn/blog_migrate/89bcc73f32a1b7bec55282c65a4508af.png)
从上一节可知,未来总奖励是从时间t开始获取的所有的折扣reward的和。Q 函数(Q function)表示agent在状态s下执行行动a能获取到的期望的未来总奖励。它有两个参数,状态s和动作a,Q value 是Q function的值。
比如在自动驾驶时,s是指当前看到的画面,a是采取的一个动作,Q函数的值是在这个状态下这个动作能带来的期望未来总奖励。假如在一条笔直的路上,汽车平稳往前开,可能能获得一个比较高的Q value,如果汽车一会猛地往左打方向或者猛地往右打方向盘,就可能获得一个比较低的Q value。
强化学习里就是要计算Q function,在给定的状态和动作下,怎么计算total reward。
同时,我们还需要引入另外一个函数,策略函数 (policy function),它只有一个参数,状态s,所以它不关心agent采取什么行动。实际上,它的输出是在这个状态s下最期望的action。agent获取在某些state下观测到的世界,我们希望策略函数能输出在这个state下最优的action是什么。
假设我们能学习到Q function,那我们就能根据Q function推理policy function。我们尝试在状态s下所有的action,然后找到能产生最大Q value的动作a,这个能产生最大reward的动作a就是在状态s下我们想选择的动作。
两种学习方法
在强化学习中,有两种主要的学习policy function的方法。
一种是基于价值的学习方法(value learning),一种是基于策略的学习方法(policy learning)。
value learning是指先求在状态s和动作a下的Q function,然后在状态s下所有action中寻找能产生最大Q value的action。
policy learning 是我们不关心Q function的确切的模型,而是让模型的输出是需要的策略。所以它的输入只有状态s,它的输出不再是Q 值,而是各个动作的概率值。这些概率值加起来总和为1,所以我们只需要从通过概率中选择一个在这个state下的action。
其中deep mind 使用value learning来玩atari游戏,并能达到人类水平,alphago使用policy learning来下围棋。
蒙特卡罗(Monte Carlo)算法 和 时间差分(TD)算法
在超级玛丽游戏中,如果玩家死掉了或者将游戏玩通关了,则说一局(episode)游戏结束了。在一局游戏中,玩家可能需要经过很多步骤,在游戏中的每一个操作都是一个步(step)。
蒙特卡罗算法是在每一局(episode)结束的时候收集reward然后计算最大期望未来reward。reward的获取只能在游戏结束的时候才能获取。公式如下:
![](https://i-blog.csdnimg.cn/blog_migrate/2d9144747cd27e66271b7c7e65844a47.png)
而时间差分算法是在每一个步(step)结束的时候评估reward.
它不会等到一局游戏结束的时候才更新,而是在每一个非结束的状态都会更新评估值。
是即时获取的奖励,
是在时间t获得的目标reward
![](https://i-blog.csdnimg.cn/blog_migrate/aad1b1d6c2cb787bea60f8d76a0fff8b.png)
马尔科夫决策过程
参考:1. 深度强化学习:http://introtodeeplearning.com/materials/2019_6S191_L5.pdf
2.强化学习介绍:https://www.freecodecamp.org/news/an-introduction-to-reinforcement-learning-4339519de419/