什么是强化学习?

强化学习(Reinforcement learning,简称RL)是和监督学习,非监督学习并列的第三种机器学习方法,如下图示:

首先让我们举一个小时候的例子:

你现在在家,有两个动作选择:打游戏和读书。如果选择打游戏的话,你就跑到了网吧,选择读书的话,就坐在了书桌面前。你爸妈下班回家,如果发现你在网吧,就会给你一套社会主义的铁拳,如果你在书桌面前的话,就会买根棒棒糖给你吃。

首先,你在家的时候并不知道选择哪一个动作,因此你可能会选择study或者game。但是,当你接受了多次社会主义的毒打和奖励棒棒糖之后,你会发现选择game会得到惩罚,选择study你会得到奖励。因此当你再次处于”home“状态时,你就会偏向于选择“study”。(这便是强化学习!!)

强化模型可以建模如下:

以上面的为例子,对如下进行说明:

Agent:Agent也就是执行个体,我们可以操作执行个体做出不同的选择(也就是动作Action)。

图中的“你”

Environment:我们研究的环境,它有一个一个的状态(State)。

图中你所处的位置状态:网吧or书桌

Action:当Agent做出动作(action)的时候,环境会发生改变也就是State会发生改变。

选择Study或者Game后你会处于书桌或者网吧的状态

Reward:当State发生改变时,环境会给予一定的奖励(奖励可为正负)。

拳头or棒棒糖

总的来说,就是Agent在$t$时刻处于$s_t$状态,它会做出某一个动作$a_i$,导致$t+1$的状态为$s_{t+1}$,同时在$t+1$时刻得到的奖励为$R_{t+1}$。

接下来我们再介绍强化学习中稍微复杂一点的概念。这些概念是以后的基础,也比较简单,很容易理解。

策略(Policy)$\pi$

当Agent处于某一个state的时候,它做的Action是不确定的,例如你可以选择study也可以选择game,也就是说你在某一个状态是以一定的概率去选择某一个action。也就是说,策略的选择是一个条件概率$\pi(a|s)$,这里的$\pi$与数序中的$\pi$没有任何关系,他只是代表一个函数而已(因此也可以写作$f(a|s)$)。

$$

\pi(a|s) = P(A_t=a | S_t=s)

$$

此函数代表:在状态$s$时采取动作$a$的概率分布。

价值(value)

前面我们说到过奖励,当Agent在$t$时刻执行某个动作时,会得到一个$R_{t+1}$。我们可以想一下蝴蝶效应,这个Action会影响$R_{t+1}$,那么他会不会影响$R_{t+2},R_{t+3}……R_{t+n}$呢?很可能会的,比如说在电游中,你所做的某个选择肯定会对接下来的游戏产生影响,这个影响可以深远,也可以没那么深渊(对,我说的就是隐形守护者,mmp),因此状态价值函数可以表示为:

$$

v_{\pi}(s) = \mathbb{E}{\pi}(R{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3}+...|S_t=s)

$$

$v_{\pi}(s)$与策略函数$\pi$有关,可以理解为当Agent以策略$\pi$运行时,状态$s$的价值是多少。也就是在此状态下,我能够得到多少回报。

在后面我们会详细的对这个函数进行分析。

$ \gamma$ 奖励衰减因子

在上面的价值函数中,有一个变量$\gamma$ ,即奖励衰减因子,在[0,1]之间。如果为0,则是贪婪法,即价值只由当前的奖励决定,如果是1,则所有的后续状态奖励和当前奖励一视同仁。一般来说取0到1之间的数。

环境的状态转化模型

由于在某个状态下,执行一定的action,能够达到新的一个状态$state_{t+1}$,但是$state_{t+1}$不一定是唯一的。环境的状态转化模型,可以理解为一个概率状态机,它是一个概率模型,即在状态$t$下采取动作$a$,转到下一个状态$s'$的概率,表示为$P_{ss'}^a$。

探索率$\epsilon$

怎么说的探索率呢?它主要是为了防止陷入局部最优。比如说目前在$s_1$状态下有两个$a_1,a_2$。我们通过计算出,发现执行$a_1$的动作比较好,但是为了防止陷入局部最优,我们会选择以 $\epsilon$ 的概率来执行$a_2$,以$1 - \epsilon$ 的概率来执行$a_1$。一般来说,$\epsilon$ 随着训练次数的增加而逐渐减小。

马尔科夫决策过程(MDP)

