上次讲了马尔科夫决策过程,今天让我们来看看要如何求解这个过程?
求解方法不止有一个,
有一种思路是,我们有一个 policy,即有了行为和状态的概率分布。
对其进行初始化,可以是随机的,也可以根据具体问题用一些先验知识初始化。
然后想要改进这个 policy,可以通过获得数据,玩几次游戏,不断重复,policy 会随着这个过程调整变得越来越好。
符合这个思想的有一个算法叫做: crossentropy 方法。
还是以学自行车为例,开始的时候是等可能地踩脚踏板,向各个方向转轮子,有时候可能会马上就摔倒,有时候可能会骑一段距离。
摔倒再起来重新骑,比如这样骑了一百次,然后有些时候会做的比较好了,不会立刻摔倒了。
那么我们就想更频繁地采取一下这样的行动,
例如我们观察到,如果将轮子转到摔倒的那个方向的对立面,就会骑得更长一些,然后我们就会觉得,如果增加这样做的概率,我们就可能骑得更久一些。
重复这样一整个过程,我们骑自行车就会更顺手,更不容易犯错。
这样的方式学习骑车100次,从中选择几次最有效率的过程,开始的时候可能会选择不摔倒,现在可能是在一米之内不要摔倒。
然后用一个非常简单的算法去迭代,来不断的调整这个 policy,最后就到达了一个最优的 policy,这时候就能够非常熟练地骑自行车了。
再来看这个公式,它的意思就和上面的例子是一样的,也是一个很符合直觉的思想:尝试了 N 次,选择其中最好的 m 次,称为 elite,然后调整 policy 来增加在 elite 里面的 action 的概率。
最简单的情况是这个 policy 只是一个表格,它可以记忆所有的概率。
例如骑自行车有十种情况,可能倒向左边,倒向右边,保持在中间,骑得快,骑得慢等等。
对每种情况都有转向左边,转向右边,或者加速减速的概率。
那么首先初始化这些概率,例如用 uniform 随机分布,它可以保证等可能的尝试所有的行为。
再从这个概率分布中取样来选择行为。
然后开始骑车,例如尝试骑自行车连续100次。
从这100次尝试中,选择了25个最好的,作为 elite。
然后建立了一个新的 metrics:
我们去数这些 elite 过程中的状态和行为:
对每个 state 我们都数一下出现了多少次,也数一下处于这个状态中,多少次采取了什么样的 action。
然后做除法来得到这个概率分布,
再不断重复这个过程,这个概率分布就会不断地更新,不断地优化,骑车也就可以变得越来越好。
学习资料:
Practical Reinforcement Learning
推荐阅读 历史技术博文链接汇总
http://www.jianshu.com/p/28f02bb59fe5
也许可以找到你想要的:
[入门问题][TensorFlow][深度学习][强化学习][神经网络][机器学习][自然语言处理][聊天机器人]
Hello World !
This is 不会停的蜗牛 Alice !
🐌 要开始连载强化学习系列啦!
今天开始我们一起来每天 2 分钟,get 强化学习的一个小知识吧!