Q-learning算法介绍(2)

前面我们介绍了Q-learning算法的原理,现在我们就一步一步地用实际数值演示一下,给大家一个更直观的认识。

首先我们选择Gamma值的初值为0.8,agent的初始位置是房间1,前面显示的R矩阵不变,Q矩阵所有值都被初始化为0。

 由于起始位置是房间1,所以我们先看R矩阵的第二行,其中有2个可能,从房间1到房间3;从房间1到房间5。算法是随机选择其中之一。假设我们随机选到后者,看看算法如何更新Q-table:

根据前面介绍的公式Q(state, action) = R(state, action) + Gamma * Max[Q(next possible state1, action1), Q(next possible state2, action2), Q(next possible state3, action3), ... ],如果agent从房间1进入房间5,那么Q(1, 5)= R(1, 5) + 0.8 * Max[ Q(5, 1), Q(5, 4), Q(5, 5)],因为从房间5进入下一个可能房间的路径有3条(1,4,5)。带入数值,我们得到Q(1, 5) = 100 + 0.8 * 0 = 100,因此更新后的Q-table如下:

 因为5是目标状态,所以我们的第一个episode就完成了,此时的智能体“大脑”中就有了如上所示的知识。

接着算法要开始另外一个episode。上次我们随机选取了1作为初始状态,这次我们随机选取了3作为初始状态。

我们从R矩阵的对应的行中看到3个可能的动作,分别让智能体从3进入1、2或者4,假设我们随机选取,得到了1。同上,我们要计算Q(3, 1) = R(3, 1) + 0.8 * Max[ Q(1, 3), Q(1, 5)] = 0 + 0.8 * Max[0, 100] = 80,现在我们的Q-table就变成下面的样子:

现在的状态就是1了,但是因为1不是目标状态,所以还要继续算法中的循环。根据下图,我们容易看出从状态1,agent可以进入状态3或5,假设随机选择,我们选择了5。

上面我们计算过Q(1, 5)的值,在这里没有变化,仍然得到100,因此这一个episode没有改变Q-table的值。

我们的agent不断重复Q-learning算法,最后会得到下面的Q-table:

 然后我们把矩阵中的每个值除以5,得到

 然后把矩阵转换成下图:

 有了这个图,agent就可以很简单的找到从2到5的最佳路径:2 - 3 - 1 - 5 或者2 - 3 - 4 - 5. (就是选择奖励值最大的路径)。

 

猜你喜欢

转载自www.cnblogs.com/jointech/p/12771358.html