美文网首页
简单粗暴理解Q-Learning

简单粗暴理解Q-Learning

作者: 带带吴腾跃 | 来源:发表于2019-11-01 15:08 被阅读0次

注:写这篇文章纯粹为了给自己看,当复习资料,里面应该会有很多不太恰当的地方,但确实是我理解的大致过程。如果大家看完也能理解怎么执行的那就更好了

一个例子简单粗暴理解Q-Learning的执行过程。

首先强化学习有四个参数,分别是agent:智能体、state:状态、action:动作、reward:奖励。

整个过程就是不断做动作拿奖励(或者惩罚)到最后学习到一个能拿到最多奖励的动作序列。

接下来一个例子来解释这些参数。

图1

图1中,我们把人看作agent,每个表格的坐标看作state(由左到右由上到下分别为(0,0)(0,1)(0,2)(1,0)(1,1)(1,2)),向上下左右四个方向的运动看作action,走到棱形出奖励值为-1,五角星处奖励值为1,其他格奖励值都为0。

图2-Q表

图2是我们的Q值表,Q值可以暂时理解为收益,我们最终的目的就是要找到一连串的动作序列,此序列使得Q值总和收益最大。开始时我们初始化这张表,全部初始化为0。也就是此时所有的Q(state,action)的值都为0。现在我们从(0,0)状态处出发,既然上下左右四个action收益都是0,那我们第一步选择走哪个方向呢?这就是算法实现部分可以自行设置的地方了,一般设置是90%概率取Q值最大的动作进行,10%的概率随机选取一个动作执行。

由于第一步只能向右或者下,所以我们随机选择一个向右的动作:

图3

好了,那么现在我们需要更新此时这个状态下做这个动作的Q值了,也就是表格中的Q((0,0),右),这个值怎么计算呢。只需要一个公式就可以,推导过程很麻烦,我们直接解释一下最终的公式。

图4-Qlearning公式

箭头可以看作 = 号。α为学习效率,γ为衰减率。

上述公式由中文解释就是:

Q(当前状态) = Q(当前状态) + 学习率*[奖励值(到达这个点的奖励)+衰减率*Q(下一步的最大值) - Q(当前状态)]

此时,公式里我们已知道的:

Q(当前状态) = 0,到达(0,1)的奖励值为0,即r=0,衰减率和学习率我们随便设置一个就好,例如学习率为0.5,衰减率也为0.5,Q(下一步的最大值),由于(0,1)处所有的actionQ值都为0,所以Q(下一步的最大值)=0,所以上述公式结果为:

Q(当前) = 0 + 0.5*[0 + 0.5*0 - 0 ] = 0

此时我们更新表中 Q((0,0),右)的值,Q((0,0)=0,虽然没变化但确实经过计算得出的,而不是初始化的0。

此时我们要在状态为(0,1)下继续选择action,因为(0,1)状态下所有的action Q值都为0,因此我们还是随机选取,比如选取向下的action,走到方块处,这个位置奖励为-1。现在我们要更新此处的Q值,也就是Q((0,1),下)的值。

图5

再利用上述公式:Q(当前状态) = 0,到达(1,1)的奖励值为-1,即r=-1,Q(下一步的最大值)=0,结果就是

Q(当前状态)  = 0 + 0.5*[-1+0.5*0 - 0] = -0.5。

此时我们更新表格中Q((0,1),下)的值,也就是-0.5。

图6-更新后的Q表

按照这个过程以此类推,每次随机从不同的点出发进行更新Q表值,最终我们会得到一个完整的Q表,最优的动作序列也就依照Q表得出了。

相关文章

  • 简单粗暴理解Q-Learning

    注:写这篇文章纯粹为了给自己看,当复习资料,里面应该会有很多不太恰当的地方,但确实是我理解的大致过程。如果大家看完...

  • runtime简单粗暴的理解

    关于runtime是什么,我这边不做过多解释,百度上一大堆。但是,看看概念,很多人都难以真正理解和使用好r...

  • 理解Q-learning

    1. https://blog.csdn.net/weixin_34149796/article/details/...

  • 简单粗暴理解接口回调

    刚开始学习接口回调的时候,乍一听接口回调这个名词感觉很高大上一样 于是就去网上找了一些接口回调的知识 网上总结的...

  • Swift RxSwift专题 : Observable(序列)

    可被监听的序列. Observable 简单粗暴的理解序列 : 序列(Observable) : 从开始聊天,...

  • Q-Learning强化学习Demo

    强化学习及Q-Learning算法的简单理解 首先明确学习的概念,学习是系统为了适应环境而做出的长久的变化,以便在...

  • android 的Activity 与iOS UIControl

    简单粗暴的理解(类比学习大法):android 的activity 等价于 iOS的 UIControllerVi...

  • JDK,JRE,JVM三者的区别.md

    简单粗暴的理解 JDK包含了JRE,JRE包含了JVM 详解 JDK: java development kit,...

  • 浅谈多线程

    “简单不先于复杂,而是在复杂之后.” —— Alan Perlis 首先:对于多线程,最简单粗暴的理解:就是同时执...

  • 简单粗暴

    有时候,其实你需要的东西很简单。就是陪伴与关注。……

网友评论

      本文标题:简单粗暴理解Q-Learning

      本文链接:https://www.haomeiwen.com/subject/pjtxbctx.html