Q-Learning
Q-Learning 状态和行为
- 更新规则:
- 状态: s1: Q(s1, a2) > Q(s1, a1) => 行为: a2
- 状态: s2: Q(s2, a2) > Q(s2, a1) => 行为: a2
- Q 现实: Q(s1, a2) = R + γ * max(Q(s2)) (R: 真实奖励, γ: 衰减因子)
- Q 估计: Q(s1, a2)
- 差距 = 现实 - 估计
- 新 Q(s1, a2) = 老 Q(s1, a2) + α * 差距
Q-Learning 算法
初始化 Q(s, a) 为任意值
重复以下步骤 (每个训练回合):
初始化状态 s
重复以下步骤 (单个回合中的每一步):
从状态 s 中根据来源于 Q 的策略选择行为 a (例如: ε-greedy ε=0.9: 90%情况取最优行为, 10% 情况随机采取行为)
执行行为 a, 观察奖励 r, 下一状态 s'
更新 Q(s, a): Q(s, a) <- Q(s, a) + α * [r + γ * max(Q(s', a')) - Q(s, a)]
(α: 学习效率, 表示单次差距有多少被学习, γ: 衰减因子, Q 现实: r + γ * max(Q(s', a')), Q 估计: Q(s, a))
更新下一状态 s' 为当前状态 s
直到状态 s 全部结束
举个例子
Q(s1)
= r2 + γ * Q(s2)
= r2 + γ * [r3 + γ * Q(s3)]
= r2 + γ * [r3 + γ * [r4 + γ * Q(s4)]]
= ...
= r2 + γ * r3 + γ^2 * r4 + γ^3 * r5 + ...
- γ = 0: 模型没有远见, 只能看见当价值
- y = 1: 一眼望穿, 可以看到所有价值
- y 从 0 到 1: 逐渐变得有远见, 一点点看到长远的价值