写在前面的话:从今日起,我会边跟着硅谷大牛Siraj的MOVE 37系列课程学习Reinforcement Learning(强化学习算法),边更新这个系列。课程包含视频和文字,课堂笔记会按视频为单位进行整理。

课程表地址:https://github.com/llSourcell/Move_37_Syllabus

带字幕课程视频地址:https://www.bilibili.com/video/av31518766

本课作为导论,大致普及了一下机器学习和强化学习的概念和用途。其次,捎带介绍了一下最常见的监督学习和非监督学习。对机器学习稍有了解的同学们,对这两个概念应该不陌生。如果对此毫无概念的同学们,可以看我下面的简单说明。

机器学习(Machine Learning)

首先,我们要明白,所谓的机器学习就是试图找出输入输出量之间的一个固定关系,以期对以后所有的输入量都能相应地去预测一个输出量。用数学语言来说,就是从一堆已知的x和y之间找出映射f。打个比方,如果我们发现每次穿裙子(x)就一定会下雨(y),那么这个因果关系就是f;由此,我们就可以根据f这个关系,也就是某天穿没穿裙子,来推断会不会下雨。

监督学习 (Supervised Learning)

这里举一个水果分类的例子。这里机器学习算法所要完成的工作,就是要得到水果和水果名称之间的关系。

第一步是训练算法,第二步是用测试数据来检验算法的完善度。图中可以看到,这里训练算法时输入的数据是预先分过类的(即打过标签的),所以事先需要人工参与,把未分类的原始数据进行分类。此即是“监督”二字的要义所在,需要人工“监督”才能完成算法的训练。

非监督学习 (Unsupervised Learning)

同样是以水果举例。

同样分为两步,区别在于,这里输入的数据是未分类过的(也未打标签)。机器学习算法需要自己完成分类的工作,并从中找出数据中的模式(往往是我们无法解释和说明的)。非监督学习通常可以用于聚类——识别各个类别之下数据的相似性并由此分类,也可以用于异常识别——例如排除数据集中的异常值(视频中的例子是欺诈性交易)。

这里,一句话总结:监督学习适用于事后对数据阐释性分析和对未来的预测,非监督学习则更适合发现数据的内在规律结构

然而,实际情况中的影响因素往往更复杂,要解决的问题也往往不止是确定既有的固定关系。有时,需要我们在没有训练数据的情况根据实际情况去不断优化策略(有点类似于我们人类的熟能生巧)。因此,这里引进了另一个概念:“强化学习”。

强化学习 (Reinforcement Learning)

这里以选择最优运输路线为例。

可知影响运输结果的因素有很多,包括天气、道路拥堵、交通工具、食品保存等等。同时,我们也没有先验数据来训练算法和检验算法的优越性。那么这里的强化学习算法,就引入了一个新的维度时间,来帮助我们在实际情况中通过不断迭代来优化算法。

强化学习算法可以说是介于监督算法和非监督算法之间。它既不像非监督算法一样完全不使用标签,也不像监督算法一样预先打好标签,这里的标签是延时(delayed)打上的。就像图中所标出的那样,每个环节的标签T(也可以称为反馈)由下一个环节来标记。

我个人的理解是,所谓的强化学习算法的核心,就是一个环环相扣的负反馈系统。学过生物的同学大概能理解的意思,生物内部环境的稳态就是通过负反馈机制来实现的。

而当模式识别网络(神经网络)和基于强化学习框架的实时环境结合在一起,就是所谓深度强化学习。我的理解是,和非监督学习算法类似,前者相当于Step1的模式识别部分,而后者相当于Step2——不断提供反馈来优化算法。

至于这一算法有多牛逼嘛,看阿尔法狗就知道了。

-----------------------------------------------------

介绍完这些基本概念后,下面就进入正题了。有一些数学知识必须了解。

马尔科夫链 (Markov Chain)

对于强化学习来说,马尔科夫链是个很重要的概念。正是基于这个概念,才发展出算法和外界之间沟通反馈的方式。

马尔科夫链究竟是什么呢?简单来说,就是用来描述一连串相互关联的事件(状态)的一种抽象模型。其中每个事件(状态)已经发生的前提下,接着会发生哪个事件(切换到哪个状态)的概率分布是已知的。

好吧,如果概率统计里没学过这一课的同学,估计此时已经百分百晕了。拿现实中的例子来举例,就比方说,天气预报吧。首先我们假定只有两种天气:晴天和雨天,并且前一天下雨后第二天放晴的概率是0.2,继续下雨的概率是0.8;前一天晴天第二天下雨的概率是0.4,继续放晴是0.6。那么,根据今天的天气,我们是不是能把未来七天每天放晴和下雨的概率都算出来了?OK,这未来七天的天气状态,就是一条简单的马尔科夫链。

