什么是强化学习?

强化学习(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. 【DNS域名解析命令】 ping

    ping, ping6 - send ICMP ECHO_REQUEST to network hosts ping命令向网络主机发送ICMP回传请求 详细描述: ping使用ICMP协议强制ECHO ...

  2. Ubuntu登陆时忘记密码怎么办

    有时候由于各种原因,用户会忘记自己登陆Ubuntu的登陆密码,这个时候我们能怎么办呢? 第一步:先重启电脑,开机时长按shift键,进入grub菜单: 第二步:按“e”键编辑启动项,显示如下图,将下图 ...

  3. JavaScript正则表达式及jQuery回顾

    JavaScript 正则表达式,用于规定在文本中检索的内容. 一.定义正则表达式: rep = /\d+/; // js定义正则.(python定义正则:re模块 rep = "\d+&q ...

  4. GitHub 被指审查内容,著名“换脸”开源项目 deepfake 遭限制访问

    开发四年只会写业务代码,分布式高并发都不会还做程序员? >>>   昨天 Hacker News 上一条关于 deepfake 开源项目的帖子(https://news.ycombi ...

  5. XSS攻击简单介绍

    之前由我负责维护的一个项目被检测出存在可能被XSS攻击的漏洞. 吓得我赶紧恶补了下XSS. XSS,全称为Cross Site Script,跨站脚本攻击,是WEB程序中一种常见的漏洞.其主要的攻击手 ...

  6. Codeforces Round #623 (Div. 2, based on VK Cup 2019-2020 - Elimination Round, Engine) C. Restoring

    C. Restoring Permutation time limit per test1 second memory limit per test256 megabytes inputstandar ...

  7. IP 基础知识全家桶,45 张图一套带走

    前言 前段时间,有读者希望我写一篇关于 IP 分类地址.子网划分等的文章,他反馈常常混淆,摸不着头脑. 那么,说来就来!而且要盘就盘全一点,顺便挑战下小林的图解功力,所以就来个 IP 基础知识全家桶. ...

  8. MySQL命令1

    开始学习MySQL. // 创建数据库 CREATE DATABASE db_name; // 删除数据库 DROP DATABASE db_name; // 显示数据库 SHOW DATABASES ...

  9. Shell脚本(三)重定向

    先上一张图: 代码如下: #!/bin/bash echo "hello world" echo `ls +` 运行结果如下: PS: 1. 如果想同时将数据重定向到文件和stdo ...

  10. rsync 服务及部署

    1 rsync简介 1.1 什么是rsync rsync: - a fast, versatile, remote (and local) file-copying toolrsync:是一种快速,多 ...