IT课程

line-W

IT技术专业学习平台
IT人才专业服务提供商

 

line-W

全国热线:400-004-8626

line-W

06|动态规划:价值与学习

首页    技术博文    强化学习    06|动态规划:价值与学习


在强化学习第五课中,我们构建了一个冰面游戏,并描述了动态规划过程中的状态价值函数v的计算方式,眼神不错的同学可能已经注意到了,我在第五课中对于状态价值函数,既使用过小写的v也使用过大写的V,到底哪个才是状态价值函数的真身呢?

答案非常梦幻:v是状态价值函数的最终形态,是一个实数价值,而V则是AI处于不同格子s时的状态价值函数V(s)的集合,是一个矩阵!

img1

  • 学习过程

接下来,我们需要为v创建学习过程,并不断更新内容,也就是每次学习都更新当前时刻的V值到v,并计算误差,伪代码如下:

/- 载入降龙十八掌,内力传输开启 - /

确立一个最小化误差限度e;

初始化承载所有格子V(s)的矩阵V所有值为0;

/ - - 开始学习过程循环,提升真气 - - /

设定误差E初始值为0;

/ - - - 依次进入所有格子s,真气贯穿经脉,开始出拳 - - -/

1.把当前格子已有的V(s)赋值给v;

2.更新此时此刻当前格子的V(S): ( 其实就是第五课的公式1,这一步还没有计算max,其中是下一步可以踏入的格子,所以有多种可能性需要计算,最后求和即可,为折价值,可以人为控制各个状态奖励的折扣,这个之后再讲 )

3.E = max( E,|v – V(s)| ) ,对于每一个状态s,都需要比较一下当前计算出来的误差 |v – V(s)| 与传承下来的误差E,然后保留较大的那个,继续传承,所有格子循环完后就得到了全局最大误差E。

/ - - - 所有格子s循环完毕 ,经脉已通畅,出拳结束 - - -/

检查是否满足 E < e,如果满足就说明威力已购,敌人已挂,可以关闭学习过程,否则继续重复学习过程,再度运功准备出拳。

/ - - 最终满足E < e,降低真气,学习过程被关闭 - - /

返回最终学习完的矩阵V,这样就得到了所有的状态V(s)

/ - 内力传输被关闭,降龙十八掌打完收工 - /

img2

以上内容就承接了第五课中的故事,我们得到了冰面游戏的所有冰面值,即我们已经绘制出了整个冒险地图。而上节课中我们也讲述了AI在行动时,会了解到不同的格子之间行走均会获得不同的奖励值,而这个奖励值是人为规定的。到此为止我们已经学会了强化学习基本三要素q,v,s中的两个,接下来开始学习q值,即行动价值,这个参数描述了如何让AI学会行动,并积极往好的方向走,主动避免那些坑,我们先拿出两个格子来讲解。

  • 行动价值——AI的欲望

格子名称:s1

V(s1) = 0

r(s1_右) = +1

q(s1_右) = ?

格子名称:s2

V(s2) = 2

r(s2_左) = -1

q(s2_左) = ?

上面的两个格子中都写明了这个游戏需要用到的参数,由于AI在这两个格子之间行走方向比较单一,所以我略去了其他方向的r与q,真正冰面游戏时我们需要计算真正可以行走的各个方向,如何计算两个格子的q呢?

如果AI在s1,想向右走进s2,这时它知道口袋里没有钱(V(s1) = 0),但只要自己向右,就可以获得1元奖励(r(s1_右) = +1),并且前面那块大陆的价值是2元!所以我们可以单纯的认为q(s1_右) = r(s1_右) + V(s2) = 1 + 2 = 3,也就是此情此景下AI的行动欲望是3;

反观如果AI在s2,它需要向左走进s1, 这时它看到向左的奖励是 -1,似乎不太乐观,而且左边那块绿色的大陆没有任何价值(V(s1) = 0),感觉向那边走过去入不敷出啊。于是q(s2_左) = r(s2_左) + V(s1) = -1 + 0 = -1,所以此情此景下AI呈现出消极的状态,而这种消极状态的数字化形式就是这个q值 -1。

格子名称:s1

V(s1) = 0

r(s1_右) = +1

q(s1_右) = 3

格子名称:s2

V(s2) = 2

r(s2_左) = -1

q(s2_左) = -1

  • Try it yourself!

如果你看明白了,就赶紧拿张纸,把上节课的冰面游戏整个都画出来,可以按你的心情初始化所有的V(s)值,然后结合上节课已有的奖励值,计算出所有方格的q值。需要注意的是,你必须计算出所有可以前进方向的q值,即冰面游戏中的第一个格子s1,应该拥有向右与向下两个r值与q值,下一节课我们会继续讲解q值的学习与更新方法。

(The End)

2018年9月19日 13:45
浏览量:0
收藏
本网站由阿里云提供云计算及安全服务 Powered by CloudDream