帖子

[经验分享] 通过 Q-learning 深入理解强化学习(上)

[复制链接]

该用户从未签到

55640  楼主| AI 搬运工 发表于 2019-1-31 10:58:14 1#
紧接着上两周的强化学习入门知识,本周我们学习以下Q-Learning哦~

读完本文,你会清楚以下两个问题:
Q-Learning是什么?
如何利用数组(Numpy)来实现Q-Learning.

故事案例:骑士和公主
1.jpg

假设你是一位王子,需要拯救被困的公主。如上图,每次,你可以移动一个方块。你的敌人无法移动,但是如果你和敌人落在同一个方块里,你会死亡。你的目标是,尽可能以最快的路线前往城堡,这可以利用“积分评分”系统来评估。

每一步丢失一分(每一步丢失的分数有助于agent训练得更快)
如果你触碰到了敌人,你就会丢失100分,而游戏继续。
如果你最终进入了城堡,获得胜利,那么你可以得100分。

问题是:如何创建一个可以做到这些的agent呢?
我们先来看看第一种策略。假设agent试图走过每一个方块,并且给每个方块涂色。绿色代表安全,红色代表危险。
那么我们可以训练agent只走绿色方块。
但问题是,这并不是很有用。绿色方块都是相连的,我们无法知道哪个方块是最佳选择。因此agent在找寻城堡的途中可能陷入无限的循环之中。

Q-table简介
第二种策略:创建一个table,可以计算每个state中每个action的未来预期的最大奖励值。这样我们可以知道每个state下的最佳action。
每个state(这里指的是方块)允许四种可能性的action,即上、下、左、右。
2.jpg

0代表的是无法移动(如果你在左上角,那你是无法向左或向上移动的)
通过计算方式,我们可以将这个网格图变成一个table。
这个table就叫做Q-table(Q指的是这个action的质量quality)。Q-table中有四个action(上下左右)。行代表state。每个单元格的值将是特定状态(state)和行动(action)下未来预期的最大奖励值。
3.jpg
如果我在特定状态下,利用特定的最佳策略,采取了特定的行为,那么我将会得到未来预期的最大奖励值,也就是每一个Q-table的分数。
为什么我们要说“特定的策略”呢?因为我们并不是执行一个策略。相反,我们只是提升Q-table效果来选择最佳行为。
你可以将这个Q-table想象成是一个游戏的“备忘单”。幸亏有这样的备忘单,我们才能通过寻找最高分数来知道每个state(Q-table的每一行)下的最佳action该怎么走。
是的!城堡问题解决了!但是……如何计算Q-table中每个元素的价值呢?
那我们就需要使用到Q-learning算法了。
具体如何,且听下回分解哟~
年关将近,祝大家回程一路平安,新年快乐哦~
年后见啦~

大家好,我是AI搬运工
致力于将国外的AI好文,翻译成大家都懂的中国话!
本文属于AI搬运工自行翻译,如有错误,欢迎指正!