随着AlphaGo和AlphaZero的出现,强化学习相关算法在这几年引起了学术界和工业界的重视。最近也翻了很多强化学习的资料,有时间了还是得自己动脑筋整理一下。

强化学习定义

先借用维基百科上对强化学习的标准定义:

强化学习(Reinforcement Learning,简称RL)是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益。

从本质上看,强化学习是一个通用的问题解决框架,其核心思想是 Trial & Error

强化学习可以用一个闭环示意图来表示:

强化学习四元素

  • 策略(Policy):环境的感知状态到行动的映射方式。
  • 反馈(Reward):环境对智能体行动的反馈。
  • 价值函数(Value Function):评估状态的价值函数,状态的价值即从当前状态开始,期望在未来获得的奖赏。
  • 环境模型(Model):模拟环境的行为。

强化学习的特点

  • 起源于动物学习心理学的试错法(trial-and-error),因此符合行为心理学。
  • 寻求探索(exploration)和采用(exploitation)之间的权衡:强化学习一面要采用(exploitation)已经发现的有效行动,另一方面也要探索(exploration)那些没有被认可的行动,已找到更好的解决方案。
  • 考虑整个问题而不是子问题。
  • 通用AI解决方案。

强化学习 vs. 机器学习

机器学习是人工智能的一个分支,在近30多年已发展为一门多领域交叉学科,而强化学习是机器学习的一个子领域。强化学习与机器学习之间的关系可以通过下图来形式化的描述:

注:上图中Machine Learning分支应该包含进化算法(Evolutionary Algorithms)。

强化学习与其他机器学习的不同:

  • 强化学习更加专注于在线规划,需要在探索(explore 未知领域)和采用(exploit 现有知识)之间找到平衡。
  • 强化学习不需要监督者,只需要获取环境的反馈。
  • 反馈是延迟的,不是立即生成的。
  • 时间在强化学习中很重要,其数据为序列数据,并不满足独立同分布假设(i.i.d)。

强化学习 vs. 监督学习

强化学习与监督学习可以参考下图:

两者的目标都是学习一个model,而区别在于:

监督学习:

  • Open loop
  • Learning from labeled data
  • Passive data

强化学习:

  • Closed loop
  • Learning from decayed reward
  • Explore environment

强化学习 vs. 进化算法

进化算法(Evolutionary Algorithms,简称EA)是通过生物进化优胜略汰,适者生存的启发而发展的一类算法,通过种群不断地迭代达到优化的目标。进化算法属于仿生类算法的一种,仿生类算法还包括粒子群算法(PSO)、人工免疫算法以及如日中天的神经网络算法等。

进化算法最大的优点在于整个优化过程是gradients-free的,其思想可以通过下图表示:

RL和EA虽然都属于优化问题的求解框架,而且两者都需要大量的算力,但是两者有着本质上的区别。

Sutton在其强化学习介绍一书中也重点谈到了RL与EA的区别,这里简单谈几点:

  • RL通过与环境交互来进行学习,而EA通过种群迭代来进行学习;
  • RL通过最大化累计回报来解决序列问题,而EAs通过最大化适应函数(Fitness Function)来寻求单步最优;
  • RL对于state过于依赖,而EA在agent不能准确感知环境的状态类问题上也能适用。

近期随着RL的研究热潮不断推进,很多研究也尝试通过将EA和RL结合解决优化问题,比如OpenAI通过使用进化策略来优化RL,获得了突破性的进展[3]。

强化学习分类

强化学习分类比较多样:

  • 按照环境是否已知可以分为Model-based & Model-free;
  • 按照学习方式可以分为On-Policy & Off-Policy;
  • 按照学习目标可以分为Value-based & Policy-based。

下图为根据环境是否已知进行细分的示意图:

强化学习相关推荐资料

  • Reinforcement Learning: An Introduction, Richard S. Sutton and Andrew G. Barto:介绍强化学习很全面的一本书籍,相关的电子书及源码见这里
  • David Silver在UCL的强化学习视频教程:介绍强化学习的视频教程,基本与Sutton的书籍可以配套学习,Silver来自于Google Deepmind,视频和课件可以从Silver的主页获取,中文字幕版视频YouTube链接点这里
  • 强化学习在阿里的技术演进与业务创新:介绍强化学习在阿里巴巴的落地,可以拓展强化学习应用的业务思路,电子版见这里,密码:yh48。
  • Tutorial: Deep Reinforcement Learning:同样来自于Sliver的一个课件,主要针对RL与DL的结合进行介绍,电子版见这里,密码:9mrp。
  • 莫烦PYTHON强化学习视频教程:可以通过简短的视频概括地了解强化学习相关内容,适合于入门的同学,视频见这里
  • OpenAI Gym:Gym is a toolkit for developing and comparing reinforcement learning algorithms,Gym包含了很多的控制游戏(比如过山车、二级立杆、Atari游戏等),并提供了非常好的接口可以学习,链接见这里
  • Lil'Log:介绍DL和RL的一个优质博客,RL相关包括RL介绍、Policy Gradients算法介绍及Deep RL结合Tensorflow和Gym的源码实现,主页链接见这里

