阅读更多

0顶
0踩

行业应用

原创新闻 一文读懂AlphaGo背后的强化学习

2017-11-29 14:17 by 副主编 jihong10102006 评论(0) 有8076人浏览

作者 | Joshua Greaves
编译 | 刘畅,林椿眄

本文是强化学习名作——“Reinforcement Learning: an Introduction”一书中最为重要的内容,旨在介绍学习强化学习最基础的概念及其原理,让读者能够尽快的实现最新模型。毕竟,对任何机器学习实践者来说,RL(强化学习,即Reinforcement Learning)都是一种十分有用的工具,特别是在AlphaGo的盛名之下。

第一部分,我们将具体了解了MDPs (马尔可夫决策过程)以及强化学习框架的主要组成部分;第二部分,我们将构建并学习有关价值函数和Bellman (贝尔曼方程)的理论知识,它是强化学习中最重要公式,我们将一步一步地推导、解释,以揭开强化学习的神秘面纱。

当然,本文只是尽力用最快、最直观的方式带你来理解强化学习背后的理论,而要加深自己在该话题上的理解,Sutton和Barto所写的“Reinforcement Learning:An Introduction”肯定值得你用心读一读。此外,AlphaGo身后的大神David Silver在YouTube上所讲强化学习十课也值得你认真学一学。

 

监督学习 vs. 评估学习

 

对于很多感兴趣的问题,监督学习的范例没有办法给我们提供所需要的灵活性。监督学习和强化学习这两者之间最主要的区别在于收到的反馈是评估性的还是指导性的。指导性的反馈告诉你如何达到目标,而评估性的反馈则告诉你将会把目标完成到什么程度。监督学习以指导性的反馈为基础来解决问题,而强化学习则是基于评估性反馈来解决问题的。图像分类就是用带有指导性反馈的监督学习解决问题的一个实际例子;当算法尝试分类一些特定的数据时,它将从指导性的反馈中了解到哪个才是真正的类别。而另一方面,评估性的反馈仅仅告诉你完成目标的程度。如果你用评估性反馈来训练一个分类器,你的分类器可能会说“我认为这是一个仓鼠”,然后它会得到50分。但是,由于没有任何语境信息,我们不知道这 50 分是什么。我们需要进行其他的分类,探索50分意味着我们是准确或是不准确。或许10000分是一个更好的分值,因此我们还是不知道它是什么,除非我们尝试去对其他数据再进行分类。

图片描述

猜到是仓鼠就可以得到两个金色星星和一个笑脸,而猜沙鼠能得到一个银色星星和一个大拇指

在我们感兴趣的很多问题中,评估性反馈的想法是更直观的,更易实现的。例如,想象一个控制着数据中心温度的系统。指导性反馈在这里似乎没有任何用处,你怎样告诉你的算法在任意给定的时间步中每个零件正确的设置是什么?评估性反馈在这里就将发挥它的用处了。你能很容易的知道在一个特定的时间段用了多少电,或者平均温度是多少,甚至有多少机器温度过高了等数据。这实际上就是谷歌使用强化学习解决这些问题的方式。让我们直接来学习吧。

 

马尔科夫决策过程

 

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

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

图片描述

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

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

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

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

图片描述

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

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

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

 

形式化强化学习问题

 

现在我们有了很多我们需要的基础材料,接下来我们需要将目光转向强化学习的术语。最重要的组成是智能体(agent)和环境(environment)。智能体是被间接控制的,且存在于环境中。回顾我们的马尔科夫决策模型,智能体可以在给定的状态下选择一个对它有显著影响的动作。然而,智能体并不能完全的控制环境的动态,环境会接收这些动作,然后返回新的状态和奖励

图片描述

来自Sutton和Barto的书“Reinforcement Learning: an Introduction”(这是强烈推荐的)的这张图,很好的解释了智能体和环境之间的相互作用。在某个时间步t,智能体处于状态s_t,采取动作a_t。然后环境会返回一个新的状态s_t+1和一个奖励r_t+1。奖励处于t+1时间步是因为它是由环境在t+1的状态s_t+1返回的,因此让它们两个保持一致更加合理(如上图所示)。

