【强化学习相关】吴恩达机器学习笔记EP14(P131-P142)
从今天开始我将学习吴恩达教授的机器学习视频,下面是课程的连接1.1 欢迎来到机器学习!_哔哩哔哩_bilibili。一共有142个视频,争取都学习完成吧。
本篇文章将是吴恩达机器学习笔记这个系列的完结篇!完结撒花!
状态动作值函数定义
紧接着上一次的内容,这里引入了一个函数Q(s, a),还是跟之前一样,s表示初始状态,a表示动作方向。这个函数表示在s状态下可能选择采取的行动。这个Q(s, a)函数最基本的算法如下所示:1)从一个状态s开始;2)采取一次行动a;3)在这之后使用最佳的行为更新。
下图有几个计算的示例。
这个Q函数表示的是每个动作真正的价值,表示在状态下采取行动有多好。
选择执行的动作:1)状态s下最好的return是Q(s, a)最大的时候;2)在当前状态s下,采取最好的动作a,是Q(s, a)最大的时候。
Bellman方程
刚刚介绍Q(s, a)函数的计算方法会比较复杂,这里使用Bellman方程定义Q函数。
首先再次说明几个参数的意义:
s:当前状态
a:当前动作
s’:通过动作a,更新的新状态s‘
a’:到s’状态的动作
下图红框中就是Q函数的计算方法。
R(s)表示即时奖励,也就是当前状态下的奖励,加号右边部分表示从状态s’开始的最佳行为的return。
随机环境
在现实环境下,机器不一定能按照计划行动,因为会受外界的影响。(比如掉进坑里面,或者被风吹走)所以在随机强化学习当中,最期望的不是最大化return,因为在刚刚说明的Q函数的计算方法中,在随机环境中,我们无法确定s’,这个return会是一个随机数。所以随机环境下,最期望的应该是最大化return的平均值。
连续状态空间应用示例
之前的火星探测器例子当中,更新的状态只有1、2、3……6个状态,是一个离散状态。
但是在真实的环境中,需要考虑很多的因素,是一个连续的状态。比如下面这个驾驶的例子当中,对于这个汽车来说,它的状态向量由x位置、y位置、角度、x方向速度、y方向速度、角速度组成。
月球着陆器
然后介绍一个月球着陆器的例子。
这个例子当中,奖励函数可以这样设置:
成功着陆在两个旗子中间加100到140分。
额外奖励是靠近/原理着陆点时。
毁坏机器减100分。
软着陆(着陆并且没有损坏机器)加100分。
一个腿着陆加10分。
点燃主发动机和点燃侧推进机分别扣0.3分和0.03分,这两个的作用是鼓励不要浪费太多燃料。
然后这个学习的目标是学习一个策略π,状态向量为s,采用动作a=π(s)让return最大。
学习状态值函数
可以将强化学习和之前的神经网络结合。
神经网络的作用就是输入一个向量,然后输出一个Q(s, a)。
输入的向量前面一半的字母表示对应的状态,后面一半的0和1是one-hot编码,表示动作。
然后使用这个神经网络计算各个Q(s, a),目标是采取动作a最大化Q(s, a)。
训练这个神经网络,目标是输入x,试图准确预测右边的y输出。
注:一开始不知道Q(s, a)函数是什么样的,完全可以随机一个Q(s, a)。
下面这个就是在月球着陆器上面的示例:
月球着陆器执行动作,获得(s, a, R(s), s’)。
存储10000个最近的元组。
用这10000个示例创建训练集。
训练函数Qnew,并更新函数Q。
算法优化——改进的神经网络结构
刚刚的算法中,训练四个神经网络,分别输出Q(s, nothing), Q(s, left), Q(s, main), Q(s, right)是低效的。所以可以将它们整合在一个神经网络当中,把输出层改为四个神经元。
算法优化——ε贪婪策略
小概率选择随机动作a,可以让系统执行更多动作,找到更多可能获取更高分数的动作。(比如如果系统从没有做过启动推动器,它永远不会知道启动主推动器会是一个好的办法)
这个发生小概率事件的可能性大小称为ε——贪婪策略。
刚开始ε可以设很大,让系统做更多没做过的事情,可以设成1。ε随着训练过程减小。
算法优化——小批量和软更新
当数据集的数据过大时,意味着梯度下降的每一步都要更新大量参数,所以可以将整个数据集分成多个小批次进行训练。
每次梯度下降都只查看随机一个mini-batch的数据。
全局来看,小批量梯度下降也在趋于最低点,虽然过程曲折,但是减少了计算量。
应用在刚刚的例子上,就是可以把很大的10000个数据,每次只取大数据集中的一个子集。
软更新就是更新参数的时候,新参数只占很小的一部分,依旧让原参数占主要因素。这样的做法可以渐进更改参数。
强化学习的状态
下面是强化学习的现状:
1)强化学习算法在模拟环境下工作比真实情况下容易得多。
2)对比监督和无监督学习应用少得多。
3)强化学习有非常广阔的研究空间。
本课程的内容回顾总结
最后是本课程的内容回顾与总结,具体都在下图。完结撒花!