什么是强化学习?

强化学习(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)\)

参考

DQN(Deep Q-learning)入门教程(一)之强化学习介绍的更多相关文章

  1. DQN(Deep Q-learning)入门教程(三)之蒙特卡罗法算法与Q-learning算法

    蒙特卡罗法 在介绍Q-learing算法之前,我们还是对蒙特卡罗法(MC)进行一些介绍.MC方法是一种无模型(model-free)的强化学习方法,目标是得到最优的行为价值函数\(q_*\).在前面一 ...

  2. DQN(Deep Q-learning)入门教程(五)之DQN介绍

    简介 DQN--Deep Q-learning.在上一篇博客DQN(Deep Q-learning)入门教程(四)之Q-learning Play Flappy Bird 中,我们使用Q-Table来 ...

  3. DQN(Deep Q-learning)入门教程(六)之DQN Play Flappy-bird ,MountainCar

    在DQN(Deep Q-learning)入门教程(四)之Q-learning Play Flappy Bird中,我们使用q-learning算法去对Flappy Bird进行强化学习,而在这篇博客 ...

  4. DQN(Deep Q-learning)入门教程(二)之最优选择

    在上一篇博客:DQN(Deep Q-learning)入门教程(一)之强化学习介绍中有三个很重要的函数: 策略:\(\pi(a|s) = P(A_t=a | S_t=s)\) 状态价值函数:\(v_\ ...

  5. [Reinforcement Learning] 强化学习介绍

    随着AlphaGo和AlphaZero的出现,强化学习相关算法在这几年引起了学术界和工业界的重视.最近也翻了很多强化学习的资料,有时间了还是得自己动脑筋整理一下. 强化学习定义 先借用维基百科上对强化 ...

  6. Vue.js教程 1.前端框架学习介绍

    Vue.js教程 1.前端框架学习介绍 什么是Vue.js 为什么要学习流行框架 什么是Vue.js Vue.js 是目前最火的一个前端框架,React是最流行的一个前端框架(React除了开发网站, ...

  7. DQN(Deep Q-learning)入门教程(零)之教程介绍

    简介 DQN入门系列地址:https://www.cnblogs.com/xiaohuiduan/category/1770037.html 本来呢,在上一个系列数据挖掘入门系列博客中,我是准备写数据 ...

  8. 大牛deep learning入门教程

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

  9. DQN(Deep Q-learning)入门教程(四)之Q-learning Play Flappy Bird

    在上一篇博客中,我们详细的对Q-learning的算法流程进行了介绍.同时我们使用了\(\epsilon-贪婪法\)防止陷入局部最优. 那么我们可以想一下,最后我们得到的结果是什么样的呢?因为我们考虑 ...

随机推荐

  1. 第三方库 正则表达式re模块

    正则表通常被用来检索.替换那些符合某个模式(规则)的文本. 正则表达式通常缩写成“regex”,单数有regexp.regex,复数有regexps.regexes.regexen. 正则表达式是对字 ...

  2. 开发AI+诊疗生发系统,「先锋汇美」借力人工智能辅助诊疗实现头皮医学检测...

    困扰年轻人的脱发问题萌生了新兴的产业链.36氪先前曾剖析过近来火热的植发市场,更多人则选择"防范于未然","头皮检测"服务备受关注.此前,人们对"头皮 ...

  3. 题目分享H 二代目

    题意:有m个限制,每个限制l1,r1,l2,r2四个数,限制了一个长度为n的数第l1到r1位要与第l2到r2相同,保证r1-l1=r2-l2,求在限制下一共有多少种数 分析: 暴力的话肯定是从l1-r ...

  4. C语言设计实验报告(二)

    C程序设计实验报告姓 名:赖瑾 实验地点:家 实验时间:2020年3月9日 实验项目:2.3.3 字符与ASCLL码 2.3.4 运算符与表达式的运用 2.3.5 顺序结构应用程序 3.3.1 数学函 ...

  5. 模块(类)之间解耦利器:EventPublishSubscribeUtils 事件发布订阅工具类

    如果熟悉C#语言的小伙伴们一般都会知道委托.事件的好处,只需在某个类中提前定义好公开的委托或事件(委托的特殊表现形式)变量,然后在其它类中就可以很随意的订阅该委托或事件,当委托或事件被触发执行时,会自 ...

  6. java基础篇 之 foreach探索

    我们看下这段代码: public class Main { public static void main(String[] args) { List list = new ArrayList(); ...

  7. 软路由OpenWrt(LEDE)2020.5.10更新 UPnP+NAS+多拨+网盘+DNS优化

    近期更新:2020.05.10更新-基于OpenWrt R2020.5.9版本,源码截止2020.05.10.   交流群:QQ 1030484865 电报 t.me/t_homelede   版本说 ...

  8. 【Hadoop离线基础总结】MapReduce增强(下)

    MapReduce增强(下) MapTask运行机制详解以及MapTask的并行度 MapTask运行流程 第一步:读取数据组件InputFormat(默认TextInputFormat)会通过get ...

  9. 【FreeRTOS学习05】深度解剖FreeRTOSConfig.h实现对系统的自定义剪裁

    ROM/RAM太小,因此要对系统进行剪裁: 相关文章 [FreeRTOS实战汇总]小白博主的RTOS学习实战快速进阶之路(持续更新) 文章目录 相关文章 1 系统的剪裁 2 FreeRTOSConfi ...

  10. shell 条件结构之 if 语句使用总结

    文章目录 #条件判断的格式 [ exp ] [[ exp ]] test exp 注意: exp 与 "["."]"括号之间必须要有空格,否则会报语法错误: [ ...