我们现在已经有一个强化学习问题的框架,接下来准备学习如何最大化奖励函数。在下一部分中,我们将进一步学习状态价值(state value)函数和动作价值(action value)函数,以及奠定了强化学习算法基础的贝尔曼(Bellman)方程,并进一步探索一些简单而有效的动态规划解决方案。

 

奖励与回报

 

正如前面所说的,强化学习中的智能体学习如何最大化未来的累积奖励。这个用来描述未来的累积奖励的词称为回报,通常用R表示。我们还使用下标t来表示在某个时间步骤下的返回值。数学公式的表示如下:

图片描述

如果我们让这个级数无限延伸,那么我们可能会得到无穷的回报,但这样的话使得这个问题的定义失去意义。因此,只有当我们期望得到的奖励是有限级的,这个等式才有意义。有终止程序的任务称为情景任务。纸牌游戏是情景性问题的好例子。情景的开始是向每个人发牌,并且不可避免地根据特定的游戏规则而结束。然后,下一轮另一个情景又开始,再次处理这些纸牌。

比起使用未来的累积奖励,更为常用地是使用未来累积折扣奖励:

图片描述

在这里0<γ<1。以这种方式来定义回报值有两个好处:不仅能够以无限级数来定义回报值,而且还能为随后的回报赋予更好的权重,这意味着我们更关心即将到来的回报,而不是我们将来会得到的回报。γ的值越小,就越正确。在特殊情况下,我们令γ等于0或者1。当γ等于1时,我们就回到了第一个等式,我们关心的是所有的回报,而不是考虑到未来有多远。另一方面,当γ等于0时,我们关心的是当前的回报,而不考虑之后的任何回报。这将导致我们的算法缺乏长远性。它将学会采取最适合当前情况的行动,但不会考虑此行动对未来的影响。

 

策略

 

策略,被记为Π(s,a),描述了行动的一个方式。它是一个这样的函数:接受一个状态和一个动作,并返回在该状态下采取这个动作的概率。因此,对于一个给定的状态,它必须满足 。在下面的例子中,当我们饿时,我们可以在吃和不吃两个动作之间做出选择。

图片描述

我们的策略应该描述如何在每个状态下采取行动。因此,一个等概率的随机策略就该像这样子: 其中E代表吃的行动, 代表不吃的行动。这意味着,如果你处于饥饿状态,你在选择吃或者不吃的概率是相同的。

我们使用强化学习的目标是为了去学习一个最优的策略Π*,它告诉我们如何行动以得到最大化的回报。这只是一个简单的例子,容易知道例子中的最优决策是饿了就吃 。在这个实例中,正如许多MDPs (马尔可夫决策过程)一样,最优的决策是确定性的。每一个最佳状态都有一个最佳行动。有时这被写成

Π*(s)=a,这是一个从状态到这些状态下最优决策行动的一个映射。

 

价值函数

 

我们利用价值函数来得到学习的最优策略。强化学习中有两种类型的价值函数:状态价值函数,表示为V(s);和行为价值函数,表示为Q(s,a)。

状态价值函数描述了在执行一个策略时的状态值。这是一个从状态s开始执行我们的策略Π所得到的预期回报:

图片描述

值得注意的是,即使在相同的环境下,价值函数也会根据策略而改变。这是因为状态的价值函数取决于你的行为方式,因为你在某一个特定的状态下的行为会影响你预期的回报。同样要注意的是期望的重要性。(期望就像一个平均值,就是你期望看到的回报)。我们使用期望的原因在于:当你到达一个状态时,会发生一些随机状况。你可能有一个随机策略,这意味着我们需要将我们所采取的所有不同行动的结果结合起来。同样地,过渡函数可以是随机的,也就是说,我们不能以100%的概率结束任何状态。记住上面的这个例子:当你选择一个行动时,环境将返回下一个状态。可能有多个状态可以返回,甚至是一个动作。更多的信息我们将会在Bellman方程(贝尔曼方程)中得到。期望将所有的随机性都考虑在内。

我们将使用另一个价值函数是动作价值函数。动作价值函数是指我们采取某一特定策略时,在某个状态下采取一个动作所产生的价值。这是在策略Π下,对给定状态和行动时所返回的预期回报:

图片描述

