对于小白菜来说,首先是了解Q-learning的基本原理,最好是像学习bp,学习CNN一样可以将一条计算走通,这里分享比较好理解的两个博客,
英文原版:http://mnemstudio.org/path-finding-q-learning-tutorial.htm
中文翻译:https://blog.csdn.net/itplus/article/details/9361915
1.Q-learning训练模型的基本思路:以(状态,行为,奖励,下一个状态)构成的元组为样本进行训练,其中为当前状态,为当前状态下执行的action ,为执行action后的奖励,为下一个状态。而Q-learning的学习目标是,这个学习目标是当前action获得reward加上下一步可获得的最大期望价值。学习目标中包含Q-learning的函数本身,所以其中使用了递归求解的思想。
2.一个具体例子
一栋房子里面有五个房间,对门进行依次编号,将上述图简化为图2(0与4互通,2与3互通.....)
首先,我们给出一个情景,一个机器人处于这栋房子之中,希望他能够走出5号门。假定此时机器人处于0号房间之中。0号房间只能通往4号房间,所以给出其中reward为0,无法到达的地方仍为-1。当机器人到达4号房间时,他有两个选择,到达5号房间和0号房间。假设机器人到达5号房间(目标),给出其相应reward为100.因此绘制出图3
在这里,状态s就是我们的节点,action就是行动的方向,因此就会有下列reward值R矩阵:
由于一开始机器人一无所知,我们初始化将Q为0,根据Q-learning的转移规则:
我们首先将学习参数Gamma的值设置为0.8,将初始状态设置为Room 1
查看矩阵R的第二行(状态1)。当前状态1有两种可能的动作:转到状态3,或转到状态5.通过随机选择,我们选择转到5作为我们的动作。
现在让我们想象如果机器人处于状态5会发生什么。查看奖励矩阵R的第六行(即状态5)。它有3种可能的动作:进入状态1,4或5。
Q(5,1)=0,Q(5,4)=0,Q(5,5)=0
进行下一次episode,选取状态3为起始点看矩阵R的第四行; 它有3个可能的动作:转到状态1,2或4.通过随机选择,我们选择转到状态1作为我们的动作。
现在我们想象我们处于状态1.看第二行奖励矩阵R(即状态1)。它有两个可能的动作:转到状态3或状态5.然后,我们计算Q值:
更新之后的Q
最后找到最优路径(红色线):