在使用深度强化学习(Deep Reinforcement Learning,DRL)算法解决实际问题的过程中,明确任务需求并初步完成问题定义后,就可以为相关任务选择合适的DRL算法了。

以DeepMind的里程碑工作AlphaGo为起点,每年各大顶级会议DRL方向的论文层出不穷,新的DRL算法如雨后春笋般不断涌现,大有“乱花渐欲迷人眼”之势。

然而,落地工作中的算法选择并不等同于在这个急剧膨胀的“工具箱”中做大海捞针式的一对一匹配,而是需要根据任务自身的特点从DRL算法本源出发进行由浅入深、粗中有细的筛选和迭代。

在介绍具体方法之前,笔者先尝试按照自己的理解梳理近年来DRL领域的发展脉络。

1

DRL算法的发展脉络
尽管DRL算法已经取得了长足进步,但笔者认为其尚未在理论层面取得质的突破,而只是在传统强化学习理论基础上引入深度神经网络,并做了一系列适配和增量式改进工作。

总体上,DRL沿着Model-Based和Model-Free两大分支发展。

前者利用已知环境模型或者对未知环境模型进行显式建模,并与前向搜索(Look Ahead Search)和轨迹优化(Trajectory Optimization)等规划算法结合达到提升数据效率的目的。

作为当前学术界的研究热点,Model-Based DRL尚未在实践中得到广泛应用,这是由于现实任务的环境模型通常十分复杂,导致模型学习的难度很高,并且建模误差也会对策略造成负面影响。

在笔者看来,任何Model-Free DRL算法都可以解构为“基本原理—探索方式—样本管理—梯度计算”的四元核心组件。

其中按照基本原理,Model-Free DRL又存在两种不同的划分体系,即Value-Based和Policy-Based,以及Off-Policy和On-Policy。

如图1所示,DQN、DDPG和A3C作为这两种彼此交织的划分体系下的经典算法框架,构成了DRL研究中的重要节点,后续提出的大部分新算法基本都是立足于这三种框架,针对其核心组件所进行的迭代优化或者拆分重组。

图1 Model-Free DRL的发展脉络和四元核心组件解构方法

图1中几个关键术语的解释是:

Off-Policy指算法中采样策略与待优化策略不同;

On-Policy指采样策略与待优化策略相同或差异很小;

Value-Based指算法直接学习状态-动作组合的值估计,没有独立策略;

Policy-Based指算法具有独立策略,同时具备独立策略和值估计函数的算法又被称为Actor-Critic算法。

关于上述Model-Free DRL算法的四元核心组件,其中:

基本原理层面依然进展缓慢,但却是DRL算法将来大规模推广的关键所在;

探索方式的改进使DRL算法更充分地探索环境,以及更好地平衡探索和利用,从而有机会学到更好的策略;

样本管理的改进有助于提升DRL算法的样本效率,从而加快收敛速度,提高算法实用性;

梯度计算的改进致力于使每一次梯度更新都更稳定、无偏和高效。

总体而言,DRL算法正朝着通用化和高效化的方向发展,期待未来会出现某种“超级算法”,能够广泛适用于各种类型的任务,并在绝大多数任务中具有压倒式的性能优势,同时具备优秀的样本效率,从而使算法选择不再是问题。

2

一筛、二比、三改良
从一个较粗的尺度上看,依据问题定义、动作空间类型、采样成本和可用运算资源等因素的不同,的确存在一些关于不同类型DRL算法适用性方面的明确结论。
例如,Value-Based算法DQN及其变体一般只适用于离散动作空间;相反,采用确定性策略的Policy-Based算法DDPG及其变体只适合连续动作空间;而A3C和SAC等采用随机策略的Policy-Based算法则支持离散和连续两种动作空间;此外,随机策略通常比确定性策略具有更好的训练稳定性(如图2所示)。

图2 随机策略相比确定性策略的稳定性优势

在MuJoCo-Humanoid控制任务中,分别采用随机策略和确定性策略的两种SAC算法变体在不同随机种子下多次训练的曲线显示,随机策略比确定性策略对随机因素的影响更加鲁棒,因此具有更好的训练稳定性。

对于机器人等涉及硬件的应用,或者其他采样成本较高的任务,能够重复利用历史数据的Off-Policy算法相比On-Policy算法更有优势。

在多智能体强化学习任务中,多个交互的Agent互相构成对方环境的一部分,并随着各自策略的迭代导致这些环境模型发生变化,从而导致基于这些模型构建的知识和技能失效,学术界将上述现象称为环境不稳定性(Environment Nonstationarity)。

由于该问题的存在,除非Replay Buffer(经验回放缓存)中的数据更新足够快,否则重复使用历史数据的Off-Policy算法反而可能引入偏差。

由于利用贝尔曼公式Bootstrap特性的值迭代方法是有偏的(Biased),On-Policy算法在训练稳定性方面一般好于Off-Policy算法。

