目录
1.强化学习简介
2.强化学习的概念:
3.马尔可夫决策过程
4.Bellman方程
5.Q-Learning基本原理实例讲解
1.强化学习简介
世石与AlphaGo的这场人机世纪巅峰对决,不但吸引了社会各界的目光,更激起了一场关于人工智能的全民大讨论,“机器人会不会抢了人类的饭碗”、“人工智能是否将毁灭世界”等说法不断涌现。
其中,AlphaGo最底层最核心的原理就是强化学习。
那么什么是强化学习呢?
我们先看一个故事:
小明现在有一个问题,他要决定明天是学习还是去打球。现在就有两种可能性,打球和学习,如果现在的情况是,选择打球,那么小明将会受到批评,如果选择学习,他会受到奖励。显然,小明很大可能性会选择学习。
这就是强化学习的内部机制。当对象在做一个决策的时候,算法会对每种可能性做一次函数计算,计算得到的结果叫做奖励值,奖励值会作为本次决策的重要参考标准。
那么对于AlphaGo来说,它会提前学习很多棋谱,超级多的棋谱,当它在决定一个棋子放的位置的时候,它就会计算,假如放在某个位置,所得到的奖励值是多少。然后它将会选择奖励值最高的位置,然后将棋子放在这个位置。这就是利用强化学习来下棋。
对于强化学习来说,学习系统没有像很多其他形式的机器学习方法一样被告知应该做出什么行为,必须在尝试了之后才能发现那些行为会导致奖励最大化,当前的行为可能不仅仅会影响即时奖励,还会影响下一步的奖励以及后续的所有奖励。
2.强化学习的概念:
作为这个世界上最强最高级的智能体,我们的大脑每时每刻都在进行决策,但是我们每个决策的过程就是这三个步骤:观察→行动→观测。我们通过观察周围的环境,然后做出相应的行动,然后在行动结束后,外界环境会给我们一个信号,这个信号是说我们的行动对外界造成了一定的影响,这些影响会得到一个结果(实际上就是上文说的奖励值),环境将影响通过这个信号让我们知道了。我们得到这个奖励值后,会根据新的环境和得到的奖励值,来进行下一个决策。
强化学习中的对象,我们叫做智能体(agent) ,对于智能体来说,实际上也是在进行上述过程,即先观察,再行动,再观测......每一个动作(action) 都能影响代理将来的状态(state) ,通过一个标量的奖励(reward)信号来衡量是否是最优选择,其中目标是:选择一系列行动来最大化未来的奖励。
关于以上的名词,我们用例子来说明:
状态(state):
经验就是我们在观测,行动和收到奖励的过程中的得到的一系列信号值。而状态就是这些经验信号值的集合。
智能体(agent)会根据当前的环境状态(或者是观测值)来同时选择并执行各自的动作,该各自动作带来的联合动作影响了环境状态的转移和更新,并决定了智能体获得的奖励反馈。它可以通过元组 < S,A1,...,An,T,R1,...,Rn > 来表示,其中 S 表示状态集合,Ai 和 Ri 分别表示智能体 i 的动作集合和奖励集合,每一个状态Si都会根据当前的Rt+1和At来执行新的At+1并得到新的Rt+2,如此朝着奖励值最大的方向迭代。
我们来看一个例子:
这个任务的目标就是:让小车上的杆子保持竖直。
那么该任务的有关情况如下:
状态(state): 杆的角度和速度。
行动(action): 小车进行左或右方向移动。
奖励(reward): 杆子不倾斜,设置奖励值为1,杆子倾斜,设置奖励值为0。
此时,过程是:小车会根据杆的角度和速度来决定向左移动还是向右移动,执行完移动操作后,小车会得到一个奖励值(杆子斜了就给0,不斜就给1),此时会产生新的角度和速度,小车再根据新的角度和速度做出相应动作。如此向着奖励值最大的方向迭代,这就完成了让小杆不倒的任务。
3.马尔可夫决策过程
首先,使用马尔科夫决策是有一定要求的:
(1)能够检测到理想的状态 。
这句话的意思是说,在一个决策过程中,必须知道你要达到的最好的目标状态是一个什么状态,比如说AlphaGo下围棋的时候,它需要知道什么样的一个状态表示这个围棋赢了。
(2)可以多次尝试。
决策过程中,需要多次尝试,一步一步达到目标状态,有些任务是不允许尝试的,这类任务是不适合强化学习的。
(3)系统的下个状态只与当前的状态信息有关,而与更早之前的状态无关,在决策过程中还和当前采取的动作有关。
马尔可夫决策过程由5个元素构成:
过程是这样的:
(1)智能体的初始状态为S0。
(2)选择一个动作a0。
(3)按照概率转移矩阵Psa转移到下一个状态S1,在这里,S1为概率最大的状态。
(4) 重复(2)(3)两步,一直到达目标状态。
状态价值函数:
这个函数表示:在t时刻,有一个状态s,那么在这个状态下,所能获得的最终结果或者是最终平均结果是多少,这个函数就是用来计算这个状态下能够获得的未来回报的期望是多少。
价值函数用来衡量某一个状态或者状态-动作对的优劣评价,也就是要看当前这样的状态合不合适,有多合适。它计算的是累计奖励的期望,因为它会算当前的状态和当前以后的状态全部累积得到的最后的期望值。
它是计算某一个策略下所能得到的回报结果,那么前文说了强化学习需要试错,要不断尝试,那肯定有很多策略啊,我要选出最好的策略,那肯定要把所有策略放在一起比一比啊,那怎么办呢?不慌,我们有下面这个函数!
最优价值函数:
最优价值函数是指所有策略下的最优的累积奖励期望。也就是找出我们最好的那个策略。
那么什么是策略呢?
策略:
已知状态下可能产生动作的概率分布。
4.Bellman方程
当前状态价值和下一步的状态价值以及当前的奖励(Reward)有关,将当前的价值函数分解为当前的奖励和下一步的奖励两部分。
这样说有点不太好懂,我们来解释一下:
是给定状态s的情况下,动作a的概率分布。
动作空间A,状态空间S均为有限集合,所以我们可以用求和来计算期望。
解释一下: 要求当前的状态价值,先乘上执行某个动作的概率(上面树状图中只有两个动作),括号里面我们要先加上当前状态的即时奖励,然后后面部分先乘上一个折扣因子![\gamma](),然后再乘以转移到别的状态的概率矩阵(因为我们每个状态要试一试,所以只能通过概率来实现),然后再乘以下一个状态的价值函数。(这里相当于递归)
解释一下: 这个公式是说当前状态St,执行动作At,到达状态St+1,这种转变的概率值是多少。
也可以这样写:
一般公式对小白不太友好,那我们来看个例子吧:
解释一下: 对于红色圈7.4来说,它是怎么得来的呢。对于7.4来说,它可以向上执行a3到达0点,也可以向下执行a4到达下面的点。我们假设执行活动a3和a4的概率都为0.5,其中0为正方形,代表终止,而执行a3的即时奖励为10,那么计算执行a3就是0.510,这个比较简单,当执行a4的时候当计算完成即时奖励(由图可知为1)后还不行,因为上文说了当前状态价值不仅要算即时奖励还要算下一个状态的奖励,那么下一部分的有三条路可以到达,就是途中的1和2 和3这三条路,对应的奖励分别为-1.3,2.7和7.4。那么应该这样算0.5[1+0.2(-1.3)+0.42.7+0.4*2.7],将两个算式加起来就是7.4的由来,上图中-1.3,2.7,-2.3都是这么来的。看完这个例子,是不是对Bellman方程理解了呢。
5.Q-Learning基本原理实例讲解
上图是一个房屋的俯视图,号码代表房间号,其中5号代表是外面。研究的问题是如何才能走出房间。
那么对于这个问题来说。是这样的情况。
房间2能执行的动作是走到房间3,房间3能执行的动作是走到房间1或者房间4,房间1能走到房间5等等。
可以把每个号码当成一个状态,其中目标状态是状态5,也就是出去了。
可以将上图抽象成下图:
其中状态5有一个指向自己的箭头,是因为一旦到达状态5,那么将一直循环状态5,不会再转向其他状态。
下一步我们要构造奖励值得。
这里将能够到达目标状态5的地方将奖励设置为100,其他都为0。
现在,这幅图我们能理解,但是计算机不能够理解,下面我们将这个图转化为矩阵。
构造的矩阵中,没有联系的点之间我们将元素值设置为-1,若有联系,就以奖励值为元素值。
下面我们就要开始计算,计算前,我们先看一看计算步骤。
以上面的图为例,假如我们要计算状态3,这时候我们就要计算Q(3,1),Q(3,4),因为状态3可以执行到达状态1这个动作也可以执行到达状态4这个动作。通过计算我们会得到一个表格,这个表格能表示每个状态转换至另一个状态,它将得到的期望奖励,有了这个表格我们只要向着奖励值最大的状态走,就可以了。而这个表格是通过迭代计算得到的。
其中step3的循环是相对于每一条路线来执行一个循环,比如2,3,1,5是一条线,会执行一个完整的循环,0,4,5是一条线,会执行一次完整的循环。最终将所i有的线都找出来。
针对上面例子这样计算:
首先取![\gamma]()=0.8,初始状态为1,并将Q初始化一成一个零矩阵。
其中行表示状态S,列表示动作A,比如Q23就表示从状态2,执行走向状态3的动作时候所能得到的奖励值。
观察矩阵R的第二行(对应房间1或状态1),它包含两个非负值,即当前状态1的下一步行为有两种可能:转至状态3或转至状态5.随机地,我们选取转至状态5.
想象一下,当我们的agent位于状态5以后,会发生什么事情呢?观察矩阵R的第6行它对应三个可能的行为:转至状态1,4或5,那么我们应该这样计算:
这个算式结果为100.所以我们将Q中对应的位置改为100.
接下来,进行下一次episode的迭代,首先随机地选取一个初始状态,这次我们选取状态3作为初始状态,观察矩阵R的第四行(对应状态3),它对应三个可能的行为:转至状态1,2或4.随机地,我们选取转至状态1.因此观察矩阵卫的第二行(对应状态1),它对应两个可能的行为:转至状态3或5.
那么应该这样算:
结果为80,更新Q:
就这样,一步一步的执行,执行很多次之后,我们就会得到一个收敛状态的Q,什么叫收敛状态?收敛状态就是指你无论再跑多少次,Q中的元素都变化不大了。
这个Q中的元素看起来有点大,所以我们可以对其进行归一化处理得到:
最终我们得到这张图:
强化学习是什么,看到这里,你一定有了自己的理解!
若有写的不对的地方,望各位读者多多包涵,批评指正。
原文:https://juejin.cn/post/7094809073446551560