Q-Learning
举例子
问题描述
如上图所示,有0、1、2、3、4、5总共6个状态。规定5状态为咋们的目标状态(到达5状态表示胜利)
可以画状态转移图,如右侧图片所示,表明了其他每个状态到达5状态的路径!!!
设置奖励值
为了更好的到达5状态,我们可以通过设置不同路径的奖励值,“鼓励”agent从其他状态更好的到达5状态
也就是,能到达5状态的路径(可以将路径理解为行为),我们设置高的奖励值。不能到达5状态的路径(行为)设置较低的奖励值!
绘制奖励矩阵
其中行数代表:State,列数代表:Action,其实这里列数可以理解为下一个状态。
如果能从现在状态转移到下一个状态,在对应行列位置填上转移的奖励。以第一行举例:0状态可以到达4状态,上面规定的奖励值为0,所以将0值填入0行4列。0状态转移不到0、1、2、3、5状态,所以对应的0行0、1、2、3、5列填入-1即可,-1表示没有办法转到。
Q-Learning算法
根据Q-Learning算法执行计算
Step 1
折扣因子定为0.8
R价值矩阵如下图
Step 2
Step 3
3.1 选定初始状态为S1
3.2
(1)和(2)下一个状态为5状态
(3)和(4)
因为已经到了状态5,到达了最终的状态,所以一个episode完成了。
利用Q-Learning不断计算
这次我们选定状态3为初始状态
这次episode之后,可以填充Q矩阵的一个位置。之后我们不断使用Q-Learning算法,完善整个Q矩阵。
经过不断训练之后,Q矩阵收敛,如上图所示。因为左边的Q矩阵里面数值太大也参差不齐,所以我们使用归一化,将左侧Q矩阵中的数值范围归一化为右侧Q矩阵。
根据最终的Q矩阵,我们绘制状态转移图,如下图所示。
假设起点为2,终点为5。
我们根据最终的Q矩阵,我们可以确定最佳路线为(2->3->1>5)
Q-Learning算法总结
个人总结:
(1)首先确定折扣因子和R矩阵。
(2)初始化Q矩阵为0矩阵
(3)根据下面方程:
不断选定状态,完成每个episode之后,去填充Q矩阵。然后对Q矩阵进行归一化处理,确定最终的Q矩阵!
Q矩阵是整个算法的核心!!!!
(4)面对问题,根据Q矩阵,绘制状态转移图,确定最佳的方案(保证Q值最大)
Q值可以理解成考试分数!!!