必须注意两点,一、我们计算出来的只是概率分布,依旧无法确定给出每天的天气;二、每天的天气概率情况只取决于前一天的天气。

现在可以结合一下视频里的示意图来看了,这里的转移矩阵(Transition Matrix)给出了状态间互相转移的概率分布,右下角则展示了每多走一步后我们来到A、B、C三个节点的可能性。

马尔科夫决策过程(Markov Decision Process)

马尔科夫决策过程是马尔科夫链的扩展,在原基础上加入了行动(Action)奖励/反馈(Reward)。相应的转移矩阵也产生了变化,下一个状态的概率分布 不仅取决于上一个状态还取决于采取的行动。而从环境得到的反馈则告诉我们这一步到底是好(正向反馈)还是坏(负向反馈)——所谓趋利避害,下次就可以避免在同一状态下采取同样的行动。那么最终在不断最大化奖励的过程中,我们就获取了最优策略

关于马尔科夫决策过程的具体阐述

(摘自文章:一文读懂AlphaGo背后的强化学习:它的背景知识与贝尔曼方程的原理

假定我们知道状态 s,如果未来的状态条件独立于过去的状态,那么状态 s 就具有马尔科夫性质。这意味着s描述了所有过去的状态直到现在的状态。如果这很难理解,那我们就用一个例子来解释,让这个问题显得更简单一点。假设一个球飞过空中,如果它的状态是由它的位置和速度决定,并足以描述它当前的位置和接下来的位置(不考虑物理模型和外界影响)。因此,这一状态就具备马尔科夫性质。但是,如果我们只知道这个球的位置不知道它的速度,它的状态就不再是马尔科夫。因为现在的状态并不是所有以前状态的归纳,我们需要以前的时间点所得到的信息去构建合适的球的模型。

强化学习通常可以建模为一个马尔科夫决策过程,即MDP(Markov Decision Process)。MDP是一个有向图,它有节点和边的状态,可以描述马尔科夫状态之间的转变,下面是一个简单的例子:

一个简单的马尔科夫决策过程

这个MDP展示了学习马尔科夫决策的过程。在最开始你在一个“不理解”的状态中,接下来,你有两个可能的动作,学习或者不学习。如果你选择不学习,则有100%的可能性返回到不理解的状态里。但是,如果你选择学习,只有20%的可能性让你回到最开始的地方,即80%的可能性变成理解的状态。

实际上,我确定转换到理解状态的可能性超过80%,MDP的核心其实很简单,在一个状态你可以采取一系列的动作,在你采取行动之后,这里有一些你能转化去什么状态的分布。在采取不学习动作的例子中,这个转化也能被很好的确定。

强化学习的目标是去学习怎么花更多的时间在更有价值的状态上,为了有一个更有价值的状态,我们需要MDP提供更多的信息。

你不需要一个MDP来告诉自己饿了要吃饭,但是强化学习的机制是需要它的

这个MDP增加了奖励机制,你每转化到一个状态,就会获得一次奖励。在这个例子中,由于接下来状态是饥饿,你会得到一个负面的奖励,如果接下来状态是饿死,那会得到一个更负面的奖励。如果你吃饱了,就会获得一个正面的奖励。现在我们的MDP已经完全成型,我们可以开始思考如何采取行动去获取能获得的最高奖励。

由于这个MDP是十分简单的,我们很容易发现待在一个更高奖励的区域的方式,即当我们饥饿的时候就吃。在这个模型中,当我们处于吃饱状态的时候没有太多其它的选择,但是我们将会不可避免的再次饥饿,然后立马选择进食。强化学习感兴趣的问题其实具有更大更复杂的马尔科夫决策过程,并且在我们开始实际探索前,我们通常不知道这些策略。

OK,以上就是导论课的所有内容。

有理解不当或阐述的错误的地方,还望大牛们不吝指正。

感谢阅读~

【强化学习】MOVE37-Introduction(导论)/马尔科夫链/马尔科夫决策过程的更多相关文章

  1. 13张动图助你彻底看懂马尔科夫链、PCA和条件概率!

    13张动图助你彻底看懂马尔科夫链.PCA和条件概率! https://mp.weixin.qq.com/s/ll2EX_Vyl6HA4qX07NyJbA [ 导读 ] 马尔科夫链.主成分分析以及条件概 ...

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

    在强化学习(一)模型基础中,我们讲到了强化学习模型的8个基本要素.但是仅凭这些要素还是无法使用强化学习来帮助我们解决问题的, 在讲到模型训练前,模型的简化也很重要,这一篇主要就是讲如何利用马尔科夫决策 ...

  3. 强化学习(一)—— 基本概念及马尔科夫决策过程(MDP)

    1.策略与环境模型 强化学习是继监督学习和无监督学习之后的第三种机器学习方法.强化学习的整个过程如下图所示: 具体的过程可以分解为三个步骤: 1)根据当前的状态 $s_t$ 选择要执行的动作 $ a_ ...

  4. 【转载】 强化学习(二)马尔科夫决策过程(MDP)

    原文地址: https://www.cnblogs.com/pinard/p/9426283.html ------------------------------------------------ ...

  5. 强化学习 1 --- 马尔科夫决策过程详解(MDP)

    强化学习 --- 马尔科夫决策过程(MDP) 1.强化学习介绍 ​ 强化学习任务通常使用马尔可夫决策过程(Markov Decision Process,简称MDP)来描述,具体而言:机器处在一个环境 ...

  6. 强化学习一:Introduction Of Reinforcement Learning

    引言: 最近和实验室的老师做项目要用到强化学习的有关内容,就开始学习强化学习的相关内容了.也不想让自己学习的内容荒废掉,所以想在博客里面记载下来,方便后面复习,也方便和大家交流. 一.强化学习是什么? ...

  7. 从随机过程到马尔科夫链蒙特卡洛方法(MCMC)

    从随机过程到马尔科夫链蒙特卡洛方法 1. Introduction 第一次接触到 Markov Chain Monte Carlo (MCMC) 是在 theano 的 deep learning t ...

  8. 马尔科夫链蒙特卡洛(Markov chain Monte Carlo)

    (学习这部分内容大约需要1.3小时) 摘要 马尔科夫链蒙特卡洛(Markov chain Monte Carlo, MCMC) 是一类近似采样算法. 它通过一条拥有稳态分布 \(p\) 的马尔科夫链对 ...

  9. 蒙特卡洛马尔科夫链(MCMC)

    蒙特卡洛马尔科夫链(MCMC) 标签: 机器学习重要性采样MCMC蒙特卡洛 2016-12-30 20:34 3299人阅读 评论(0) 收藏 举报  分类: 数据挖掘与机器学习(41)  版权声明: ...

