简单粗暴理解Q-Learning

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

一个例子简单粗暴理解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)