对状态价值函数的注释同样适用于动作价值函数。它将考虑到未来行动的随机性,以及从环境中返回状态的随机性。

 

贝尔曼方程

 

Richard Bellman是一位美国应用数学家,他推导了以下方程,让我们能够开始求解这些MDPs (马尔可夫决策过程)。在强化学习中,贝尔曼方程无处不在,必须了解强化学习算法是如何工作的。但是在我们了解贝尔曼方程之前,我们需要了解一些更有用的符号。我们P和R定义为如下:

图片描述 图片描述

是另一种表达我们从状态s开始,采取行动a,到状态s’的期望 (或平均) 奖励的表达方式。

最后,有了这些知识,我们准备推导Bellman方程 (贝尔曼方程)。我们将把状态价值函数考虑到Bellman方程(贝尔曼方程)之内。根据回报的定义,我们可以修改公式(1)为如下所示:

图片描述

如果我们想从总和回报中提出第一个奖励,公式可以被改写为这样:

图片描述

在这里期望可以被描述如果我们采取策略Π时,继续从状态s出发的期望回报。可以通过对所有可能的动作和所有可能的返回状态的求和来描述期望。接下来的两个方程可以帮助我们迈出下一步。

图片描述

通过对这两个部分分配期望值,我们就可以将我们的方程转化为如下形式:

图片描述

值得注意得是,方程(1)和这个方程的结束部分是一样的。因此,我们可以将其替换,得到如下:

图片描述

Bellman方程(贝尔曼方程)的动作价值函数可以以类似的方式推导出来。感兴趣的人可以在文章的最后看到具体的步骤。其最终结果如下:

图片描述

Bellman方程的重要性在于,它能让我们将一个状态的值表达成其他状态的值。这意味着当我们知道状态st+1的值时,我们可以轻松地计算出状态st的值。这为我们解决每个状态值的迭代计算问题打开了大门,因为如果我们知道下一个状态的值,我们就能知道当前状态的值。在这里,最重要的是要记住方程式的编号。最后,随着Bellman方程(贝尔曼方程)的出现,我们可以开始研究如何计算最优策略,并编写我们的第一个强化学习智能体程序。

 

下一步:动态规划

 

在下一篇文章中,我们将研究使用动态规划来计算最优策略,这将为更高级的算法奠定基础。然而,这将是第一个实际编写强化学习算法的机会。我们将研究策略迭代和值迭代以及他们的优缺点。在此之前,感谢您的阅读。

正如所承诺的:推导Bellman方程的动作价值函数(贝尔曼方程)

正在我们推导出Bellman方程状态价值函数的过程一样,我们用相同的推导过程得到了一系列的方程,下面我们从方程(2)开始继续推导:

图片描述

相关链接:
Reinforcement Learning: an Introduction
http://incompleteideas.net/sutton/book/the-book-2nd.html
RL Course by David Silver
https://www.youtube.com/watch?v=2pWv7GOvuf0
RL Course by David Silver PPT
http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching.html
Everything You Need to Know to Get Started in Reinforcement Learning
https://joshgreaves.com/reinforcement-learning/introduction-to-reinforcement-learning/
Understanding RL: The Bellman Equations
https://joshgreaves.com/reinforcement-learning/understanding-rl-the-bellman-equations/

