Q learning里的核心思想是如下公式:
其中,第一个Q(S, A)是更新后的值,第二个 Q(S, A)是Q表中值,a是指学习效率,r是奖励值。\gamma是折扣因子。第三个Q是指要选取Q表中的最大值。最后一个表示Q表中值,与第二个Q一样。
现在通过书中的伪代码来展示Q-learning的过程:
1. 初始化Q-Table:Q-table|S|*|A|的矩阵。其中,|S|代表了所有的状态,|A|代表了所有的动作。矩阵中各个元素首先初始化为0。
2. 进入循环1
3. 进入循环2:
3.1 带入当前状态。若为第一次循环,此处需随机选择一个状态作为初始状态;
3.2 为该状态选择一个动作:需注意,此处有一个学习效率。选择动作的方法为:agent有1-a的概率,随机选择动作;有a的概率,选择对应Q值最大的动作;
3.3 据当前状态S和当前动作A,得出下一个状态S‘和奖励R;
3.4 通过上图公式更新Q-table;
3.5 更新状态。
注意:循环1的结束可以为Q-table中的值收敛。也可以为一个固定值,例如整个程序运行1000次,停止。循环2的结束条件为到达最终状态。