其他许多机器学习算法中学习器都是学得怎样做,而强化学习(ReinforcementLearning,RL)是在尝试的过程中学习到在特定的情境下选择哪种行动可以得到最大的回报。在很多场景中,当前的行动不仅会影响当前的rewards,还会影响之后的状态和一系列的rewards。RL最重要的3个特定在于:
上图中agent代表自身,如果是自动驾驶,agent就是车;如果你玩游戏它就是你当前控制的游戏角色,如马里奥,马里奥往前走时环境就一直在发生变化,有小怪物或者障碍物出现,它需要通过跳跃来进行躲避,就是要做action(如向前走和跳起的动作);无人驾驶的action就是车左转、右转或刹车等等,它无时无刻都在与环境产生交互,action会反馈给环境,进而改变环境,如果自动驾驶的车行驶目标是100米,它向前开了10米,那环境就发生了变化,所以每次产生action都会导致环境改变,环境的改变会反馈给自身(agent),就是这样的一个循环;反馈又两种方式:
Agent可能做得好,也可能做的不好,环境始终都会给它反馈,agent会尽量去做对自身有利的决策,通过反反复复这样的一个循环,agent会越来越做的好,就像孩子在成长过程中会逐渐明辨是非,这就是强化学习。
如上图左边所示,一个agent(例如:玩家/智能体等)做出了一个action,对environment造成了影响,也就是改变了state,而environment为了反馈给agent,agent就得到了一个奖励(例如:积分/分数),不断的进行这样的循环,直到结束为止。
上述过程就相当于一个马尔可夫决策过程,为什么这样叫呢?因为符合马儿可夫假设:
上图右边所示,S0状态经过了a0的行为后,获得了奖励r1,变成了状态S1,后又经过了a0行为得到奖励r2,变成了状态S2,如此往复循环,直到结束为止。
通过以上的描述,大家都已经确定了一个概念,也就是agent(智能体)在当下做出的决定肯定使得未来收益最大化,那么,一个马儿可夫决策过程对应的奖励总和为:
t时刻(当下)的未来奖励,只考虑后面的奖励,前面的改变不了:
接下来,当前的情况下做出的动作是能够得到结果的,但对于未来的影响是一个不确定的,这也符合我们的真实世界,比如谁都不知道一只蝴蝶只是煽动了一次翅膀会造成飓风式的影响(蝴蝶效应)。所以,当前的行为对于未来是不确定性的,要打一个折扣,也就是加入一个系数gamma,是一个0到1的值:
Rt可以用Rt+1来表示,写成递推式:
Q(s,a)函数(Quality),质量函数用来表示智能体在s状态下采用a动作并在之后采取最优动作条件下的打折的未来奖励(先不管未来的动作如何选择):
假设有了这个Q函数,那么我们就能够求得在当前t时刻当中,做出各个决策的最大收益值,通过对比这些收益值,就能够得到t时刻某个决策是这些决策当中收益最高。
于是乎,根据Q函数的递推公式可以得到:
这就是注明的贝尔曼公式。贝尔曼公式实际非常合理。对于某个状态来讲,最大化未来奖励相当于最大化即刻奖励与下一状态最大未来奖励之和。
Q-learning的核心思想是:我们能够通过贝尔曼公式迭代地近似Q-函数。
DeepQLearning(DQN)是一种融合了神经网络和的Q-Learning方法。
使用表格来存储每一个状态state,和在这个state每个行为action所拥有的Q值.而当今问题是在太复杂,状态可以多到比天上的星星还多(比如下围棋).如果全用表格来存储它们,恐怕我们的计算机有再大的内存都不够,而且每次在这么大的表格中搜索对应的状态也是一件很耗时的事.不过,在机器学习中,有一种方法对这种事情很在行,那就是神经网络.
我们可以将状态和动作当成神经网络的输入,然后经过神经网络分析后得到动作的Q值,这样我们就没必要在表格中记录Q值,而是直接使用神经网络生成Q值.
还有一种形式的是这样,我们也能只输入状态值,输出所有的动作值,然后按照Qlearning的原则,直接选择拥有最大值的动作当做下一步要做的动作.
我们可以想象,神经网络接受外部的信息,相当于眼睛鼻子耳朵收集信息,然后通过大脑加工输出每种动作的值,最后通过强化学习的方式选择动作.
这一部分就跟监督学习的神经网络一样了我,输入状态值,输出为Q值,根据大量的数据去训练神经网络的参数,最终得到Q-Learning的计算模型,这时候我们就可以利用这个模型来进行强化学习了。
强化学习和前二者的本质区别:没有前两者具有的明确数据概念,它不知道结果,只有目标。数据概念就是大量的数据,有监督学习、无监督学习需要大量数据去训练优化你建立的模型。
在不同的任务中都会有一些共性,而这些共性就构成了多任务学习的一个连接点,也就是任务都需要通过这个共性能得出结果来的。比如电商场景中的点击率和转化率,都要依赖于同一份数据的输入和神经网络层次。多语种语音识别等。