美文网首页
简单粗暴理解Q-Learning

简单粗暴理解Q-Learning

作者: 带带吴腾跃 | 来源:发表于2019-11-01 15:08 被阅读0次

    注:写这篇文章纯粹为了给自己看,当复习资料,里面应该会有很多不太恰当的地方,但确实是我理解的大致过程。如果大家看完也能理解怎么执行的那就更好了

    一个例子简单粗暴理解Q-Learning的执行过程。

    首先强化学习有四个参数,分别是agent:智能体、state:状态、action:动作、reward:奖励。

    整个过程就是不断做动作拿奖励(或者惩罚)到最后学习到一个能拿到最多奖励的动作序列。

    接下来一个例子来解释这些参数。

    图1

    图1中,我们把人看作agent,每个表格的坐标看作state(由左到右由上到下分别为(0,0)(0,1)(0,2)(1,0)(1,1)(1,2)),向上下左右四个方向的运动看作action,走到棱形出奖励值为-1,五角星处奖励值为1,其他格奖励值都为0。

    图2-Q表

    图2是我们的Q值表,Q值可以暂时理解为收益,我们最终的目的就是要找到一连串的动作序列,此序列使得Q值总和收益最大。开始时我们初始化这张表,全部初始化为0。也就是此时所有的Q(state,action)的值都为0。现在我们从(0,0)状态处出发,既然上下左右四个action收益都是0,那我们第一步选择走哪个方向呢?这就是算法实现部分可以自行设置的地方了,一般设置是90%概率取Q值最大的动作进行,10%的概率随机选取一个动作执行。

    由于第一步只能向右或者下,所以我们随机选择一个向右的动作:

    图3

    好了,那么现在我们需要更新此时这个状态下做这个动作的Q值了,也就是表格中的Q((0,0),右),这个值怎么计算呢。只需要一个公式就可以,推导过程很麻烦,我们直接解释一下最终的公式。

    图4-Qlearning公式

    箭头可以看作 = 号。α为学习效率,γ为衰减率。

    上述公式由中文解释就是:

    Q(当前状态) = Q(当前状态) + 学习率*[奖励值(到达这个点的奖励)+衰减率*Q(下一步的最大值) - Q(当前状态)]

    此时,公式里我们已知道的:

    Q(当前状态) = 0,到达(0,1)的奖励值为0,即r=0,衰减率和学习率我们随便设置一个就好,例如学习率为0.5,衰减率也为0.5,Q(下一步的最大值),由于(0,1)处所有的actionQ值都为0,所以Q(下一步的最大值)=0,所以上述公式结果为:

    Q(当前) = 0 + 0.5*[0 + 0.5*0 - 0 ] = 0

    此时我们更新表中 Q((0,0),右)的值,Q((0,0)=0,虽然没变化但确实经过计算得出的,而不是初始化的0。

    此时我们要在状态为(0,1)下继续选择action,因为(0,1)状态下所有的action Q值都为0,因此我们还是随机选取,比如选取向下的action,走到方块处,这个位置奖励为-1。现在我们要更新此处的Q值,也就是Q((0,1),下)的值。

    图5

    再利用上述公式:Q(当前状态) = 0,到达(1,1)的奖励值为-1,即r=-1,Q(下一步的最大值)=0,结果就是

    Q(当前状态)  = 0 + 0.5*[-1+0.5*0 - 0] = -0.5。

    此时我们更新表格中Q((0,1),下)的值,也就是-0.5。

    图6-更新后的Q表

    按照这个过程以此类推,每次随机从不同的点出发进行更新Q表值,最终我们会得到一个完整的Q表,最优的动作序列也就依照Q表得出了。

    相关文章

      网友评论

          本文标题:简单粗暴理解Q-Learning

          本文链接:https://www.haomeiwen.com/subject/pjtxbctx.html