【51CTO.com快译】强化学习非常适合实现自主决策,相比之下监督学习与无监督学习技术则无法独立完成此项工作。强化学习在人工智能领域长久以来一直扮演着小众性角色。然而,过去几年以来,强化学习正越来越多地在各类AI项目当中发挥令人瞩目的作用。其最突出的应用平台正是在计算代理的环境背景性决策场景当中,负责判断最佳行动。
凭借着试错法来最大程度提升算法报酬函数,强化学习得以在IT运营管理、能源、医疗卫生、同类型、金融、交通以及贸易等领域构建起大量自适应性控制与多代理自动化应用。其可负责对传统重点领域(机器人、游戏以及模拟)的AI方案进行训练,并有能力在边缘分析、自然语言处理、机器翻译、计算机视觉以及数字化助手方面带来新一代AI解决方案。
强化学习亦成为物联网自主边缘应用发展的前提性基础。在工业、交通运输、医疗卫生以及消费者应用等方面,大部分边缘应用的开发工作皆需要构建AI驱动型机器人,从而在动态环境之下根据不同情境信息以自主方式完成操作。
强化学习的工作原理
在这样的应用领域当中,边缘装置当中的AI大脑必须依赖于强化学习技术; 更具体地讲,其必须有能力在缺少预置“基于真实”的训练数据集的前提下,最大程度积累报酬函数——例如根据规范当中包含的一组标准找到问题解决方法。这种作法与其它类型的人工智能学习方式——例如监督学习(立足真实数据最大程度降低算法丢失函数)以及无监督学习(立足各数据点最大程度降低距离函数)——正好相反。
然而,AI学习方法之间并不一定必须彼此孤立。AI发展趋势当中最值得关注的一点在于,强化学习正在各类更为先进的应用当中与监督及无监督学习相融合。AI开发者们努力将这些方法整合至应用程序当中,旨在使其实现单一学习方法也不足以达到的新高度。
举例来说,在不具备标记训练数据的情况下,监督学习本身无法起效——这一点在自动驾驶应用当中体现得尤为显著。由于每个瞬时环境情况基本上独立存在且未经预先标记,学习方法必须自行找到解决办法。同样的,无监督学习(利用聚类分析来检测传感器源以及其它复杂未标记数据中的模式)也无法在现实世界当中的决策场景内,准确识别智能端点并采取最佳操作。
深度强化学习是什么
接下来是深度强化学习,这种领先技术当中的自主代理利用强化学习的试错算法与累加报酬函数以加速神经网络设计。这些设计能够极大支持各类依赖于监督与/或无监督学习的AI应用程序。
深度强化学习已经成为AI开发以及训练管道当中的核心关注区域。其利用强化学习驱动代理以快速探索各类架构、节点类型、连接、超参数设置以及深度学习、机器学习乃至其它AI模型,并对这些供设计人员使用的选项进行相关效能权衡。
举例来说,研究人员可利用深度强化学习从无数深度学习卷积神经网络(简称CNN)架构当中快速确定最适合当前特征工程、计算机视觉以及图像分类任务的选项。由深度强化学习提供的结果可供AI工具用于自动生成最优CNN,并配合TensorFlow、MXNet或者PyTorch等深度学习开发工具完成具体任务。
在这方面,强化学习开发与训练开放框架的持续涌现无疑令人振奋。若您希望深入了解强化学习,那么以下强化学习框架无疑值得关注——通过运用这些框架并对其加以扩展,您将能够将其与TensorFlow以及其它得到广泛应用的深度学习与机器学习建模工具进行对接:
强化学习框架
具体作用以及获取方式
TensorFlow Agents:TensorFlow Agents 提供多种工具,可通过强化学习实现各类智能应用程序的构建与训练。作为TensorFlow项目的扩展方案,这套框架能够将OpoenAI Gym接口扩展至多个并行环境,并允许各代理立足TensorFlow之内实现以执行批量计算。其面向OpoenAI Gy环境的批量化接口可与TensorFlow实现全面集成,从而高效执行各类算法。该框架还结合有BatchPPO,一套经过优化的近端策略优化算法实现方案。其核心组件包括一个环境打包器,用于在外部过程中构建OpenAI Gym环境; 一套批量集成,用于实现TensorFlow图步并以强化学习运算的方式重置函数; 外加用于将TensorFlow图形批处理流程与强化学习算法纳入训练特内单一却步的组件。
Ray RLLib:RLLib 提供一套基于任务的灵活编程模式,可用于构建基于代理且面向多种应用场景的强化学习应用程序。RLLib由伯克利大学开发,目前已经迎来版本2,其立足Ray实现运行。Ray是一套灵活且高性能的分布式执行框架。值得一提的是,RLLib开发者团队中的一位成员曾经担任Apache Spark的主要缔造者职务。
RLLib 可立足TensorFlow与PyTorch框架之内起效,能够实现不同算法间的模型共享,并可与Ray Tune超参数调整工具进行集成。该框架结合有一套可组合且可扩展的标准强化学习组件库。各个RLLib组件能够在分布式应用程序当中实现并行化、扩展、组合与复用。
RLLib当中包含三种强化学习算法——近端策略优化(简称PPO)、异步优势Actor-Critic(简称A3C)以及Deep Q Networks(简称DQN),三者皆可运行在任意OpenAI Gym Markov决策流程当中。其还为各类新算法的开发工作提供可扩展原语,用于将RLLib应用于新问题的Python API、一套代理超参数设置库以及多种可插拔分布式强化学习执行策略。其亦支持由用户创建自定义强化学习算法。
Roboschool:Roboschool 提供开源软件以通过强化学习构建并训练机器人模拟。其有助于在同一环境当中对多个代理进行强化学习训练。通过多方训练机制,您可以训练同一代理分别作为两方玩家(因此能够自我对抗)、使用相同算法训练两套代理,或者设置两种算法进行彼此对抗。
Roboschool由OpenAI开发完成,这一非营利性组织的背后赞助者包括Elon Musk、Sam Altman、Reid Hoffman以及Peter Thiel。其与OpenAI Gym相集成,后者是一套用于开发及评估强化学习算法的开源工具集。OpenAI Gym与TensorFlow、Theano以及其它多种深度学习库相兼容。OpenAI Gym当中包含用于数值计算、游戏以及物理引擎的相关代码。
Roboschool基于Bullet物理引擎,这是一套开源许可物理库,并被其它多种仿真软件——例如Gazebo与Virtual Robot Experimentation Platform(简称V-REP)所广泛使用。其中包含多种强化学习算法,具体以怨报德 异步深度强化学习方法、Actor-Critic with Experience Replay、Actor- Critic using Kronecker-Factored Trust Region、深度确定性策略梯度、近端策略优化以及信任域策略优化等等。
Machine Learning Agents:尽管尚处于beta测试阶段,但Unity Technology的Machine Learning Agents已经能够面向游戏、模拟、自动驾驶车辆以及机器人实现智能代理的开发与强化学习训练。ML-Agents支持多种强化学习训练场景,具体涉及各类代理、大脑以及报酬机制的配置与彼此交互。该框架的SDK支持单代理与多代理场景,亦支持离散与连续操作空间。其提供Python API以访问强化学习、神经进化以及其它机器学习方法。
ML-Agents学习环境包括大量通过与自动化组件(即‘大脑’)交互以实现执行的代理。各个代理皆能够拥有自己的一套独特状态与观察集,在环境当中执行特定操作,并在环境之内接收与事件相关的独特报酬。代理的操作由与之对接的大脑决定。每个大脑负责定义一项特定状态与操作空间,并决定与之相连的各代理应采取哪项操作。
除此之外,每个ML-Agents环境还包含一个独立“学院”,用于定义环境范围——具体包括引擎配置(训练与推理模式下游戏引擎的速度与渲染质量)、帧数(每个代理作出新决策的间隔当中跳过多少引擎步骤)以及全局事件长度(即事件将持续多长时间)。
在大脑能够设定的各类模式当中,外部模式最值得一提——其中的操作决策利用TensorFlow或者其它选定的机器学习库制定,且通过开放套接配合ML-Agents的Python API实现通信。同样的,内部模式中的代理操作决策则利用一套通过嵌入TensorFlowSharp代理接入项目的预训练模型负责制定。
Coach:英特尔公司的Nervana Coach是一套开源强化学习框架,负责对游戏、机器人以及其它基于代理的智能应用进行智能代理的建模、训练与评估。
Coach 提供一套模块化沙箱、可复用组件以及用于组合新强化学习算法并在多种应用领域内训练新智能应用的Python API。该框架利用OpenAI Gym作为主工具,负责与不同强化学习环境进行交换。其还支持其它外部扩展,具体包括Roboschool、gym-extensions、PyBullet以及ViZDoom。Coach的环境打包器允许用户向其中添加自定义强化学习环境,从而解决其它学习问题。
该框架能够在桌面计算机上高效训练强化学习代理,并利用多核CPU处理相关任务。其能够为一部分强化学习算法提供单线程与多线程实现能力,包括异步优势Actor-Critic、深度确定性策略梯度、近端策略优化、直接未来预测以及规范化优势函数。所有算法皆利用面向英特尔系统作出优化的TensorFLow完成,其中部分算法亦适用于英特尔的Neon深度学习框架。
Coach 当中包含多种强化学习代理实现方案,具体包括从单线程实现到多线程实现的转换。其能够开发出支持单与多工作程序(同步或异步)强化学习实现方法的新代理。此外,其还支持连续与离散操作空间,以及视觉观察空间或仅包含原始测量指标的观察空间。
AI开发者需要掌握的强化学习技能
展望未来,AI开发者们需要尽可能掌握上述框架以及其中所使用的各类强化学习算法。此外,您还需要强化自身对于多代理强化学习架构的理解,因为其中多种框架都大量利用前沿博弈论研究成果。最后,您还需要熟悉深度强化学习知识,并借此发现计算机视觉应用程序当中所出现的“模糊(fuzzing)”攻击及相关安全漏洞。
更多AI内容,请关注公众号:AI推手
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】