然而,为了尽可能获取关于值函数的无偏估计,On-Policy算法往往需要利用多个环境并行采集足够多的样本,这就要求训练平台具有较多的CPU核,而Off-Policy算法则没有这种要求,尽管后者也能够从并行采样中受益。

表1总结了Model-Free DRL算法适用性的一般性结论。

表1 Model-Free DRL算法适用性的一般性结论

在完成“粗筛”之后,对于符合条件的不同DRL算法之间的取舍变得微妙起来。

一般而言,学术界提出的新算法,尤其是所谓SOTA(State of the Art,当前最佳)算法,性能通常优于旧算法。

但这种优劣关系在具体任务上并不绝对,目前尚不存在“赢者通吃”的DRL算法,因此需要根据实际表现从若干备选算法中找出性能最好的那个。

此外,只有部分经过精细定义的实际任务可以通过直接应用标准算法得到较好解决,而许多任务由于自身的复杂性和特殊性,需要针对标准算法的核心组件进行不同程度的优化后才能得到较为理想的结果,这一点可以在许多有代表性的DRL算法落地工作中找到踪迹。

注意这里所说的优化未必是学术级创新,更多时候是基于对当前性能瓶颈成因的深入分析,在学术界现有的组件改良措施和思想中“对症”选择,是完全有迹可循的。

例如,为了改善DQN的探索,可以用噪声网络(Noisy Net)代替默认的图片-greedy;为了提升其样本效率,可以将常规经验回放改为优先级经验回放(Prioritized Experience Replay,PER);为了提高其训练稳定性,可以在计算目标值时由单步Bootstrap改为多步Bootstrap等。

在《深度强化学习落地指南》一书的5.2节和5.3节中介绍具体的DRL算法时,会专门列出针对相关算法的可用组件优化措施供读者参考。

3

从独当一面到众星捧月
需要强调的是,算法在学术研究和落地应用中与诸如动作空间、状态空间、回报函数等强化学习核心要素的关系是不同的。

具体可以概括为:学术研究为了突出算法的优势,其他要素只需要保持一致甚至被刻意弱化;落地应用为了充分发挥算法的性能,其他要素应该主动迎合算法需求以降低其学习难度。

可以说一边是独当一面,另一边是众星捧月,这种角色上的差异是由学术研究和落地应用各自不同的出发点决定的。

学术研究的目标是在普遍意义上解决或改善DRL算法存在的固有缺陷,如低样本效率、对超参数敏感等问题,因此算法自身特质的优劣处于核心地位。

为了保证不同算法之间进行公平的比较,OpenAI Gym、Rllab等开放平台为各种任务预设了固定的状态空间、动作空间和回报函数,研究者通常只需要专心改进算法,而很少需要主动修改这些要素,即使修改也往往是为了刻意提升任务难度,从而突出算法在某些方面的优点,比如将回报函数变得更稀疏,简化状态空间设计使其只包含低效的原始信息等。

与学术研究不同,落地应用的目标是在特定任务上获得最佳策略性能,而算法仅仅是实现该目标的众多环节之一。

一方面,在学术研究中依靠算法改进做到的事情,在实际应用中可以通过状态空间、动作空间和回报函数的协同优化达到相同甚至更好的效果。

另一方面,在学术研究中被认为应当尽量避免的超参数精细调节和各种难以标准化、透明化的训练技巧,在落地应用中成为必要工作。

总之,落地应用中的策略性能优化是一项系统工程,需要“不择手段”地充分调动包括算法在内的各种有利因素。

本文摘自《深度强化学习落地指南》一书,欢迎阅读此书了解更多关于深度强化学习落地的内容。

▊《深度强化学习落地指南》

魏宁 著

一本讨论强化学习落地应用的技术书

本书从工业界一线算法工作者的视角,对深度强化学习落地实践中的工程经验和相关方法论做出了深度思考和系统归纳。

本书跳出了原理介绍加应用案例的传统叙述模式,转而在横向上对深度强化学习落地过程中的核心环节进行了完整复盘。主要内容包括需求分析和算法选择的方法,动作空间、状态空间和回报函数设计的理念,训练调试和性能冲刺的技巧等。

本书既是前人智慧与作者个人经验的交叉印证和精心整合,又构成了从理论到实践再到统一方法论的认知闭环,与市面上侧重于算法原理和代码实现的强化学习书籍形成了完美互补。。

(京东满100减50,快快扫码抢购吧!)