随机推荐

  1. Telerik JustDecompile

    Free. For everyone. Forever. With an open source decompilation engine https://www.telerik.com/produc ...

  2. CentOS7 上搭建 CDH(6.3.0)

    这里以四台节点搭建 IP HostName OS 192.168.8.5 h5(主) CentOS 7.5 192.168.8.6 h6(从) CentOS 7.5 192.168.8.7 h7(从) ...

  3. 搭建Django项目虚拟环境(Windows系统下)

    一.安装virtualenv 我们可以使用正式的Python环境中的pip进行安装.进入cmd界面,运行“ pip install virtualenv ”,完成安装后,可以运行“ where vir ...

  4. MySQL的分页查询及Oracle分页查询

    MySQL: Select ... from ...where ...order by...limit start,pageNum 例:比如从 取 个数据 , String sql = )*pageR ...

  5. Oracle 报错 ORA-03290的处置

    MySql 的tuancate命令是直接truncate tableName,但在Oracle需要写成truncate table tableName,改正就好了. --END-- 2019.10.1 ...

  6. pytorch-Resnet网络

    残差网络:将输入层与输出层进行连接,保证了经过这层网路结构,网络的运算能力不会出现较大的改变 网络解析: 第一层网络: 输入网络经过一个卷积层,再经过一个batch_normalize, 再经过一个r ...

  7. [转]Android使用WebView定位问题

    文章转自:https://www.jianshu.com/p/d32d3641741f 最近遇到了一个问题,有一个需求是使用 WebView 来加载一个网页url,H5通过js来获取位置定位信息.以前 ...

  8. Linux下通过crontab命令来实现定时任务

    一.crond的介绍 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动cr ...

  9. 【转】java获取当前年、月、日 、小时 、分钟、 秒、 毫秒

    public class Test { /** * 英文简写(默认)如:2010-12-01 */ public static String FORMAT_SHORT = "yyyy-MM- ...

  10. vue如何获取并操作DOM元素

    原文地址 方法一: 直接给相应的元素加id,然后再document.getElementById("id");获取,然后设置相应属性或样式 方法二: 使用ref,给相应的元素加re ...