初始化 Q(s, a) 为任意值, 所有 s 表示环境, 所有 a 表示行为
重复以下步骤 (每个训练回合):
E(s, a) = 0, E(s, a) 表示在获得奖励之前所有经历过的轨迹, 所有 s 表示环境, 所有 a 表示行为
初始化状态 S, 行为 A
重复以下步骤 (单个回合中的每一步):
执行行为 A, 观察奖励 R, 和下一状态 S'
从状态 S' 中根据来源于 Q 的策略选择行为 A' (例如: ε-greedy ε=0.9: 90%情况取最优行为, 10% 情况随机采取行为)
计算 Q 现实和 Q 估计之间差距: δ <- R + γ * Q(S', A') - Q(S, A)
更新 E(S, A): E(S, A) <- E(S, A) + 1, 即当前状态下该行为多执行了一次
对所有的状态 s 和行为 a 执行以下更新:
Q(s, a) <- Q(s, a) + α * δ * E(s, a)
(α: 学习效率, 表示单次差距有多少被学习, δ: 现实和估计差距)
E(s, a) <- γ * λ * E(s, a)
(每往前一步, 就乘上一个衰减因子 λ, 表示距离终点越远, 影响程度越小)
更新状态和行为为下一状态和行为: S <- S', A <- A'
直到状态 s 全部结束