这个问题思考了蛮久,现在的强化学习一直都是在仿真环境下进行的,和实际应用环境并不相符,除非是为游戏环境服务的不然在仿真环境下进行强化学习训练和研究有什么实际意义和用处呢,而大规模的仿真环境下的强化学习又有什么实际意义呢???
特别说明一下,在传统的定义中(一些以前的文献表述中)大规模强化学习是指状态空间巨大或动作空间巨大,本文中所谓的大规模强化学习的定义则与其有所不同,本文中大规模强化学习是指才有大规模仿真环境进行加速强化学习训练或提升强化学习训练效果的情景,因此这里特此说明。
其实本文中对大规模强化学习的定义是不太准确的,或许叫做大规模仿真环境下的强化学习算法更为准确,也或者叫做大规模并行环境下的强化学习算法。
就行题目中所说的大规模并行环境下的强化学习算法是否有用???
经常在一些文献中看到一些企业使用大规模CPU集群进行大规模并行环境下的强化学习算法训练,而其训练的算法一般都是连续动作的策略强化学习算法,比如训练机器人仿真什么的(NVIDIA公司推出的GPU运行环境下的机器人仿真环境(NVIDIA Isaac Gym)的安装要求——强化学习的仿真训练环境),而在学术界则很少看到这样的大规模环境的强化学习算法,那么这种大规模环境下的强化学习算法是否真的有意义呢,也或者这只是大型公司无聊才故意玩的游戏呢???
仔细研究后发现对于比较困难解决的问题,尤其是使用策略强化学习算法去解决连续动作空间的问题时,如机器人控制等,使用大规模环境的强化学习算法可以很好的提升算法训练速度和性能,但是这东西最直接的益处其实就是加速训练,比如你要是用自己的普通台式机使用较少的仿真环境训练可能需要多花几倍时间而已,其实这个对于普通用户来说其实也是可以接受的,比较是否采用大规模并行环境来训练算法主要也是个加速训练的事情,至于为什么大公司会选择大规模并行环境训练我想主要原因就是人家是真的有这么大的计算机集群,能够10小时解决的问题为什么要用50个小时来解决呢。
尤其是那些连续动作空间的策略强化学习算法,主要训练的还都是机器人控制方面的任务,而这些任务又存在sim2real这个问题,就是如何将仿真环境下训练的算法在真实环境下来移植过去,这里我们不细研究如何sim2real这个问题,我们值需要知道sim2real是一个有价值的研究问题就好,那么既然很多在仿真环境下训练的算法我们最后是想要其运行在真实环境下的话,那么我加快在仿真环境下的训练就有价值了(当然这个前提是你有足够的计算资源,计算机集群等)
总结一下:
1. 大规模并行环境采样来加速训练强化学习算法确实可用,该种方法不仅提高训练速度同时也有可能在一定程度上提高算法结果的最终水平,不过该种方法主要优势还是加速仿真训练。而且大规模并行环境采样来加速训练强化学习算法主要面对的还是那些连续动作空间的策略强化学习算法,如机器人控制等,详细见:
NVIDIA公司推出的GPU运行环境下的机器人仿真环境(NVIDIA Isaac Gym)的安装要求——强化学习的仿真训练环境
2. 仿真训练是否有用???这个是一直要我有所迷惑的地方,学术界搞的强化学习研究基本上都是在仿真环境下进行的,颇有一番自娱自乐的感觉,这东西总感觉不靠谱不实用,不过也是后来还发现仿真训练的算法最后也是有可能迁移到真实环境下的,一般把这个称作sim2real。虽然现在学术界上仿真环境下玩的不亦乐乎,但是这可能也是条件所限,毕竟学校这种地方也是很难像企业那样拿出那么大的计算资源也不太可能拿出动辄几十万甚至上百万的真实机器人,那么也就只能在仿真环境下搞搞了。不过既然可以sim2real,那么即使距离还是蛮远的,但是毕竟还是有这个可能性的,那么暂时这个阶段在仿真环境下对强化学习进行适当的探索也是说的通的。
具体相关资料同样参看:
NVIDIA公司推出的GPU运行环境下的机器人仿真环境(NVIDIA Isaac Gym)的安装要求——强化学习的仿真训练环境
===========================