QLearning
迷宫寻宝游戏
我们这里有一个最简单的2*2的迷宫,左上角为起点(1),右下角为宝藏(4),要提防的就是左下角的陷阱(3)。作为高智商物种,我们一眼就可以看出来最优路径就是1-2-4,而对于计算机则不然,他刚开始对这些没有任何的概念,这些信息都要它自己探索获得,或者我们直接把环境信息构建好告诉他。
在上面这个例子中,我们要设计奖惩规则,比如,我们的目标是最少步骤内拿到宝贝同时还要避免掉坑(陷阱)里去,所以呢我们把每走一步奖赏设为-1,掉坑里的话奖励他-10,拿到宝贝的话奖励+10。单纯的定个奖惩规则还不够,我们还要告诉机器这边寻宝地形情况是怎样情况的,在每个状态可以有哪些行动,然后每个行动又会走到哪里去等等,这些都需要我们事先定义好!所以我就感觉这一开始就是一件工作量很大的事情,而且一般情况下将某个具体的环境转化成为计算机能理解的信息(例如通过向量,矩阵或者神经网络,它们都是一个具体或者抽象的对应形式)也不是一件容易的事情。anyway,具体的转换方法会在后边代码中显示,我们move on !
3.Q-Learning算法:
这里,你只需要知道这个所谓的Q-Learning只是强化学习中在探寻最优策略时候所用的众多算法中的一种……类似的还有价值迭代,策略迭代等,以后会逐步涉及。Q-Learning的基本步骤如下:
- 第一步
(1)初始化Q-table矩阵,在上边例子中,我们有四个状态(s1,s2,s3,s4),然后在每个状态都有五中行动方式(上,下,左,右,不动),所以呢,这个Q-table就是一个45的矩阵,行为四个状态,列为五种行动方式。最开始呢,电脑是没有任何概念的,认为这些状态和行动都没啥区别,数值表现都是0。
(2)除了初始化Q-table,我们还要把游戏的规则说明白了,即定义奖赏机制,就是那个走一步-1,掉坑里-10,拿到宝贝+10的规则,我们也要通过矩阵(45)表示出来。
(3)另外还有游戏的地形是怎样的,即哪个状态下执行某个动作后会进入哪个新状态。
2.第二步
针对每一个episode(一次从开始到结束的过程),选择起始state。在这里的话我们是从左上角state1开始,就是确定的了,可能以后更高端的是随机选吧。选择当前state下的一个可能的action,目前这里边就用相同概率去做选择,复杂一点的选不同action的概率可以不一样。(如贪心算法)。
作为上步action的结果,转移到下一个状态s’
再次基于目前状态s’去选择一个行动a’
使用BellmanEquation(贝尔曼方程)更新Q-table。这里提到贝尔曼方程,这是什么鬼?这可以说是Q-learning的一个核心了。其方程如下:Q(s,a)=r+γ(max(Q(s′,a′))其中,s:当前状态state;a:从当前状态下,采取的行动action;s’:今次行动所产生的新一轮state;a’:次回action;r:本次行动的奖励reward,是进到一个状态马上就能获得的奖励;γ:折扣因数,表示对长远利益的看重程度,其中0表示只看重下一步奖励(目光短浅),1表示看重整体的奖励情况(目光长远)。
将进入的下一个状态设为当前状态,不断迭代
如果达到目标状态,结束算法。