揭秘深度强化学习-5 评估奖励之Q-learning算法

看完觉得深受启发的一篇文章,根据自己的理解翻译过来留以后再次翻看

原文地址http://neuro.cs.ut.ee/demystifying-deep-reinforcement-learning/

Q-learning算法

在Q-learning算法中,我们定义一个函数Q(s,a) 来表示当我们在状态s采取行动a且之后都是最理想状态,我们预期未来能获得的衰减未来奖励

Q(s_{t},a_{t})=max(\pi R_{t+1})

Q(s,a)可以视为s状态执行a操作后可能在游戏终局获得的最高分。它被称为Q函数,在给定状态时,它可用来表示一个行动的“质量”。

这听起来令人费解。我们仅仅知道当下状态和行动,还没有之后的行动和奖励,我们如何评估终局分数呢?我们确实不能,但是,我们可以假设存在这样一个函数,合上你的双眼默默重复五次:Q函数存在,Q函数存在...感觉到它的存在了吗?

如果你还没感受到,那就想想Q函数存在的意义吧。假设你处于一个状态s并且正在考虑是采取行动a还是行动b。你想选择能在终局时获得更高分数的行动,如果拥有了Q函数,那么选择如此简单,选择Q值最高的那个!

\pi (s)=argmax_{a}Q(s,a)

这里的π表示策略,这规定了在每个状态我们如何选择行动。

好了,现在我们知道Q函数存在的意义重大,那么我们回到前话,如何能获得Q函数呢?让我们专注于一次行动状态转换:

<s,a,r,s′>

就像是前面的未来衰减奖励中提到的我们可以用下一状态 s′的Q值 来表示当下状态s和行动a的Q值。

Q(s,a)=r+\gamma max_{a^{'}}Q(s^{'},a^{'})

这被称为贝尔曼等式(Bellman equation)。这非常符合逻辑:当下状态s和行动a能够获得的最大未来奖励,就是确定的当下奖励加上下一状态s'预期可以获得的最大未来奖励。

Q-learning的主旨是,我们可以通过贝尔曼等式迭代的渐近Q函数。在最简单的例子中,可以用表结构来表示Q函数,其中状态被视为行索引,行动被视为列索引。Q-learning算法表达如下:

算法中α表示学习率,控制旧Q值和新Q值的比例。当α=1时,可以被视不考虑旧Q值,这时与上面的贝尔曼等式相同。

我们用max_{a^{'}} Q[s',a'] 来更新Q[s,a]仅仅是一个评估值,在前期这可能是一个完全错误的值。然而通过周而复始的迭代它会变得越来越准确。只要我们训练的次数足够多,那么我们的Q函数将会趋近真正的Q值!想想还真有点小心动呢~

猜你喜欢

转载自blog.csdn.net/qq_26690795/article/details/81509782