精华内容
下载资源
问答
  • 【5 Why分析法】合理使用5个为什么,发现现象本质和根本原因,有效解决问题
    千次阅读
    2020-06-22 11:32:13

    所谓5why分析法,又称“5问法”,也就是对一个问题点连续以5个“为什么”来自问,以追究其根本原因。

    虽为5个为什么,但使用时不限定只做“5次为什么的探讨”,主要是必须找到根本原因为止,有时可能只要3次,有时也许要10次,如古话所言:打破砂锅问到底。5why法的关键所在:

    鼓励解决问题的人要努力避开主观或自负的假设和逻辑陷阱,从结果着手,沿着因果关系链条,顺藤摸瓜,直至找出原有问题的根本原因。

     

    介绍

    这种方法最初是由丰田佐吉提出的;后来,丰田汽车公司在发展完善其制造方法学的过程之中也采用了这一方法。作为丰田生产系统(Toyota Production System)的入门课程的组成部分,这种方法成为其中问题求解培训的一项关键内容。

    丰田生产系统的设计师大野耐一曾经将五问法描述为:“……丰田科学方法的基础……重复五次,问题的本质及其解决办法随即显而易见。”

    目前,该方法在丰田之外已经得到了广泛采用,并且现在持续改善法(Kaizen),精益生产法(lean manufacturing)以及六西格玛法之中也得到了采用。

    实施方法

    5WHY从三个层面来实施:

    一、为什么会发生?从“制造”的角度。
    二、为什么没有发现?从“检验”的角度。
    三、为什么没有从系统上预防事故?从“体系”或“流程”的角度。

    每个层面连续5次或N次的询问,得出最终结论。只有以上三个层面的问题都探寻出来,才能发现根本问题,并寻求解决。

    经典案例

    丰田汽车公司前副社长大野耐一曾举了一个例子来找出停机的真正原因

    ★问题一:为什么机器停了?               答案一:因为机器超载,保险丝烧断了。

    ★问题二:为什么机器会超载?            答案二:因为轴承的润滑不足。

    ★问题三:为什么轴承会润滑不足?     答案三:因为润滑泵失灵了。

    ★问题四:为什么润滑泵会失灵?         答案四:因为它的轮轴耗损了。

    ★问题五:为什么润滑泵的轮轴会耗损?答案五:因为杂质跑到里面去了。

    经过连续五次不停地问“为什么”,才找到问题的真正原因和解决的方法,在润滑泵上加装滤网。
    如果员工没有以这种追根究底的精神来发掘问题,他们很可能只是换根保险丝草草了事,真正的问题还是没有解决。

    解决问题步骤

    第一部分:把握现状
    ★步骤1:识别问题。

    在方法的第一步中,你开始了解一个可能大、模糊或复杂的问题。你掌握一些信息,但一定没有掌握详细事实。
    问:我知道什么?

    ★步骤2:澄清问题

    方法中接下来的步骤是澄清问题。为得到更清楚的理解,问:实际发生了什么?应该发生什么?

    ★步骤3:分解问题

    在这一步,如果必要,需要向相关人员调查,将问题分解为小的、独立的元素。
    关于这个问题我还知道什么?还有其他子问题吗?

    ★步骤4:查找原因要点(PoC)

    现在,焦点集中在查找问题原因的实际要点上。你需要追溯来了解第一手的原因要点。问:
    我需要去哪里?我需要看什么?谁可能掌握有关问题的信息?

    ★步骤5:把握问题的倾向

    问:谁?哪个?什么时间?多少频次?多大量?
    在问为什么之前,问这些问题是很重要的。

    第二部分: 原因调查
    ★步骤6:识别并确认异常现象的直接原因。

    如果原因是可见的,验证它。如果原因是不可见的,考虑潜在原因并核实最可能的原因。依据事实确认直接原因。问:
    这个问题为什么发生?我能看见问题的直接原因吗?如果不能,我怀疑什么是潜在原因呢?我怎么核实最可能的潜在原因呢?我怎么确认直接原因?


    ★步骤7:使用“5个为什么”调查方法来建立一个通向根本原因的原因/效果关系链。问:

    处理直接原因会防止再发生吗?如果不能,我能发现下一级原因吗?如果不能,我怀疑什么是下一级原因呢?我怎么才能核实和确认下一级有原因呢?处理这一级原因会防止再发生吗?

    如果不能,继续问“为什么”直到找到根本原因。在必须处理以防止再发生的原因处停止,问:
    我已经找到问题的根本原因了吗?我能通过处理这个原因来防止再发生吗?这个原因能通过以事实为依据的原因/效果关系链与问题联系起来吗?这个链通过了“因此”检验了吗?如果我再问“为什么”会进入另一个问题吗?

    确认你已经使用“5个为什么”调查方法来回答这些问题。
    为什么我们有了这个问题?为什么问题会到达顾客处?为什么我们的系统允许问题发生?

    ★步骤8:采取明确的措施来处理问题

    使用临时措施来去除异常现象直到根本原因能够被处理掉。问:
    临时措施会遏止问题直到永久解决措施能被实施吗?
    实施纠正措施来处理根本原因以防止再发生。问:
    纠正措施会防止问题发生吗?
    跟踪并核实结果。问:
    解决方案有效吗?我如何确认?

    询问回答技巧

    通常情况下,在询问为什么的时候,因为是发散性思维,很难把握询问和回答者的在受控范围内。比如:

    这个工件为什么尺寸不合格?   因为装夹松动;
    为什么装夹松动?    因为操作工没装好;
    为什么操作工没装好?   因为操作工技能不足;
    为什么技能不足?    因为人事没有考评

    类似这样的情况,在5Why分析中,经常发现。所以,我们在利用5Why进行根本原因分析时,一定要把握好一些基本原则:

    1)回答的理由是受控的;
    2)询问和回答是在限定的一定的流程范围内;
    3)从回答的结果中,我们能够找到行动的方向。

    更多相关内容
  • NP问题总结(概念+例子+证明)

    万次阅读 多人点赞 2020-03-29 20:22:11
    本文是自己对NP问题的一次总结,因为看别的博客要不只讲概念,要不只有例子,算是一次汇总吧,加上自己的一点小理解,由于看了一段时间才进行总结的,有些图是直接用的别人画好的,但是不记得网址了,特此鸣谢~

    目录

    基本概念

    证明思路

    常见例子

    21个常见NPC问题

    原理论证


    基本概念

    P问题:(polynominal)    存在多项式时间算法的问题,即在多项式时间内可解的问题;

       例如:冒泡排序、快速排序等问题;

    NP问题:(Nondeterministic polynominal在多项式时间内验证出一个正确解的问题,也就是说这个问题不一定在多项式时间内可解,但可以在多项式时间内验证;

       例如:大数分解问题,比如180576这个数让你拆成两个数相乘,必须是三位乘以三位的,可能很久都解不出来(如果是一个很大很大的数的话),但是我告诉你这是352*513得到的,那么很简单就能在多项式时间内验证是否正确,这就是NP问题;

     

    NPC类问题Nondeterminism Polynomial complete):存在这样一个NP问题,所有的NP问题都可以约化成它。  

    NP-Hard类问题Nondeterminism Polynomial hard):所有NP问题都可以约化成它。

    这里插一句,何为约化,以及两者的具体解释我在下面给出,但是可以看的所谓的NP完全问题和NP难问题的唯一差别就是这个问题本身是不是NP问题。然后两者都是可以被所有NP问题约化的。那也就是说,NP-H问题是包含NPC问题的,而NPC又至少是一个NP问题,那么它也被NP包含,但NP-H问题不一定是NP问题,所以有一部分NP-H问题是NP,有一部分不是,这样整个概念相互包含与相交的逻辑就出来了,如下:

    因此说了这么多,个人认为为什么要判断一个问题是哪类问题,原因在于,它有助于让我们在决心实现这类问题之前对问题的难易程度进行一个有效的判断。如果一个问题是一个NP难问题,众所周知我们是不一定能够找到最优解的,有时候持有次优解即可。如果一个问题连NP问题都不是,也就是说我在多项式时间内连验证它都很费劲,又谈何解决出来呢?这类问题就不大有研究的必要了;

    证明思路

    前面的概念留了一个点,说NP-H问题和NPC问题都是所有NP问题可以约化到的,那么究竟什么是约化?我了解到的:B能解决A,那么就说A可以约化到B,也就是说,B是一个复杂度比A更高的算法,B通过某种特殊情况(简化),可以变成A问题,比如B问题是二元一次方程,A问题是一元一次方程,当B问题,y=0时,它就转变成了一元一次问题。也就是说B问题能解决A,那么就说A问题可以约化到B;

    那说了这么多,NPC的或者NP-H问题的证明思路究竟是什么呢?首先我要先判断一下这个问题本身是不是NP问题(给出一个解能否在多项式时间内验证),然后找到一个已知的NPC问题去约化到这个问题,因为我去验证一个问题,把所有NP问题都约化一遍到我这个问题上不太可能,而NPC问题本身的定义就是所有NP问题可以约化到它,那我拿一个已知的NPC问题,去验证这个NPC问题可以约化到它,即

                     所有NP问题->已知的NPC问题->亟待解决的新问题;

    这样,也就简化了我去验证一个新问题是不是NPC问题的方式;

    证明是NP-Complete 问题:                                                                        证明是NP-Hard 问题:

    ①证明本身是NP问题;                                                                               ①无需证明本身是NP问题;

    ②证明一个已知的NPC问题能约化到它                                                       ②证明一个已知的NPC问题能约化到它;

     

    常见例子

    说了这么多,再来两个例子来巩固一下:

    首先是一个诱导子图的问题,问题描述在第一行,那么想证明这个问题是不是NPC问题(是NPC就一定是NP-H了),首先判断它是不是NP问题,那么给出一个子图包含K个点,问你是否最少包含l条边,很容易就能验证,即在多项式时间内可以验证,是NP问题。

    其次,找到一个已知的NPC问题,验证这个已知的NPC问题可以约化到这个新问题,那么就能证明他是NPC问题了(即找到一个特殊情况把这个问题简化到已知的NPC问题)

    那么当l=C_{k}^{2}时,该问题就变成了找一个K大小的完全子图(因为完全子图边和顶点的关系就是C_{k}^{2}),而找完全子图的问题也称Clique问题,是一个已知的NPC问题,那么通过设定l的特殊取值,将待解决问题转化成了现有NPC问题,即由一个NPC问题约化而来,本例得证;

     

    2.

    In the HITTING SET problem, we are given a family of sets {S1, S2, . . . , Sn} and a budget b, and we wish to find a set H of size b which intersects every Si , if such an H exists. In other words, we want HSi ∅ for all i.

    Show that HITTING SET is NP-complete.

    大概的意思就是这是一个碰撞集问题,这个集合H跟Si的各个集合都相交:

     

    然后来证明他是一个NPC问题:

    ①首先证明它是一个NP问题,像我上图一样,如果给出了一个集合H,问你它是否跟所有的Si都相交,那么这是在多项式时间内可以验证的;即是NP问题;

    ②证明一个已知的NPC问题可以约化到它:

       当我把Si集合特殊化,即我把每条边当成一个Si,集合的元素就是每条边的两端,更改后图如下:

    然后把问题变成,找该图中的最小顶点覆盖问题(Vertex cover),即找到的集合包含图中每条边的至少一端。这样也满足了我的集合H和所有Si集合都相交(将Si集合特化成一条边的作用),那么我亟待解决的问题就特化成了已知的NPC问题——最小顶点覆盖问题。那么本例得证;

    21个常见NPC问题

    既然现有的方式是找到一个已有的NPC问题去验证我要验证的新问题,那么知道了解现有的NPC问题就变得很重要,下面列举了常见的NPC问题,而每个子主题(往后错一格)代表这我可以由前面的主题约化而来:

    可以看到,这些问题约化来约化去,都是有一个初始问题的,因为一个问题由另一个已知的NPC问题约化而来,那么第一个NPC问题是怎么来的?那就要用到NPC问题的本身定义了:所有的NP问题可以约化到它;

    这个方式就是经典的SAT问题,由上图也可以看到,这些已有的NPC问题它的最开始,都是用SAT问题证明的;

    原理论证

    证明了所有的算法都是可以编码为boolean formula(布尔型)问题,这意味着所有算法都可以使用SAT求解,因为他们本质上就是boolean formula问题。

     

    对于任意的boolearn foumula成以下标准式:                

                                              (..∨...∨..)∧(..∨...∨..)∧...

                                                               SAT:如何取值,使式子为真?或根本         

                                                                      不存在一个取值使式子为真。

    这些话是我做的ppt里写的,直接拷过来,意思就是,这所有算法无外乎就是在一个给定集合中找到解,或者无解,而这些算法的选择,条件等等都是可以编码为布尔型,用合取范式的方式表述这个算法的情况,算法有解,就代表合取范式为真,算法无解,就代表这个式子取值为假。

    具体还是看例子,用SAT模型去证明我上面所说的Clique问题:

    首先看这个图,我要找它的k=3 的clique也就是完全子图,答案先放在这(b、c、d)

    那现在将他编码为布尔型,任意编码,但边代表着我的相邻节点必须可以同时为真,像a,b可以同时取值为X1,X2,但不能同时取值X1和,然后图就变成下图:

    编完码后,将其写成SAT的合取范式模型,这里因为k=3,所以合取范式里的析取范式个数为3,搭配是任意的:

    写完后,找到一个k=3的clique,就变成了找到这个合取范式为真的情形。是单独的,所以它必须为真,那么X1就是假,那X2就必须为真,为假,那么X3就必须为真,由此得出,编码bcd为真,即k=3的clique找到了;

     

    以上就是NP问题的概念+证明逻辑+例子,当然自己只是浅显的学习,如果有错误或者论证思路不严密,还望赐教;

     

    注:我这里一直再说NPC NPC,因为NPC是包含在NP-Hard问题里的,很多人所讲的这个问题是np难的,其实就是NPC问题,因为NPC比np难多了一个问题本身是NP的,如果这个问题你连验证都验证不了,又谈何解决呢?

    展开全文
  • 相信大家上一些网站经常遇到网站错乱和控件显示不全的问题,那是因为很多网站对浏览器的兼容性比较差,特别是一些网上银行(中、农、工、商银行等)、公共服务网站(社保、公积金等政府网站)等,虽然现在IE浏览器...

    相信大家上一些网站经常遇到网站错乱和控件显示不全的问题,那是因为很多网站对浏览器的兼容性比较差,特别是一些网上银行(中、农、工、商银行等)、公共服务网站(社保、公积金等政府网站)等,虽然现在IE浏览器已经推出了IE11版本,但是这些网站目前只支持IE8及以下版本。所以目前在国内使用IE6\IE7\IE8等旧版浏览器的用户占比还比较多。根据百度流量研究院提供的最近两年的浏览器市场份额可以看到,IE6-IE8浏览器加起来还有22%左右。不过,这些比例正在逐年减少。

     

    随着时代进步和技术发展,目前新开发的网站,大多数采用了很多HTML5、CSS3等最新的网络标准,IE6-IE8这些老旧的浏览器是无法支持的,除IE外的其他浏览器厂商,对这些标准支持程度都比较高。为了应对这样的情况,所有浏览器厂商均开发了“双核”浏览器。
    “双核”浏览器,顾名思义,就是浏览器内部包含两个渲染内核。目前大多数“双核”浏览器内部的两个内核分别是IE内核和WebKit内核。与双核处理器不同的是,“双核”浏览器的两个内核并不能同时为一个网页进行渲染排版工作,而是根据我们的需要,选择两者之中更适合当前网页的内核来进行渲染排版。IE内核主要用于兼容“老一辈”的网页,使其能够正常显示;WebKit内核则用于渲染“新一代”的网页,从而发挥出更快的显示速度、更好的显示效果、更优异的脚本执行性能。
    实际上,大多数用户并不关心(或者并不知道)双核浏览器的作用,也不会手动选择适合的渲染内核来渲染当前网页,选择渲染内核的工作一般都是浏览器自身“智能”完成的。
    不过,浏览器还没有那么智能,并不总是能够准确地选择出适合当前网页的渲染内核。如果我们的网站属于“崭新的一代”(比如使用了大量HTML5的新特性),而“双核”浏览器却错误地使用IE内核来进行渲染排版,那么用户看到的将会是一堆乱七八糟的东西。

     

    我们可以使用标签来指定适合自己网站的渲染内核名称,当双核浏览器访问本网页时,就会根据我们的指示,选择我们指定的渲染内核来处理网页。如果你是程序员,你就需要在你的网站代码中添加特定标签,来指定你的网站所使用的模式,这个我之前的文章有详细介绍,这里就不多说了。如果你是普通用户,你要做的就是在浏览器上点击使用兼容模式或高速模式。

    浏览器最核心的部分是渲染引擎(Rendering Engine),我们一般习惯称之为“浏览器内核”,其负责解析网页语法(如标准通用标记语言的子集HTML、JavaScript)并渲染、展示网页。因此,所谓的浏览器内核通常也就是指浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。不同的浏览器内核对网页编写语法的解析也有所不同,因此同一网页在不同的内核浏览器里的渲染、展示效果也可能不同。
    内核大概有以下种类:
    1、Trident内核:IE最先开发或使用的,也称IE内核;
    2、Webkit内核:谷歌chrome浏览器最先开发或使用,也叫谷歌内核;
    3、Gecko内核: Netscape6开始采用的内核,后来的Mozilla FireFox (火狐浏览器) 也采用了该内核;
    4、Presto内核:目前只有Opera浏览器采用该内核;
    由于IE浏览器在国内的普及率非常高,所以造成了很多网上银行和支付系统只支持IE的Trident内核,其他浏览器访问根本无法进行正常支付和转账等业务。这就造成了经常在网上购物的人离不开Trident内核的IE浏览器。但是Trident内核的速度和兼容性上又是在比不上Chrome浏览器的WebKit内核和Firefox浏览器的Gecko内核。于是双核浏览器应运而生,比如傲游、猎豹浏览器、搜狗浏览器等。

    例如,工商银行网上银行,我们用高速模式打开,密码控件会提示需要安装,如果用兼容模式打开,则密码控件正常显示。像这种例子还有很多。

    以上内容是对浏览器模式的介绍,如果大家遇到了网站打开显示有问题,使用类似搜狗浏览器这种双核浏览器进行极速模式和兼容模式切换可以解决90%以上的问题,我接下来写的才是我更想说明的,那就是那10%的浏览器兼容性问题怎么解决!

    如果大家对浏览器进行兼容模式或者极速模式切换后网站还是显示不正常,那么也是会经常遇到的,比如一些银行网站,不管你怎么切换模式,都是显示有问题。大家所需要做的就是打开IE浏览器,在IE浏览器中的“兼容性视图设置”将本网站添加进去,然后关闭所有浏览器,重新打开浏览器,你会发现,用搜狗浏览器进行模式切换起作用了。

    “兼容性视图设置”是允许用户显示为旧版本浏览器设计的网站,会向下支持旧版IE的语法。如果您发现网站显示存在文本、图像或文本框未对齐之类的问题,只需按下“兼容性视图”按钮即可纠正因菜单、图像或文本位置不当等问题。

    为此,我特意写了一个Winform程序和一个控制台程序,控制台程序是因为免安装易操作,帮助我们财务和办公室解决银行网站和政府网站浏览器显示的问题,其意义和在IE浏览器“兼容性视图设置”中添加网站一样,都是在注册表中添加了一条网站信息。

    需要程序或者源码的可以QQ联系我,QQ:694268262。祝大家都解决自己遇到的问题,哈哈!

     

     

     

     

     

     

    展开全文
  • 强化学习是如何解决问题的?

    千次阅读 2018-01-16 16:51:53
    强化学习是如何解决问题的?什么是强化学习算法呢,它离我们有多远?2016年和2017年最具影响力的AlphaGo大胜世界围棋冠军李世石和柯洁事件,其核心算法就用到了强化学习算法。相信很多人想了解或者转行研究强化学习...

    强化学习是如何解决问题的?

    什么是强化学习算法呢,它离我们有多远?2016年和2017年最具影响力的AlphaGo大胜世界围棋冠军李世石和柯洁事件,其核心算法就用到了强化学习算法。相信很多人想了解或者转行研究强化学习算法或多或少都跟这两场赛事有联系。如今,强化学习继深度学习之后,成为学术界和工业界追捧的热点。从目前的形式看,强化学习正在各行各业开花结果,前途一片大好。然而,强化学习的入门却很难,明明知道它是一座“金山”,可是由于总不能入门,只能望“金山”而兴叹了。

    什么是强化学习算法?呢要回答这个问题,必须先回答强化学习可以解决什么问题,强化学习如何解决这些问题。

    强化学习可以解决什么问题

    如图1.1所示是强化学习算法的成功案例。其中的A图为典型的非线性二级摆系统。该系统由一个台车(黑体矩形表示)和两个摆(红色摆杆)组成,可控制的输入为台车的左右运动,该系统的目的是让两级摆稳定在竖直位置。两级摆问题是非线性系统的经典问题,在控制系统理论中,解决该问题的基本思路是先对两级摆系统建立精确的动力学模型,然后基于模型和各种非线性的理论设计控制方法。一般来说,这个过程非常复杂,需要深厚的非线性控制理论的知识。而且,在建模的时候需要知道台车和摆的质量,摆的长度等等。基于强化学习的方法则不需要建模也不需要设计控制器,只需要构建一个强化学习算法,让二级摆系统自己去学习就可以了。当学习训练结束后,二级摆系统便可以实现自平衡。图1.1中的B图是训练好的AlphaGo与柯洁对战的第二局棋,C图则为机器人在仿真环境下自己学会了从摔倒的状态爬起来。这三个例子能很好地说明,强化学习算法在不同的领域能够取得令人惊艳的结果。当然,强化学习除了应用到非线性控制、下棋、机器人等方向,还可以应用到其他领域,如视频游戏、人机对话、无人驾驶、机器翻译、文本序列预测等。

    图1.1 强化学习成功案例

    例子是举不完的,可以用一句话来说明强化学习所能解决的问题:智能决策问题。更确切地说是序贯决策问题。什么是序贯决策问题呢?就是需要连续不断地做出决策,才能实现最终目标的问题。如图1.1中图A的二级摆问题,它需要在每个状态下都有个智能决策(在这里智能决策是指应该施加给台车什么方向、多大的力),以便使整个系统逐渐收敛到目标点(也就是两个摆竖直的状态)。图B中的AlphaGo则需要根据当前的棋局状态做出该下哪个子的决策,以便赢得比赛。图C中,机器人需要得到当前状态下每个关节的力矩,以便能够站立起来。一句话概括强化学习能解决的问题:序贯决策问题。那么,强化学习是如何解决这个问题的呢?

    1.3 强化学习如何解决问题

    在回答强化学习如何解决序贯决策问题之前,我们先看看监督学习是如何解决问题的。从解决问题的角度来看,监督学习解决的是智能感知的问题。

    我们依然用一个图来表示。如图1.2所示,监督学习最典型的例子是数字手写体识别,当给出一个手写数字时,监督学习需要判别出该数字是多少。也就是说,监督学习需要感知到当前的输入到底长什么样,当智能体感知到输入长什么样时,智能体就可以对它进行分类了。如图1.2所示,输入手写体长得像4,所以智能体就可以判断它是4了。智能感知其实就是在学习“输入”长得像什么(特征),以及与该长相一一对应的是什么(标签)。所以,智能感知必不可少的前提是需要大量长相差异化的输入以及与输入相关的标签。因此,监督学习解决问题的方法就是输入大量带有标签的数据,让智能体从中学到输入的抽象特征并分类。

    图1.2 强化学习与监督学习的区别

    强化学习则不同,强化学习要解决的是序贯决策问题,它不关心输入长什么样,只关心当前输入下应该采用什么动作才能实现最终的目标。再次强调,当前采用什么动作与最终的目标有关。也就是说当前采用什么动作,可以使得整个任务序列达到最优。如何使整个任务序列达到最优呢?这就需要智能体不断地与环境交互,不断尝试,因为智能体刚开始也不知道在当前状态下哪个动作有利于实现目标。强化学习解决问题的框架可用图1.3表示。智能体通过动作与环境进行交互时,环境会返给智能体一个当前的回报,智能体则根据当前的回报评估所采取的动作:有利于实现目标的动作被保留,不利于实现目标的动作被衰减。具体的算法,我们会在后面一一介绍。用一句话来概括强化学习和监督学习的异同点:强化学习和监督学习的共同点是两者都需要大量的数据进行训练,但是两者所需要的数据类型不同。监督学习需要的是多样化的标签数据,强化学习需要的是带有回报的交互数据。由于输入的数据类型不同,这就使得强化学习算法有它自己的获取数据、利用数据的独特方法。那么,都有哪些方法呢?这是本书重点要讲的内容。在进入详细的讲解之前,我们在这里先简单地了解下这些强化学习算法的发展历史。

    图1.3 强化学习基本框架

    我们不去深究强化学习算法的具体发展历史,只给出两个关键的时间点。第一个关键点是1998年,标志性的事件是Richard S. Sutton出版了他的强化学习导论第一版,即Reinforcement Learning : An Introduction(该书第二版的中文版将由电子工业出版社出版),该书系统地总结了1998年以前强化学习算法的各种进展。在这一时期强化学习的基本理论框架已经形成。1998年之前,学者们关注和发展得最多的算法是表格型强化学习算法。当然,这一时期基于直接策略搜索的方法也被提出来了。如1992年R.J.Williams提出了Rinforce算法直接对策略梯度进行估计。第二个关键点是2013年DeepMind提出DQN(Deep Q Network),将深度网络与强化学习算法结合形成深度强化学习。从1998年到2013年,学者们也没闲着,发展出了各种直接策略搜索的方法。2013年之后,随着深度学习的火热,深度强化学习也越来越引起大家的注意。尤其是2016年和2017年,谷歌的AlphaGo连续两年击败世界围棋冠军,更是将深度强化学习推到了风口浪尖之上。如今,深度强化学习算法正在如火如荼地发展,可以说正是百家争鸣的年代,或许再过几年,深度强化学习技术会越来越普及,并发展出更成熟、更实用的算法来,我们拭目以待。

    1.4 强化学习算法分类及发展趋势

    已有的强化学习算法种类繁多,一般可按下列几个标准来分类。

    (1)根据强化学习算法是否依赖模型可以分为基于模型的强化学习算法和无模型的强化学习算法。这两类算法的共同点是通过与环境交互获得数据,不同点是利用数据的方式不同。基于模型的强化学习算法利用与环境交互得到的数据学习系统或者环境模型,再基于模型进行序贯决策。无模型的强化学习算法则是直接利用与环境交互获得的数据改善自身的行为。两类方法各有优缺点,一般来讲基于模型的强化学习算法效率要比无模型的强化学习算法效率更高,因为智能体在探索环境时可以利用模型信息。但是,有些根本无法建立模型的任务只能利用无模型的强化学习算法。由于无模型的强化学习算法不需要建模,所以和基于模型的强化学习算法相比,更具有通用性。

    (2)根据策略的更新和学习方法,强化学习算法可分为基于值函数的强化学习算法、基于直接策略搜索的强化学习算法以及AC的方法。所谓基于值函数的强化学习方法是指学习值函数,最终的策略根据值函数贪婪得到。也就是说,任意状态下,值函数最大的动作为当前最优策略。基于直接策略搜索的强化学习算法,一般是将策略参数化,学习实现目标的最优参数。基于AC的方法则是联合使用值函数和直接策略搜索。具体的算法会在后面介绍。

    (3)根据环境返回的回报函数是否已知,强化学习算法可以分为正向强化学习和逆向强化学习。在强化学习中,回报函数是人为指定的,回报函数指定的强化学习算法称为正向强化学习。很多时候,回报无法人为指定,如无人机的特效表演,这时可以通过机器学习的方法由函数自己学出来回报。

    为了提升强化学习的效率和实用性,学者们又提出了很多强化学习算法,如分层强化学习、元强化学习、多智能体强化学习、关系强化学习和迁移强化学习等。这些主题已超出了本书的范围,读者若是感兴趣,可在阅读完本书后在网上下载相关内容阅读。

    强化学习尤其是深度强化学习正在快速发展,从当前的论文可以初步判断强化学习的发展趋势如下。

    第一,强化学习算法与深度学习的结合会更加紧密。

    机器学习算法常被分为监督学习、非监督学习和强化学习,以前三类方法分得很清楚,而如今三类方法联合起来使用效果会更好。所以,强化学习算法其中一个趋势便是三类机器学习方法在逐渐走向统一的道路。谁结合得好,谁就会有更好的突破。该方向的代表作如基于深度强化学习的对话生成等。

    第二,强化学习算法与专业知识结合得将更加紧密。

    如果将一般的强化学习算法,如Qlearning算法直接套到专业领域中,很可能不工作。这时一定不能灰心,因为这是正常现象。这时需要把专业领域中的知识加入到强化学习算法中,如何加?这没有统一的方法,而是根据每个专业的内容而变化。通常来说可以重新塑造回报函数,或修改网络结构(大家可以开心地炼丹灌水了)。该方向的代表作是NIPS2016的最佳论文值迭代网络(Value Iteration Networks)等。

    第三,强化学习算法理论分析会更强,算法会更稳定和高效。

    强化学习算法大火之后,必定会吸引一大批理论功底很强的牛人。这些牛人不愁吃穿,追求完美主义、又有很强的数学技巧,所以在强化学习这个理论还几乎是空白的领域,他们必定会建功立业,名垂千史。该方向的代表作如基于深度能量的策略方法,值函数与策略方法的等价性等。

    第四,强化学习算法与脑科学、认知神经科学、记忆的联系会更紧密。

    脑科学和认知神经科学一直是机器学习灵感的源泉,这个源泉往往会给机器学习算法带来革命性的成功。人们对大脑的认识还很片面,随着脑科学家和认知神经科学家逐步揭开大脑的神秘面纱,机器学习领域必定会再次受益。这个流派应该是以DeepMind和伦敦大学学院为首,因为这些团体里面不仅有很多人工智能学家还有很多认知神经科学家。该方向的代表作如DeepMind关于记忆的一列论文。


    本文节选自深入浅出强化学习:原理入门一书


    展开全文
  • 在用tensorflow复现github上面的代码时,经常会出现tensorflow版本不对的情况,如下图...我们都知道这是因为tensorflow版本的问题,所以最好的解决方法是去tensorflow的官网去查看对应的函数改版前后的变化。 tensorfl
  • SQL注入问题解决(PreparedStatement)

    千次阅读 多人点赞 2021-11-19 12:46:09
    (就拿上篇的代码举个例子) 以上为正常现象,但有些“不法分子”抓住了代码的漏洞,干了一些不为人知的事情。 What!竟然登录成功了!发生了甚么?让我们Debug一下,一探究竟。 select * from t_user ...
  • JAVA 内存泄露详解(原因、例子解决

    万次阅读 多人点赞 2016-05-05 20:24:58
     像上面例子中的情况很容易发生,也是我们最容易忽略并引发内存泄露的情况,解决的原则就是尽量减小对象的作用域(比如android studio中,上面的代码就会发出警告,并给出的建议是将类的成员变量改写为方法内的局部...
  • 主流浏览器兼容性问题解决方案

    千次阅读 2018-11-12 14:23:11
    主流浏览器兼容性问题解决方案  所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况。在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站...
  • 经典的ABA问题解决方法

    万次阅读 2019-03-06 16:18:03
    要了解什么是ABA问题,首先我们来通俗的看一下这个例子,一家火锅店为了生意推出了一个特别活动,凡是在五一期间的老用户凡是卡里余额小于20的,赠送10元,但是这种活动没人只可享受一次。然后火锅店的后台程序员...
  • 它已经成功地用于许多项目中,而且它对自然语言处理(NLP)的问题解决提供了很大的帮助。 朴素贝叶斯是利用概率论和贝叶斯定理预测样本类别(如新闻或客户评论)的概率算法。它们是概率性的,这意味着它们计算...
  • 消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,...
  • 分治法的设计思想:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。 任何一个可以用计算机求解的问题所需的计算时间都与其规模有关。问题的规模越小,越容易直接求解,解题所...
  • 浏览器的跨域问题以及解决方案

    万次阅读 2016-04-10 22:37:40
    1、为什么会有跨域问题的存在?  JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象,即同源政策。 2、什么是同源?  1995年,同源政策由 Netscape 公司引入浏览器。目前,所有浏览器都实行这个政策...
  • 算法基础:NP完全问题

    万次阅读 多人点赞 2019-03-05 16:57:37
    对于NP完全问题的定义,百度百科是这样给出的:NP完全问题(NP-C问题),是世界七大数学难题之一。 NP的英文全称是Non-deterministic Polynomial的问题,即多项式复杂程度的非确定性问题。简单的写法是 NP=P?,问题就...
  • HDFS小文件问题解决方案与启发实践

    千次阅读 2017-01-08 14:25:07
    前言 继上文聊聊HDFS BlockManager的服务化改造之后,本文我们继续来讨论HDFS扩展性相关的问题。在本文的阐述过程中,我们将通过一个...在下文中,笔者将会介绍小文件的缘由,现有解决办法,新的解决方案等等内容。
  • 背景: 根据上图可以看到QPS:10.73k,实际上真实的并发大量数据到达的时候,我这里最高的QPS是...我这里讲解的例子是目前4主8库(12个实例),以下每个实例都会称为分片。单个分片配置mysql版本5.7.19(一会说明不...
  • 后端如何解决跨域问题

    万次阅读 多人点赞 2019-08-28 11:19:00
    对于跨域,相信同学们都有所了解。前端的跨域的若干种方式,大家也都知道,什么 JSONP,iframe+domain...简单来说,当一台服务器资源另一台服务器(不同 的域名或者端口)请求一个资源或者接口,就会发起一个跨域 ...
  • 很详细的解决Tomcat乱码问题

    万次阅读 多人点赞 2021-04-25 20:01:10
    解决Tomcat乱码问题一、问题提出二、乱码原因三级目录 一、问题提出 相信很多初始Tomcat的小伙伴都会遇到下面的情况,启动Tomcat是一大堆看不懂的文字,比如。。。 相信很多有强迫症的同学,看到这些很不爽,我也是...
  • CAS中的ABA问题如何解决

    千次阅读 2019-08-30 10:15:49
    出现数据不一致的根本原因,是设置操作发生的时候,没有检查库存与查询出来的库存有没有变化,理论上: 仅库存为5的时候,用户1的库存设置2才能成功 仅库存为5的时候,用户2的库存设置3才能成功   实际...
  • 随着互联网的不断发展,程序员在学习编程语言的种类上也开始偏向于人工智能AI技术方面的知识学习了,下面我们就一起来了解一下,关于机器学习我们都需要解决哪些问题。 机器学习一般用来解决哪些方面的问题? 要问...
  • PHP解决高并发问题

    万次阅读 多人点赞 2020-05-27 12:10:04
    我们通常衡量一个Web系统的吞吐率的指标是QPS(Query Per Second,每秒处理请求数),解决每秒数万次的高并发场景,这个指标非常关键。举个例子,我们假设处理一个业务请求平均响应时间为100ms,同时,系统内有20台...
  • P问题、NP问题、NPC问题、NP hard问题

    万次阅读 多人点赞 2019-01-17 17:33:13
    NP hard问题:Non-deterministic Polynomial hard problem(NPH)问题,如果所有NP问题可在多项式时间内转化(归约,意思是解决了后者也就相应的解决了前者)成某个问题,则该问题称为NP难问题。 这里 规约 的意思是...
  • 【缓存】缓存中常见的4种问题分析以及解决方案

    万次阅读 热门讨论 2017-10-08 09:15:54
    由于最近要准备换工作,同时最近在“Redis中国用户组”上关注了一系列Redis的活动,想要总结一下,Redis当做缓存使用过程中的一些常见问题。一、前提 1.文中相关术语 (1)缓存命中: 终端用户访问加速节点时,...
  • 对计算机专业来说学历真的重要吗?

    万次阅读 多人点赞 2019-09-27 09:21:37
    我本科学校是渣渣二本,研究生学校是985,现在毕业五年,校招笔试、面试,社招面试参加了两年了,就我个人的经历来说下这个问题。 这篇文章很长,但绝对是精华,相信我,读完以后,你会知道学历不好的解决方案,...
  • 另一种是以降低成本为目的,显然滴滴的客服外包属于这种类型,所以要解决问题应该是:如何实现两个单位协作,既降低了成本,又能满足服务的要求。 如果将数据提供给外包服务部门,或者给外包部门访问数据的权限,...
  • JAVA 常见内存泄露例子及详解

    万次阅读 多人点赞 2018-08-23 19:13:40
     像上面例子中的情况很容易发生,也是我们最容易忽略并引发内存泄露的情况,解决的原则就是尽量减小对象的作用域(比如android studio中,上面的代码就会发出警告,并给出的建议是将类的成员变量改写为方法内的局部...
  • 问题发现 这个问题起源于我用于刷访问量的博客https://blog.csdn.net/CY19980216/article/details/82825833,当然这个刷访问量的小爬虫之前也因为CSDN自身更新出过一些小问题,不过最近它出了一个很恶心的问题。如...
  • 视觉SLAM 是指用相机解决定位和建图问题。本文以一个小机器人为例形象地介绍了视觉SLAM的功能及特点。 本文选自《视觉SLAM十四讲:理论到实践》。
  • Python十大装B语法

    万次阅读 多人点赞 2019-11-01 14:29:21
    因为 for 的级别比 if 高,else 又是一个攀附权贵的家伙,根本不在乎是否有 if,以及是否执行了满足 if 条件的语句。else 的眼里只有 for,只要 for 顺利执行完毕,else 就会屁颠儿屁颠儿地跑一遍: >> > for i...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 242,754
精华内容 97,101
关键字:

从根本解决问题的例子