每次看到人类训练机器人,我都会很困惑一件事,那就是在如此残酷环境中培养出来的技能,到底能在现实世界中用上几回?
像是狠狠从背后踹它一脚,让它倒地后再爬起来;让两个机器人斗殴在地上疯狂摩擦;又或者是在十几米的高台不停地跳高高……有事吗???
这么对待重金打造的机器人,先不说画面“不忍直视”,修理损耗难道不要钱的吗?
后来我明白了,这跟目前的技术路径有关。深度学习就是要进行大量的实践和训练,才能不断优化算法,直至机器人能够应对真实世界中各种各样的状况。
理论上讲,只要时间足够长、预算无上限,猴子也能用电脑写出文学著作,更何况是算力逆天的机器。
但,这跟我们普通人又有什么关系呢?我们能否在有生之年用上(而且买得起)可靠解决问题的机器小助手呢?一万年太久,我们只争朝夕好吗?
最近,伯克利和谷歌大脑最新开发的强化学习算法——soft actor-critic(SAC),据说就现实世界的机器人学习,或许,有望改变一下训练机器人的古早思维。
今天我们就来聊聊,SAC会如何改变机器人的“成材之路”?
为什么想要一个rio的机器人,这么难?
在介绍SAC这个新算法之前,有必要先解释一下,是不是一定要有更好的机器人算法呢?或者说,这个算法到底能够改变什么?
这要从机器人在现实世界中遇到的挑战来解答。
首先,是目前的训练方式,决定了机器掌握新技能的速度还远远不够。
传统的机器学习算法,每次执行新任务时,都需要对原型设计进行参数调整,有的还需要重新收集数据进行训练,这就使得机器新技能所需的总时间迅速增加;
其次,现实场景中的无数意外,都有可能让机器出现故障。
真正在使用机器时,无论出现什么问题,比如断电或者网络延迟,机器都会以“死机”来应对危机。如果每次都要以“重启”来恢复作业,那应用机器人的价值何在?
以上都是效率问题,传统训练方式带来的成本困境,更是令研究人员愁到秃头。
无论是训练人员人为制造bug的暴力操作,还是执行器在种种复杂环境下的高频抖动,都会给硬件带来极大的磨损。这是机器人吗?这是钞票粉碎机啊!
当然,人类也不是没有想过办法。比如让机器人打游戏啦,设计仿真环境啦,这些努力都大大减少了对现实训练的依赖,但归根结底,都无法替代现实环境的多样性和随机性。最重要的,还是得打造一套专为现实世界机器人“量身定制”的算法。
真实世界的机器人,
到底需要怎样的算法?
那么,这样一套算法应该具备哪些属性呢?
至少需要有这样几个关键要素:
1.良好样本复杂性。提供给算法的训练样本数量越多,机器获得数据标签的时间成本也就越低,返回的误差也更小,在强化学习中的表现自然也就越出色;
2.没有敏感的超参数。为了提高机器学习的性能和效果,往往需要对超参数进行优化,但在现实环境中,自然是参数调整越少越好。算法就需要最大限度地减少调整超参数的需求;
3.异步采样。真实世界中,难免会出现数据流终端、推理延迟等问题,要让机器在“重启”阶段也能够保持一定的持续性和稳定性,就必须将数据的收集和训练在确保在最小化的多个独立线程中进行。
4.动作平滑。为了防止大幅度动作或震动损坏硬件,因此,时间上具有关联和连贯性的探索就变得尤为重要了。
简单总结一下,如果我们相信未来真实世界中的机器人不可或缺,那么,要求它用无限长的时间、无限多的投入、无数次的碰壁去掌握这样那样的本领,显然不太明智。
如何让它自己进行有取舍、有现实意义的训练呢?SAC应声出现。
SAC成功的秘诀,就是心大
说了这么多,正主终于出现了。那么。究竟什么是SAC?
SAC,全称是Soft actor-critic。从名字不难看出,SAC也是基于Actor-Critic算法的逻辑,即actor(玩家)随机表演,critic(评委)随机打分,互相制衡下追求更好的表现(reward)。
不同的是,SAC对参数的态度十分“温柔”,它会自动权衡预期收益(最大化回报)和探索深度(最大化的不确定性),然后自动学习不是将其视为需要调整的“超参数”,从而获得最优策略。
这样带来的好处是,训练样本多样,还不需要频繁调整参数,学习效率高了很多。即使遇到最差的实验环境,也表现良好。
这就像是以前机器需要在人类亲妈的“呵护”之下,点灯熬夜穷经皓首地做奥数题,以期成为“数学神童”。如今学会了劳逸结合奋发图强,拿下高考高分就一本满足了。显然,后者才是大多数普通机器的榜样和人类家长应该有的期待嘛。
具体表现如何,有请来自“伯克利小学”的三位机器人同学现身说法:
第一个向我们走来的是Minitaur,一个带有八个驱动执行器的小型四足机器人。在前进时,往往借助控制器追踪四肢的摆动部位,观察好各种角度以平衡腿上的力度。如果没有有效的训练策略,很容易失去平衡而摔倒,摔多了钢筋铁骨也会坏的啊。
不过,在掌握了新的学习方法之后,由于训练时将数据的不确定性最大化,Minitaur不需要任何额外的学习,就可以驾驭绝大对数平衡性的干扰。
第二位是非常灵活的“三指手”同学,它的任务是用手旋转“阀门”,使彩色挂钩朝右。但阀门上安装了一个小型电机,受力会自动复位。因此,每转一次,阀门的初始位置都会被随机重置,使得机器必须重新感知当前的阀门方向。这个任务需要感知预测,并精准地控制9个伺服电机关键来完成,非常具有挑战性,但我们的“三指手”依然顺利完成了任务。
最后一位机器人同学虽然在玩乐高,但并没有从中得到多少乐趣。因为训练者要求它在堆叠积木的时候准确地对准螺柱以减少摩擦。
除了需要确定关节的位置和速度之外,还需要保证末端的力度,并且将复杂命令同时传送给7个关节。这和要求人类小孩“百步穿杨”有差别吗?
不过,掌握了SAC大法的机器并没有让人失望,只用3个小时就学会了如何搞定这个任务。而以往使用的PPO策略用了7.4小时才搞定。SAC是不是很棒棒?
在论文中,研究人员给SAC用了一个高调的定语:“state-of-the-art”(最先进的),可以说是实至名归了。
当然了,上述还都只是些比较概念化的实验,真正要将这种能力扩展到更具挑战性的现实任务中,还需要大量的优化迭代、开发编码调参等工作,不过可以预测的是,由于SAC的出现,机器人正在无限近地接近概念到实用的临界点。
有了这个最佳引路人,机器人终于可以少受点“虐待”,真正渗透进生活的细节了。