什么是 Q-learning

我们以一个迷宫寻宝的游戏为例来看什么是 Q-learning。

在这个游戏中,agent 从一个给定的位置开始,即起始状态上下左右四个方向走一步,或者原地不动新的状态目标状态我们的目标是找到一条没有炸弹的路径,以最快的速度从起始状态到达目标状态。

这个迷宫就是 environment,我们通过给它 rewards 来告诉它炸弹和宝藏的概念,告诉 agent 它的目标是使奖励最大化,


Q-Learning 就是要学习在一个给定的 state 时,采取了一个特定的行动后,能得到的奖励是什么。

这时可以用一个表格来记录每组 state 和 action 时的值,

这个表,首先被初始化为 0,

640?wx_fmt=png

其中更新的方法是用 Bellman Equation:

640?wx_fmt=png

其中,

由公式可以看出 s,a 对的 Q 值等于 即时奖励 + 未来奖励的 discount。

算法是:

  1. 初始化 Q table 为 0

  2. 每一次遍历,随机选择一个状态作为起点

  3. 在当前状态 (S) 的所有可选的行动中选择一个 (a)

  4. 移动到下一个状态 (S’)

  5. 在新状态上选择 Q 值最大的那个行动 (a’)

  6. 用 Bellman Equation 更新  Q-table

  7. 将新状态设置为当前状态重复第 2~6 步

  8. 如果已经到了目标状态就结束

什么是 Q-learning_第1张图片


下面来将上面的算法实际计算一下:

用一个最简单的例子,两行两列,每个格子代表一个状态,有一个炸弹和宝藏,并设置 alpha = 1:

什么是 Q-learning_第2张图片

reward 表如下:

什么是 Q-learning_第3张图片

1. 初始的 Q-table 的值全是 0

什么是 Q-learning_第4张图片

首先将 γ 设置为 0.8,2. 例如我们从状态 1 开始走,可以向下或者向右3. 我们先选择向下4. 这时到达了状态 35. 在状态 3 可以向上, 或者向右6. 用 Bellman Equation 更新  Q-table:

Q(1,D) = R(1,D) + γ * [ max( Q(3,U) & Q(3,R) ) ] = -10 + 0.8 * 0 = -10

R(1,D)  = -10 是从状态 1 向下走到了炸弹处,Q(3,U) 和 Q(3,R) 都是 0,因为初始表格都还是 0,

于是更新后的表格变成了这样:

什么是 Q-learning_第5张图片

7. 然后将状态 3 变成当前状态,

Q(3,R) = R(3,R) + 0.8 * [ max( Q(4,U) & Q(4,L) ) ] = 10 + 0.8 * 0 = 10

更新后的表格为:

什么是 Q-learning_第6张图片

这时我们走到了 4 也就是目标状态了,就可以结束这条路径了。

接下来可以重复上面的过程,走更多次,让 agent 尝试完所有可能的 state-action 组合,直到表格的值保持不变了,它也就学会了所有状态和行为的 Q 值:

什么是 Q-learning_第7张图片


学习资料:

推荐 阅读原文

也许可以找到你想要的:

[入门问题][TensorFlow][深度学习][强化学习][神经网络][机器学习][自然语言处理][聊天机器人]

你可能感兴趣的:(什么是 Q-learning)