【强化学习】MOVE37-Introduction(导论)/马尔科夫链/马尔科夫决策过程
写在前面的话:从今日起,我会边跟着硅谷大牛Siraj的MOVE 37系列课程学习Reinforcement Learning(强化学习算法),边更新这个系列。课程包含视频和文字,课堂笔记会按视频为单位进行整理。
本课作为导论,大致普及了一下机器学习和强化学习的概念和用途。其次,捎带介绍了一下最常见的监督学习和非监督学习。对机器学习稍有了解的同学们,对这两个概念应该不陌生。如果对此毫无概念的同学们,可以看我下面的简单说明。
机器学习(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(导论)/马尔科夫链/马尔科夫决策过程的更多相关文章
- 13张动图助你彻底看懂马尔科夫链、PCA和条件概率!
13张动图助你彻底看懂马尔科夫链.PCA和条件概率! https://mp.weixin.qq.com/s/ll2EX_Vyl6HA4qX07NyJbA [ 导读 ] 马尔科夫链.主成分分析以及条件概 ...
- 强化学习(二)马尔科夫决策过程(MDP)
在强化学习(一)模型基础中,我们讲到了强化学习模型的8个基本要素.但是仅凭这些要素还是无法使用强化学习来帮助我们解决问题的, 在讲到模型训练前,模型的简化也很重要,这一篇主要就是讲如何利用马尔科夫决策 ...
- 强化学习(一)—— 基本概念及马尔科夫决策过程(MDP)
1.策略与环境模型 强化学习是继监督学习和无监督学习之后的第三种机器学习方法.强化学习的整个过程如下图所示: 具体的过程可以分解为三个步骤: 1)根据当前的状态 $s_t$ 选择要执行的动作 $ a_ ...
- 【转载】 强化学习(二)马尔科夫决策过程(MDP)
原文地址: https://www.cnblogs.com/pinard/p/9426283.html ------------------------------------------------ ...
- 强化学习 1 --- 马尔科夫决策过程详解(MDP)
强化学习 --- 马尔科夫决策过程(MDP) 1.强化学习介绍 强化学习任务通常使用马尔可夫决策过程(Markov Decision Process,简称MDP)来描述,具体而言:机器处在一个环境 ...
- 强化学习一:Introduction Of Reinforcement Learning
引言: 最近和实验室的老师做项目要用到强化学习的有关内容,就开始学习强化学习的相关内容了.也不想让自己学习的内容荒废掉,所以想在博客里面记载下来,方便后面复习,也方便和大家交流. 一.强化学习是什么? ...
- 从随机过程到马尔科夫链蒙特卡洛方法(MCMC)
从随机过程到马尔科夫链蒙特卡洛方法 1. Introduction 第一次接触到 Markov Chain Monte Carlo (MCMC) 是在 theano 的 deep learning t ...
- 马尔科夫链蒙特卡洛(Markov chain Monte Carlo)
(学习这部分内容大约需要1.3小时) 摘要 马尔科夫链蒙特卡洛(Markov chain Monte Carlo, MCMC) 是一类近似采样算法. 它通过一条拥有稳态分布 \(p\) 的马尔科夫链对 ...
- 蒙特卡洛马尔科夫链(MCMC)
蒙特卡洛马尔科夫链(MCMC) 标签: 机器学习重要性采样MCMC蒙特卡洛 2016-12-30 20:34 3299人阅读 评论(0) 收藏 举报 分类: 数据挖掘与机器学习(41) 版权声明: ...
随机推荐
- Telerik JustDecompile
Free. For everyone. Forever. With an open source decompilation engine https://www.telerik.com/produc ...
- 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(从) ...
- 搭建Django项目虚拟环境(Windows系统下)
一.安装virtualenv 我们可以使用正式的Python环境中的pip进行安装.进入cmd界面,运行“ pip install virtualenv ”,完成安装后,可以运行“ where vir ...
- MySQL的分页查询及Oracle分页查询
MySQL: Select ... from ...where ...order by...limit start,pageNum 例:比如从 取 个数据 , String sql = )*pageR ...
- Oracle 报错 ORA-03290的处置
MySql 的tuancate命令是直接truncate tableName,但在Oracle需要写成truncate table tableName,改正就好了. --END-- 2019.10.1 ...
- pytorch-Resnet网络
残差网络:将输入层与输出层进行连接,保证了经过这层网路结构,网络的运算能力不会出现较大的改变 网络解析: 第一层网络: 输入网络经过一个卷积层,再经过一个batch_normalize, 再经过一个r ...
- [转]Android使用WebView定位问题
文章转自:https://www.jianshu.com/p/d32d3641741f 最近遇到了一个问题,有一个需求是使用 WebView 来加载一个网页url,H5通过js来获取位置定位信息.以前 ...
- Linux下通过crontab命令来实现定时任务
一.crond的介绍 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动cr ...
- 【转】java获取当前年、月、日 、小时 、分钟、 秒、 毫秒
public class Test { /** * 英文简写(默认)如:2010-12-01 */ public static String FORMAT_SHORT = "yyyy-MM- ...
- vue如何获取并操作DOM元素
原文地址 方法一: 直接给相应的元素加id,然后再document.getElementById("id");获取,然后设置相应属性或样式 方法二: 使用ref,给相应的元素加re ...