• 深入理解强化学习——标准强化学习和深度强化学习


    分类目录:《深入理解强化学习》总目录


    强化学习的历史

    早期的强化学习,我们称其为标准强化学习。最近业界把强化学习与深度学习结合起来,就形成了深度强化学习(Deep ReinforcemetLearning)。因此,深度强化学习是深度学习和强化学习的组合。我们可将标准强化学习和深度强化学习类比于传统的计算机视觉和深度计算机视觉。

    如下图所示,传统的计算机视觉由两个过程组成:

    • 定一张图片,我们先要提取它的特征,使用一些设计好的特征,比如方向梯度直方图(Histogram of Oriental Gradient,HOG)、可变现的组件模型(Deformable Part Model,DPM)。
    • 提取这些特征后,我们再单独训练一个分类器。这个分类器可以是支持向量机(Support Vector Machine,SVM)或Boosting,然后就可以辨别这张图片是狗还是猫。

    传统的计算机视觉与深度计算机视觉的区别

    2012年,Krizhevsky等人提出了AlexNet。AlexNet在ImageNet分类比赛中取得冠军,迅速引起了人们对于卷积神经网络的广泛关注。 大家就把特征提取以及分类两者合到一块儿去了,就是训练一个神经网络。这个神经网络既可以做特征提取,也可以做分类,它可以实现端到端训练,如上图所示,它的参数可以在每一个阶段都得到极大的优化,这是一个非常重要的突破。

    我们也可以把神经网络放到强化学习里面:

    • 标准强化学习:比如TD-Gammon玩Backgammon游戏的过程,其实就是设计特征,然后训练价值函数的过程,如图下图所示。标准强化学习先设计很多特征,这些特征可以描述现在整个状态。 得到这些特征后,我们就可以通过训练一个分类网络或者分别训练一个价值估计函数来采取动作。
    • 深度强化学习:自从我们有了深度学习,有了神经网络,就可以把智能体玩游戏的过程改进成一个端到端训练(End-to-end Training)的过程,如下图所示。我们不需要设计特征,直接输入状态就可以输出动作。我们可以用一个神经网络来拟合价值函数或策略网络,省去特征工程(Feature Engineering)的过程。

    标准强化学习与深度强化学习的区别
    为什么强化学习在这几年有很多的应用,比如玩游戏以及机器人的一些应用,并且可以击败人类的顶 尖棋手呢?这有如下几点原因。首先,我们有了更多的算力(Computation Power),有了更多的GPU,可以更快地做更多的试错尝试。其次,通过不同尝试,智能体在环境里面获得了很多信息,然后可以在环境里面取得很大的奖励。最后,我们通过端到端训练把特征提取和价值估计或者决策一起优化,这样就可以得到一个更强的决策网络。

    接下来介绍一些强化学习里面比较有意思的例子,如下图所示:

    • 走路智能体:这个智能体往前走一步,就会得到一个奖励。这个智能体有不同的形态,可以学到很多有意思的功能。比如,像人一样的智能体学习怎么在曲折的道路上往前走。结果非常有意思,这个智能体会把手举得非常高,因为举手可以让它的身体保持平衡,它就可以更快地在环境里面往前走。而且我们也可以增加环境的难度,加入一些扰动,智能体就会变得更鲁棒。
    • 机械臂抓取:因为我们把强化学习应用到机械臂自动抓取需要大量的预演,所以我们可以使用多个机械臂进行训练。分布式系统可以让机械臂尝试抓取不同的物体,盘子里面物体的形状是不同的,这样就可以让机械臂学到一个统一的动作,然后针对不同的抓取物都可以使用最优的抓取算法。因为抓取的物体形状的差别很大,所以使用一些传统的抓取算法不能把所有物体都抓起来。传统的抓取算法对每一个物体都需要建模,这样是非常费时的。但通过强化学习,我们可以学到一个统一的抓取算法,其适用于不同的物体。
    • 机械臂翻魔方:OpenAI 在2018年的时候设计了一款带有“手指”的机械臂,它可以通过翻动手指使得手中的木块达到预期的设定。人的手指其实非常灵活,怎么使得机械臂的手指也具有这样灵活的能力一直是个问题。OpenAI先在一个虚拟环境里面使用强化学习对智能体进行训练,再把它应用到真实的机械臂上。这在强化学习里面是一种比较常用的做法,即我们先在虚拟环境里面得到一个很好的智能体,然后把它应用到真实的机器人中。这是因为真实的机械臂通常非常容易坏,而且非常贵,一般情况下没办法大批量地购买。OpenAI在2019年对其机械臂进行了进一步的改进,这个机械臂在改进后可以玩魔方了。
    • 穿衣服的智能体:很多时候我们要在电影或者一些动画中实现人穿衣服的场景,通过手写执行命令让机器人穿衣服非常困难,穿衣服也是一种非常精细的操作。我们可以训练强化学习智能体来实现穿衣 服功能。我们还可以在里面加入一些扰动,智能体可以抵抗扰动。可能会有失败的情况(failure case)出现,这样智能体就穿不进去衣服。
      强化学习例子

    参考文献:
    [1] 张伟楠, 沈键, 俞勇. 动手学强化学习[M]. 人民邮电出版社, 2022.
    [2] Richard S. Sutton, Andrew G. Barto. 强化学习(第2版)[M]. 电子工业出版社, 2019
    [3] Maxim Lapan. 深度强化学习实践(原书第2版)[M]. 北京华章图文信息有限公司, 2021
    [4] 王琦, 杨毅远, 江季. Easy RL:强化学习教程 [M]. 人民邮电出版社, 2022

  • 相关阅读:
    ReentarantLock源码浅析
    深度解析四大主流软件架构模型:单体架构、分布式应用、微服务与Serverless的优缺点及场景应用
    JS 方法实现复制粘贴
    【C++学习笔记】1.3 缺省参数
    python模块-导入模块、制作模块、包、导入包
    BIM知识 | BIM管线综合原则
    安装Milvus的可视化工具Attu教程
    fwknop服务端调试
    MAC和PHY的关系
    vue2--1. 内容渲染指令 2. 属性绑定指令 3. 事件绑定 4. v-model 指令 5. 条件渲染指令
  • 原文地址:https://blog.csdn.net/hy592070616/article/details/133797048