分享

【RL大家说】强化学习如何使用在实际环境中?(第220725期)

 520jefferson 2022-07-25 发布于北京

 

题主问的这个问题在强化学习领域是被很多人研究的一个热点也是难点问题:Reality Gap

目前解决强化学习Reality Gap的方式主要有三种:

1)构建与现实世界更加逼真的仿真环境;比如李飞飞组17年的工作里[1],利用A3C算法训练居家机器人,让其能够根据人的指示,自动完整寻找例如:冰箱中的黄瓜的自动导航任务。这个环境是李飞飞高徒朱玉可博士搭建的,里面还包含了物理引擎,效果如下图所示:

如果不跟你说这是仿真环境,可能大多数人不仔细看还以为是真实物理世界。

类似的开源环境和paper已经数不胜数了,随便举个开源环境的栗子:微软公司开发的AirSim,专注于空中无人机的强化学习仿真环境(无人驾驶也有发布的project),其物理引擎利用了虚幻引擎渲染,模拟程度简直达到了虚实结合,人畜不分,效果图如下:

甚至连树木光影纹理都清晰可见(答主第一次上手的时候,拿着手柄玩了好几天)。2019NIPS强化学习比赛中就是指定Airsim为所有算法的测试环境。

相关的paper例如:sim-to-real[2],给出了一个机械臂的从模拟到现实的环境解决方案。

Reality Gap在RL领域已经是非常成熟的一个topic了,许多solid的工作都给出了如何从仿真到真实的解决方案。这类方法都在致力于通过提高交互数据与真实物理世界交互数据的相似性,减小从仿真迁移到真实中的差异。而仿真环境中的sample是很廉价的,足以训练许多复杂的model。

2)迁移学习;

这类方法相比第一类,在构建与真实物理环境很接近的仿真环境下,训练成熟一个model,并保存参数;然后model部署后,在现实世界中通过与物理环境交互的真实数据,在原来model的基础上继续训练优化,大大减小了在真实环境中trained from scratch的训练成本。相关的工作如Gatech做的UAV[3],一个简单的DQN模型在Airsim里训练好后,放到了大疆tello小无人机上,在走廊里实际探索收集一些样本进行在线学习,进一步训练模型,最后可以使得小tello摇摇晃晃飞在长廊里:

3)模仿学习;

思考一下RL样本不友好的缺点,其实很大程度上是由于初始的sparse reward使得需要智能体探索足够多的状态后,才能获得比较positive的rewards,但是其实智能体初期的探索是很智障的,大量的样本都是无用的。那么第三种思路就是能不能教给这个“智障”一些basic的技能,在此基础上,再让agent去探索,去学习更复杂的策略或行为。举例说明就好比,你要教会一个小孩如何跑步,那么你让他从只会爬着走一下子到会蹦会跳是不太现实的,期间小孩肯定磕磕绊绊,遭遇无数坎坷,那么模仿学习的意思就是,那能不能先教会他如何走路,至于怎么跑步,再让他继续去摸索,但起码这个小孩不会因为连走路都走不稳而到处栽跟头了。

模仿学习的关键在于人类首先为智能体构建若干专家示教轨迹,来加速智能体初期的学习速度,避免一些无用的探索。其实类似于有监督学习,训练初期直接告诉智能体对于特定的状态应当采取什么动作,其实这个有监督学习训练的model拟合了智能体的policy。例如UTH的工作[5],他们通过前置摄像头收集了许多城市道路上的图片(状态),并且记录了对应的状态是危险的还是安全的,用以计算reward,并记录下来对于人来说为了躲避障碍而采取的动作。网络训练时,以状态为输入,动作为标签,直接让智能体通过状态预测标签,结果表明这种人类示教的方法能很快让UAV在现实世界中自由飞翔。

从仿真到真实,其实就是从梦想到现实,reality gap的研究承载着人们千百年来实现真正人工智能世界的梦想。这个勃勃生机的领域是未来能让RL真正参与到人们生产活动中,实现真正人工智能的关键。就像朱玉可博士论文[6]摘要中所说:

Laying out our research work that attends to tasks with growing complexity unfolds our roadmap towards the holy-grail goal: building long-term, general-purpose robot autonomy in the real world.

YukiRain 深度炼丹术士

https://www.zhihu.com/people/yukio-2

https://www.zhihu.com/question/397536643/answer/1248530540

目前基本就是这几个思路:

  1. 上model-based RL,据我所知题目描述中说的无人驾驶一类的任务大量用到LQR

  2. 前期先让人类去操作policy,拿到足够多的数据以后做完全意义上的offline训练;如果offline训出来效果不好,把效果不好的场景再让人类操作一遍,然后新数据加旧数据一起再训练,直到效果变好为止(其实也就是imitation learning里面常说的dagger)

  3. 拿人类行为数据预训练policy,常见于现在一些公司所谓的RL推荐或规划算法中

Noite 

https://www.zhihu.com/people/chen-cong-97-1

https://www.zhihu.com/question/397536643/answer/1336644133

补充一个 point

RL 在很多场景的应用是需要非常巧妙地把问题转化成 RL 问题的。这是动手写代码前首先要考虑的问题。

一个典型的例子是 trading 。RL+Trading 是个越来越火的方向,但“怎么把 trading 建模成适合 RL 解决的问题”很少有人讨论,也少有人思考。比如下面这篇就是硬套 RL 的典范。

Deep Reinforcement Learning for Tradingarxiv.org/pdf/1911.10107.pdf

面对一个实际场景,以下几个问题供大家参考:

在一个问题中找到了 state,找到了 action,就可以套 RL 方法了吗?

问题是不是 Markov 的?不是的话, RL 要怎么设计才能更大概率 work?

RL 跑出来效果不好,究竟是为什么不好呢?是 RL 不行还是问题不对?

大家不会用 CV 的模型去套 planning 的问题,这里的不兼容是显然的。但 RL 作为一个决策模型,总被大家套来套去,这是具有迷惑性且 naive 的。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多