前面我们说过某个状态执行action可以转换成另外一个state,可以用概率表示为:$P_{ss'}^a$。那么这个概率与什么有关呢?认真的考虑下,毋庸置疑,与目前的状态$s_t和a$有关,但是同样,它可能也与上一个状态$s_{t-1}$,上上个状态$s_{t-2}$……有关,但是如果真的这样考虑,就复杂了。

因此我们将问题进行一定的简化,简化的方法就是假设状态转化的马尔科夫性,也就是假设转化到下一个状态$s'$的概率仅与当前状态$s$有关,与之前的状态无关(也就是说未来与当前有关,与过去无关)。用公式表示就是:

$$

P_{ss'}^a = \mathbb{P}(S_{t+1}=s'|S_t=s, A_t=a)

$$

同时对于针对于策略 $\pi$ 我们也做MDP假设,也就是说,当前Agent所作的策略仅仅与当前状态有关,与以前的状态都没有关系,因此:

$$

\pi(a|s) = P(A_t=a | S_t=s)

$$

同样针对于价值函数$v$,有:

$$

v_{\pi}(s) = \mathbb{E}{\pi}(R{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3}+...|S_t=s)

$$

价值函数与Bellman方程

之所以我们来分析这个价值函数,是因为它是强化学习的核心,为什么Agent能够自动学习,自动选择某一个Action,其中一个量化标准就是它:

$$

v_{\pi}(s) = \mathbb{E}{\pi}(R{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3}+...|S_t=s)

$$

令:

$$

\begin{equation}G_{t}=R_{t+1}+\gamma R_{t+2}+\ldots=\sum_{k=0}^{\infty} \gamma^{k} R_{t+k+1}\end{equation}

$$

$G_t$代表Return,代表Agent从某一个状态$S_t$开始直到终止状态时所有奖励的有衰减的之和。

则有:

$$

v_{\pi}(s) = \mathbb{E}_{\pi}(G_t|S_t=s)

$$

So:

$$

\begin{equation}\begin{aligned}

v_{\pi}(s) &=\mathbb{E}{\pi}\left(R{t+1}+\gamma R_{t+2}+\gamma^{2} R_{t+3}+\ldots | S_{t}=s\right) \

&=\mathbb{E}{\pi}\left(R{t+1}+\gamma\left(R_{t+2}+\gamma R_{t+3}+\ldots\right) | S_{t}=s\right) \

&=\mathbb{E}{\pi}\left(R{t+1}+\gamma G_{t+1} | S_{t}=s\right) \

&=\mathbb{E}{\pi}\left(R{t+1}+\gamma v_{\pi}\left(S_{t+1}\right) | S_{t}=s\right)

\end{aligned}\end{equation}

$$

因此:

$$

v_\pi(s)=\mathbb{E}\left[R{t+1}+\gamma v\left(S{t+1}\right) | S{t}=s\right]

$$

上述方程便是Bellman方程的基本形态。因此我们可以知道,当前状态的价值与奖励$\R{t+1}$和下一个状态的价值有关。

动作价值函数

这里再说一下动作价值函数,它代表着在当前state下,做某一个action的价值:

$$

q_{\pi}(s,a) = \mathbb{E}{\pi}(G_t|S_t=s, A_t=a) = \mathbb{E}{\pi}(R_{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3}+...|S_t=s,A_t=a)

$$

同样,我们利用Bellman方程,可以将上式转化成:

$$

q_{\pi}(s,a) = \mathbb{E}{\pi}(R{t+1} + \gamma q_{\pi}(S_{t+1},A_{t+1}) | S_t=s, A_t=a)

$$

动作价值函数与状态价值函数之间可以相互进行转化:

$$

v_{\pi}(s) = \sum\limits_{a \in A} \pi(a|s)q_{\pi}(s,a) \

q_{\pi}(s,a) = R_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^av_{\pi}(s')

$$

图示说明如下:图来自(强化学习(二)马尔科夫决策过程(MDP))

总结

OK,强化学习的入门介绍就到这里,通过这篇博客,我们知道了:

策略 $\pi$ :表示在某一个状态下,action的概率分布函数$\pi(a|s) = P(A_t=a | S_t=s)$

$\gamma$ :奖励衰减因子,表示后续奖励的占比

探索率$\epsilon$:表示Agent以 $\epsilon$ 的概率来随机选择action

状态转化模型:表示执行某个action后,状态变化的概率函数$P_{ss'}^a = \mathbb{P}(S_{t+1}=s'|S_t=s, A_t=a)$

状态价值函数:表示 $t$ 时刻的状态 $s_{t}$ 能获得的未来回报(return)的期望$v_\pi(s)=\mathbb{E}\left[R{t+1}+\gamma \left(S{t+1}\right) | S_{t}=s\right]$

动作价值函数:表示 $t$ 时刻的状态 $s$,选择一个 action 后能获得的未来回报(return)的期望

$q_{\pi}(s,a) = \mathbb{E}{\pi}(R{t+1} + \gamma q_{\pi}(S_{t+1},A_{t+1}) | S_t=s, A_t=a)$

参考

强化学习(一)模型基础

Reinforcement learning

强化学习3:价值函数和Bellman方程

强化学习(二)马尔科夫决策过程(MDP)

关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

[DQN(Deep Q-learning)入门教程(一)之强化学习介绍]http://www.zyiz.net/tech/detail-136992.html

java实现qlearning,DQN(Deep Q-learning)入门教程(一)之强化学习介绍相关推荐

  1. Deep Q learning: DQN及其改进

    Deep Q Learning Generalization Deep Reinforcement Learning 使用深度神经网络来表示 价值函数 策略 模型 使用随机梯度下降(SGD)优化los ...

  2. CNNs and Deep Q Learning

    前面的一篇博文介绍了函数价值近似,是以简单的线性函数来做的,这篇博文介绍使用深度神经网络来做函数近似,也就是Deep RL.这篇博文前半部分介绍DNN.CNN,熟悉这些的读者可以跳过,直接看后半部分的 ...

  3. Java 图片处理解决方案:ImageMagick 快速入门教程

    Java 图片处理解决方案:ImageMagick 快速入门教程 参考文章: (1)Java 图片处理解决方案:ImageMagick 快速入门教程 (2)https://www.cnblogs.co ...

  4. 强化学习(Reinforcement Learning)是什么?强化学习(Reinforcement Learning)和常规的监督学习以及无监督学习有哪些不同?

    强化学习(Reinforcement Learning)是什么?强化学习(Reinforcement Learning)和常规的监督学习以及无监督学习有哪些不同? 目录

  5. PR2018入门教程02-转换特效学习

    PR2018入门教程02-转换特效学习 1.新建项目 1.1新建素材箱 2.添加转场效果 3.完成输出 1.新建项目 1.1新建素材箱 先导入图片 再添加素材箱 将图片放入素材箱 同理再添加音乐素材箱 ...

  6. DQN(Deep Q Network)及其代码实现

    为什么需要DQN 我们知道,最原始的Q-learning算法在执行过程中始终需要一个Q表进行记录,当维数不高时Q表尚可满足需求,但当遇到指数级别的维数时,Q表的效率就显得十分有限.因此,我们考虑一种值 ...

  7. DQN(Deep Q Network)论文笔记

    1.简介 Deep Q Network 属于强化学习.本文是从<Playing Atari with Deep Reinforcement Learning>翻译总结的. 本模型包括卷积神 ...

  8. 大牛deep learning入门教程

    雷锋网(搜索"雷锋网"公众号关注)按:本文由Zouxy责编,全面介绍了深度学习的发展历史及其在各个领域的应用,并解释了深度学习的基本思想,深度与浅度学习的区别和深度学习与神经网络之 ...

  9. dpg learning 和q_请问在强化学习的Qlearning中,如果状态-动作很多的话,该如何处理?...

    状态很多和动作很多是有细微差别的两类问题,看到大家都提到了function approximation,这是用来处理状态很多情况的好方法,但是动作很多则需要一些额外的方法支撑. 当状态来自元素极多的离 ...

最新文章

  1. Eureka与zookeeper
  2. PHP框架CodeIgniter之连接MS Sqlserver2014及URL Rewrite问题解决
  3. Hadoop学习全程记录——在Eclipse中运行第一个MapReduce程序
  4. 【Python基础】Pandas向量化字符串操作
  5. 最长回文串_第78天——第78题(最长回文串 )
  6. 我TM快疯了,在博客园开博短短2个月,经历博客园数次故障。。。
  7. 『华为ICT』数据通信网络基础
  8. 计算机网络(谢希仁)第六版课件
  9. linux数字版权管理,数字版权管理系统 DRM
  10. sqlyog连接mysql错误码2058
  11. 别学英语了!微软给PPT和Skype新加的这个功能,让你和老外从此交流无障碍
  12. 商标45类分类表明细表_45类商标分类明细_45类商标经营范围包括哪些商品-商标查询-知夫子...
  13. SQL-2008函数大全
  14. 微信小程序配置多环境
  15. 五种主流音频无损压缩格式简介
  16. html调用优酷视频播放,优酷网视频播放器站外调用详解
  17. Harris角点特征提取和角点特征匹配(2)
  18. 【深入理解RabbitMQ】RabbitMQ exclusive和mandatory的理解
  19. 全栈之巅-NodeJs(AdonisJs)+VueJs开发带完整后台管理UI的博客系统笔记
  20. 股指期货高频数据机器学习预测

热门文章

  1. jacob简单使用CAD与Excel
  2. 数据挖掘项目的特征和关键环节
  3. 洛谷 P1481 魔族密码
  4. 在MFC项目中使用Quick PDF Library Lite读写pdf文件
  5. 【Unity3D应用案例系列】专栏文章导读清单
  6. 【Unity3D从入门到进阶】专栏文章导读清单
  7. 徐童:视频人物社交关系图生成与应用
  8. 如何在Deepin Linux下安装Docker容器经验分享
  9. fairyGUI界面控件的基本制作和功能实现
  10. 云游戏:5G时代的王牌应用