Reference

[1] 维基百科-强化学习
[2] Reinforcement Learning: An Introduction, Richard S. Sutton and Andrew G. Barto, 2018
[3] Evolution Strategies as a Scalable Alternative to Reinforcement Learning

[Reinforcement Learning] 强化学习介绍的更多相关文章

  1. Reinforcement Learning 强化学习入门

    https://www.zhihu.com/question/277325426 https://github.com/jinglescode/reinforcement-learning-tic-t ...

  2. The categories of Reinforcement Learning 强化学习分类

    RL分为三大类: (1)通过行为的价值来选取特定行为的方法,具体 包括使用表格学习的 q learning, sarsa, 使用神经网络学习的 deep q network: (2)直接输出行为的 p ...

  3. DQN(Deep Q-learning)入门教程(一)之强化学习介绍

    什么是强化学习? 强化学习(Reinforcement learning,简称RL)是和监督学习,非监督学习并列的第三种机器学习方法,如下图示: 首先让我们举一个小时候的例子: 你现在在家,有两个动作 ...

  4. 深度强化学习介绍 【PPT】 Human-level control through deep reinforcement learning (DQN)

    这个是平时在实验室讲reinforcement learning 的时候用到PPT, 交期末作业.汇报都是一直用的这个,觉得比较不错,保存一下,也为分享,最早该PPT源于师弟汇报所做.

  5. <Machine Learning - 李宏毅> 学习笔记

    <Machine Learning - 李宏毅> 学习笔记 b站视频地址:李宏毅2019国语 第一章 机器学习介绍 Hand crafted rules Machine learning ...

  6. 【强化学习】MOVE37-Introduction(导论)/马尔科夫链/马尔科夫决策过程

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

  7. 【Machine Learning】监督学习、非监督学习及强化学习对比

    Supervised Learning Unsupervised Learning Reinforced Learning Goal: How to apply these methods How t ...

  8. 机器学习(Machine Learning)&深度学习(Deep Learning)资料【转】

    转自:机器学习(Machine Learning)&深度学习(Deep Learning)资料 <Brief History of Machine Learning> 介绍:这是一 ...

  9. 基于Keras的OpenAI-gym强化学习的车杆/FlappyBird游戏

    强化学习 课程:Q-Learning强化学习(李宏毅).深度强化学习 强化学习是一种允许你创造能从环境中交互学习的AI Agent的机器学习算法,其通过试错来学习.如上图所示,大脑代表AI Agent ...

随机推荐

  1. SQLServer之删除用户定义的数据库角色

    删除用户定义的数据库角色注意事项 无法从数据库删除拥有安全对象的角色. 若要删除拥有安全对象的数据库角色,必须首先转移这些安全对象的所有权,或从数据库删除它们. 无法从数据库删除拥有成员的角色. 若要 ...

  2. 桌面远程连接阿里云服务器(windows)后丧失了双向文件复制粘贴功能的解决方案(第一条博客!)

    近日应公司要求,需在windows服务器上架设一个交易中介软件. 过程之一:将软件压缩文件传到服务器上. 问题:在“运行”对话框通过输入'mstsc' 创建远程连接以后,出现本地桌面与服务器之间无法物 ...

  3. composer包(发布到github上)同步到Packagist

    在上一篇文章里面,探讨了如何一步步建立composer包–创建你的一个composer包 创建完成后,我们需要做的就是讲自建的包发布到Packagist上.至于说什么是Packagist,这个就不用我 ...

  4. Runnable和Callable之间的区别

    Runnable和Callable之间的区别 1.Runnable任务执行后没有返回值:Callable任务执行后可以获得返回值 2.Runnable的方法是run(),没有返回值:Callable的 ...

  5. As-If-Serial 理解

    as-if-serial语义的意思指: 不管怎么重排序(编译器和处理器为了提高并行度),(单线程)程序的执行结果不能被改变.编译器,runtime 和处理器都必须遵守as-if-serial语义.为了 ...

  6. python学习——读取染色体长度(三、用循环或者函数求总长并获取最长染色体长度)

    # 读取fasta # 解析每条序列的长度 chr_len = [10,20,30,40,50] # 求和 # 方法一:通过循环 total_len = 0 #定义total_len的初始长度 for ...

  7. 转://MySQL客户端工具的选择

    先说我的选择:SQLyog. 尝试的客户端:Toad for MySQL.MySQL-Front.Navicat for MySQL.SQLyog. 官方下载链接: Toad for MySQL:ht ...

  8. [LeetCode] 21. 合并两个有序链表

    题目链接:https://leetcode-cn.com/problems/merge-two-sorted-lists/ 题目描述: 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定 ...

  9. JDK8中HashMap

    引用别人的一句话: JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里.但是当位于一个桶中的元素较多,即hash值相等的元素较多 ...

  10. ecshop 商品属性显示方法

    功能:在商品列表上,点击放大镜,显示商品所有属性以及其价格,效果如下: 方法/步骤: 1.编辑\admin\templates\goods_list.htm 模板,在 <!-- 商品搜索 --& ...