0
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

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

    本文是强化学习名作——“Reinforcement Learning: an Introduction”一书中最为重要的内容,旨在介绍学习强化学习最基础的概念及其原理,让读者能够尽快的实现最新模型。毕竟,对任何机器学习实践者来说,RL(强化...

  • 一文读懂AlphaGo背后的强化学习(转载自https://blog.csdn.net/qq_40027052/article/details/78603718)

    一文读懂AlphaGo背后的强化学习 2017-11-22 14:55:54 csdn人工智能 阅读数 7694 收藏 收起 分类专栏: 人工智能 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文...

  • 初识人工智能,一文读懂强化学习的知识文集(5)

    强化学习(Reinforcement Learning)是机器学习的一个分支,它通过在环境中与其交互并根据其行为获得的奖励或惩罚来学习如何采取行动。强化学习算法可以被训练来执行各种任务,包括游戏、机器人控制和投资组合管理。...

  • 一文读懂人工智能、机器学习、深度学习、强化学习的关系(必看)

    从Google AlphaGo到Chatbot聊天机器人、智能理专、精准医疗、机器翻译等,人工智能技术被应用于安防、医疗、家居、交通、智慧城市等各行各业,其前景是毋庸置疑的,未来绝对是一个万亿级市场。 人工智能是下一次工业...

  • 强化学习极简入门:通俗理解MDP、DP MC TC和Q学习、策略梯度、PPO

    强化学习里面的概念、公式,相比ML/DL特别多,初学者刚学RL时,很容易被接连不断的概念、公式给绕晕,而且经常忘记概念与公式符号表达的一一对应(包括我自己在1.10日之前对好多满是概念/公式的RL书完全看不下去,...

  • 一文读懂自学机器学习的误区和陷阱(附学习资料)

    本文为你指出一些自学的误区,推荐学习资料,提供客观可行的学习表并给出进阶学习的建议。 后台私信回复“20190426”获取推荐图书电子版 0. 背景 写这篇教程的初衷是很多朋友都想了解如何入门/转行机器...

  • 初识人工智能,一文读懂人工智能概论(1)

    人工智能是计算机科学的一个分支,它企图了解智能的实质,并构造出一种新的智能主体,这种智能主体能够理解或学习人类所理解或学习的知识,并运用这种知识来解决人类的问题。人工智能是研究、开发用于模拟、延伸和...

  • 一文读懂机器学习(转)

    一、机器学习的发展背景:人工智能 人工智能(Artificial Intelligence,缩写为AI)是对人的意识、思维过程进行模拟的一门新学科。如今,人工智能从虚无缥缈的科学幻想变成了现实。计算机科学家们在人工智能的技术...

  • 第五行:一文读懂深度强化学习

    作者:禅与计算机程序设计艺术 1.简介 人工智能一直以来都在不断的进步,而强化学习也是其中重要的一环。强化学习是一个机器学习领域的研究...近年来,深度强化学习(Deep Reinforcement Learning)已经成为强化学习的

  • 一文读懂强化学习:RL全面解析与Pytorch实战

    在本篇文章中,我们全面而深入地探讨了强化学习(Reinforcement Learning)的基础概念、主流算法和实战步骤。从马尔可夫决策过程(MDP)到高级算法如PPO,文章旨在为读者提供一套全面的理论框架和实用工具。同时,...

  • 【2017最佳机器学习论文】AlphaGo Zero最赏心悦目(一文读懂大咖论文)

    前几天与杨静老师和刘江老师,讨论 2017 年人工智能进展时,没来得及说 2017 年最值得读的论文。 “什么是最值得读的论文”,这个话题,仁者见仁智者见智。 下面,说说我个人觉得今年收获最大的论文: 最赏心悦目:...

  • C语言基础语法与程序设计入门讲解

    c语言入门 C语言一经出现就以其功能丰富、表达能力强、灵活方便、应用面广等特点迅速在全世界普及和推广。C语言不但执行效率高而且可移植性好,可以用来开发应用软件、驱动、操作系统等。C语言也是其它众多高级语言的鼻祖语言,所以说学习C语言是进入编程世界的必修课。hello,world #include<stdio.h>  int main() {     /*在双引号中间输入Hello World*/      printf("Hello World");     return 0;  } 注:在最新的C标准中,main函数前的类型为int而不是void c语言的具体结构简单来说,一个C程序就是由若干头文件和函数组成。#include <stdio.h>就是一条预处理命令, 它的作用是通知C语言编译系统在对C程序进行正式编译之前需做一些预处理工作。函数就是实现代码逻辑的一个小的单元。必不可少之主函数一个C程序有且只有一个主函数,即main函数。C程序就是执行主函数里的代码,也可以说这个主函数就是C语言中的唯一入口。而main前面的int就是主函数的类型.printf()是格式输出函数,这里

  • 部门绩效考核表模板(基于KPI,以月度为例1).xlsx

    部门绩效考核表模板(基于KPI,以月度为例1)

  • 基于YOLOv5的移动机器人动态视觉SLAM算法研究.pdf

    基于YOLOv5的移动机器人动态视觉SLAM算法研究.pdf

  • 基于二阶锥优化的电气综合能源系统协调调度策略研究与仿真-利用MATLAB及CPLEX平台精准求解,MATLAB代码:基于二阶锥优化电气综合能源系统优化调度研究 关键词:电气综合能源 优化调度 二阶锥

    基于二阶锥优化的电气综合能源系统协调调度策略研究与仿真——利用MATLAB及CPLEX平台精准求解,MATLAB代码:基于二阶锥优化电气综合能源系统优化调度研究 关键词:电气综合能源 优化调度 二阶锥优化 参考文档:《考虑气电联合需求响应的气电综合能源配网系统协调优化运行_刘天琪》参考部分配电网设备模型,非完全复现,具体以店主自写文档为准 仿真平台:MATLAB+CPLEX 平台 优势:代码具有一定的深度和创新性,注释清晰,非烂大街的代码,非常精品 主要内容:代码主要做的是电气综合能源系统的优化调度策略,气网部分和电网部分的相关约束都通过二阶锥或者其他线性化的方法进行化简,模型清晰且容易求解,经过化简后采用CPLEX实现求解,可以在此基础上扩加储能、SVG、OLTC以及电容器等相关设备,升级版的程序店主也有,该代码适合新手学习以及在此基础上进行拓展,代码质量非常高,保姆级的注释以及人性化的模块子程序,所有数据均有可靠来源 ,基于二阶锥优化的电气综合能源系统优化调度MATLAB代码研究

  • 春节文化主题活动策划与作文素材集锦

    春节主题作文素材 初中语文主题学习 2025年01月21日 20:26 山西 写年味 开头:新年的脚步渐近,街头巷尾瞬间被年味填满。大红灯笼高高挂起,恰似熟透的红柿子,在风中轻晃,透着喜庆。街边店铺张贴着崭新春联,墨香在空气中氤氲。年货摊前人头攒动,吆喝声、谈笑声交织。孩子们手持糖葫芦,欢笑着穿梭其中,那鲜艳糖衣与红彤彤脸蛋相映,年味愈发浓郁,似要将寒冬暖化 。 结尾:置身这浓烈年味里,我沉醉不已。它是团圆温馨,是对过往的怀念、对未来的期许。当烟花在夜空绽放,那光亮如同希望之火。愿这份年味永不消散,伴我们走过岁岁年年,让温暖与幸福在生活中延续 。 满分作文题目: 《灯火映新岁,年味满人间》 《街头巷尾,年味悠长》 《大红灯笼,摇曳年味时光》 《墨香春联,晕染年味画卷》 《糖葫芦串起的年味》 开头:记忆深处,年味是外婆手中的剪纸。每至腊月,外婆便戴上老花镜,坐在暖阳下,手中红纸在剪刀下翻转,不一会儿,栩栩如生的花鸟鱼虫便跃然纸上。她脸上慈祥笑容,和着剪纸独特艺术魅力,成为我对年味最初印象。如今,外婆已年迈,可那份年味记忆,从未淡去 。 结尾:重拾外婆剪纸,往昔春节场景浮现

  • dbeaver离线安装版 (数据库管理工具dbeaver-ce-23离线驱动+安装包+使用说明) 内置sqlserver、mysql、oracle、opengauss数据库 可满足日常使用

    dbeaver离线安装版。(数据库管理工具dbeaver-ce-23离线驱动+安装包+使用说明) 内置sqlserver、mysql、oracle、opengauss数据库。可满足日常使用。

  • 基于LEBERT-CRF和知识图谱的中文地址修正补全方法.pdf

    基于LEBERT-CRF和知识图谱的中文地址修正补全方法.pdf

  • (最新!!)1997-2022年《中国教育经费统计年鉴》合集

    比较全面、系统地反映了历年全国教育经费来源和使用的情况,为国家和地方编制教育发展规划制定教育财政政策提供了重要的参考依据。它对于研究教育经费结构和使用效益有一定价值对于各地之间的情况交流,提高教育财务管理水平,也将会起到促进作用。 全国教育经费统计资料的各项数据是从最基层单位开始填报,经过乡(镇)、县(市、区)、地(市)、省(自治区、直辖市)等教育主管部门层层汇总的。

Global site tag (gtag.js) - Google Analytics