如何在AI工程实践中选择合适的算法?相关推荐

  1. 深度强化学习:如何在AI工程实践中选择合适的算法?

    关注公众号,发现CV技术之美 在使用深度强化学习(Deep Reinforcement Learning,DRL)算法解决实际问题的过程中,明确任务需求并初步完成问题定义后,就可以为相关任务选择合适的 ...

  2. 如何为你的机器学习问题选择合适的算法?

    机器学习算法选择速查 机器学习算法选择速查表介绍 机器学习算法速查使用指南 随着机器学习越来越流行,也出现了越来越多能很好地处理任务的算法.但是,你不可能预先知道哪个算法对你的问题是最优的.如果你有足 ...

  3. 在Pycharm中选择合适的运行环境

    在Pycharm中选择合适的运行环境 问题描述: 在运行程序的过程中,我们总会出现明明自己已经下载了库文件,但是在调用的时候仍然会报 No module 之类的错误,往往这类错误的原因都是因为我们没有 ...

  4. 没有shell63号单元_在ANSYS中选择合适的单元类型

    原标题:在ANSYS中选择合适的单元类型 通常被 ANSYS 所提供的众多纷繁复杂的单元类型弄花了眼,如何选择正确的单元类型,也是很头疼的问题. 单元类型的选择,跟你要解决的问题本身密切相关.在选择单 ...

  5. 一致性协议raft详解(四):raft在工程实践中的优化

    一致性协议raft详解(四):raft在工程实践中的优化 前言 性能优化 client对raft集群的读写 参考链接 前言 有关一致性协议的资料网上有很多,当然错误也有很多.笔者在学习的过程中走了不少 ...

  6. 关于概率分布理论的原理分析的一些讨论,以及经典概率分布的应用场景,以及概率统计其在工程实践中的应用...

    1. 随机变量定义 0x1:为什么要引入随机变量这个数学概念 在早期的古典概率理论研究中,人们基于随机试验的样本空间去研究随机事件,也发展出了非常多辉煌的理论,包括著名的贝叶斯估计在内. 但是随着研究 ...

  7. 微型计算机在工程实践中作用,交通仿真技术在交通工程实践教学中的应用

    交通仿真技术在交通工程实践教学中的应用 [摘要]本文简要叙述了交通仿真技术的优缺点,并对交通仿真技术在交通工程实践教学中的作用进行了描述.同时,以课程设计中VISSIM的应用为例,阐述了交通仿真技术在 ...

  8. 图像处理 花屏_滴滴开源的 AoE:工程实践中的图像处理

    近期,滴滴开源了AOE项目,很多人还是一脸懵逼,不太清楚AOE 到底是干什么的,所以今天我们再来听听官方工程师是怎么介绍的吧,不信你还是听不懂:近期我们开发了一个银行卡 OCR 项目.需求是用手机对着 ...

  9. 工程中选择数据结构和算法的依据

    1. 时间.空间复杂度不能和性能划等号 时间.空间复杂度不是时间执行和内存消耗的精确值.它们只是表示了随着数据量的增长,时间.空间的增长趋势. 代码的执行时间有时不跟时间复杂度成正比.我们常说算法是O ...

  10. 微型计算机在工程实践中作用,【电子技术论文】思维教学中数字电子技术的应用(共2702字)...

    [摘要]作为电子技术学习中一门重要的专业基础课,<数字电子技术基础>起着举足轻重的作用,有着较强的理论特点和工程实践性.针对本门课在教学过程中存在的困难,结合一线教学经验,对教学方法进行创 ...

最新文章

  1. 模糊综合评价法用什么软件实现_基于建管养一体化模式的钢桥面铺装方案综合评价分析...
  2. 那个全网下班最早的程序员,我发现了他的秘密……
  3. oracle之控制文件恢复
  4. 巴克码相关器的verilog HDL设计
  5. css笔记 - transform学习笔记(二)
  6. RedHat7.0更新yum源(踩过的坑)
  7. 事业单位职称工资计算机,终于!事业单位绩效工资、职称变了!关系上千万人收入!...
  8. Spring Security原理与应用
  9. [react] 在react中无状态组件有什么运用场景
  10. 2749元!华为nova 5开启预售:7nm工艺麒麟810处理器加持
  11. poj 2240 Bellman-Flod 求环
  12. 【实习之T100开发】T100程序功能代码积累
  13. Linux debian live USB,用 Live Magic 制作 Debian Live 光盘
  14. WordPress快速开发的博客平台
  15. C#实现Zip文件解压
  16. cordova打包APP更改图标和APP名字
  17. 如何阅读看懂datasheet
  18. 基于python代码的3D地图可视化
  19. 华为路由器路由表解析
  20. MySQL 创建数据库 创建表

热门文章

  1. http/tcp/ip/端口
  2. c#通过RFC调用SAP接口程序之输入输出参数案例
  3. Ubuntu18.04 下搭建Hyperledger Fabric 1.0.0环境
  4. oracle 数据库汉字乱码
  5. orangepi获取cpu温度
  6. php gd实现简单图片验证码与图片背景文字水印
  7. svg绘图工具raphael.js的使用
  8. [福大软工] Z班 软件工程实践总结 作业成绩
  9. [翻译svg教程]Path元素 svg中最神奇的元素!
  10. 获取批量导入数据后,所产生所有自增ID的值