今天,来说说q-learning.在我最近学习机相关资料后.首先关于q-learning 是一个马尔科夫决策的过程(markov).公式如下:
Q(st,at)←Q(st,at)+α[rt+1+λmaxaQ(st+1,a)−Q(st,at)]
这里的Q 就是Q表,
α是学习效率,
r是奖励(立马奖励),
λ的意思我一时词穷了我自己取一个远见值吧(0~1)
好了, 这些东西呢,大家只要搜一搜应该都能搞明白.接下来我就来说说我的理解吧
首先这个学习效率,大家稍微思考一下就明白了,比如传一个0 就是不学习嘛,传1就是专心学习咯.那就有人会问了,如果是这样的话 我就是为了学习的呀,训练一个决策的Q表呀,那我肯定是传1最好了! 对的,这样想完全正确, 那么有没有想过,你训练完之后是不是要用这个表来做决策呢? 想到这里大家应该就明白了, 这就相当于一个debug 一个realse一样, 你的学习过程就是debug环境下的调试过程, 这个时候学习效率传1最后了,最快的学习好, 然后当你学习好了之后传一个0 就变成生产环境了. 这个时候就可以放行使用了.不用担心还会出现一些debug的时候的奇怪的问题出来(比如调试代码什么的).
这里顺便提一下,markov决策里面有一个原理就是当一些参数一定的时候最后的数据的分布会趋向稳定. 这个就给我们一个提示就是, 这个Q的学习过程到了一定程度的时候,每一个状态下的Q值都会趋于稳定(不变,或者变化极小).
说道Q-learning 就要提一下 Sarsa 这个Q的亲兄弟.
Sarsa的公式是:
Q(st,at)←Q(st,at)+α[rt+1+λQ(st+1,at+1)−Q(st,at)]
比较一下可以看到Sarsa与Q的不同是Sarsa是更新一个Q值的时候以来下一个Q值,并且下一个Q值又以来下下个Q值,这样的话的之后再最后结束的时候才能真正的更新这个值.在代码里面体现就是类似递归,或者说是迭代,Q是取下一个Q的可能的最大的奖励,所以不会一直以来下去,能很快的更新Q值.
好今天暂时先写到这里,有空我会制作一个iOS和一个Android的示例出来!下次见
iOS Demo
原文地址:Q-learning