2017年11月13日,北京大学信息科学技术学院的黄哲威同学发布了这样一条朋友圈:
"结束了一个多月的杂交炼丹,业余RL选手最后两天被吊打,Juergen Schmidhuber抢我核弹,显卡拿好QAQ"
他所说的“核弹”,指的是来自于“核弹厂”NVIDIA的新一代超级计算机、售价6.9万美元起的DGX Station,是NIPS 2017“Learning to Run”竞赛的优胜奖品,而二三名的奖品是NVIDIA Titan Xp。比赛第一轮结束后,PKU-hzwer (黄哲威的参赛帐号)排名第二,第一名的 USTC-IMCL 来自中国科学技术大学,前几名几乎全是中国选手;第二轮最后两天却全被来自于NNAISENSE(“LSTM之父”Juergen Schmidhuber所创办的人工智能公司)的Wojciech Jaskowski反超。
“第一名隐藏了实力,我们一度认为胜利在望。”黄哲威无不遗憾地告诉雷锋网。最终他们屈居亚军。
“Learning to Run”是即将在长滩召开的机器学习顶级学术会议NIPS 2017的5个官方挑战赛之一,比赛共有595支队伍报名。挑战赛由斯坦福神经肌肉生物力学实验室(MNBL)主办,要求参赛者开发一个控制器,使符合生理学的人体模型能够尽可能快地在复杂的障碍物中进行奔跑。比赛提供人体肌肉骨骼模型和基于物理的模拟环境,参赛者可以在其中合成物理和生理上精确的运动,最终根据在规定的时间内跑动的距离和韧带拉伸惩罚来计分。
从比赛官网雷锋网了解到,本次比赛的目标是:
利用深度强化学习解决医学问题;
推动增强学习中的开源工具研究(物理模拟器,增强学习环境和竞赛平台等);
在具有随机性和高度维度的行动空间的复杂计算环境中推进增强学习的研究。
根据比赛要求,参赛者需要建立一个采用当前状态观察(41维向量)为输入的函数f,并以最大化奖励的方式输出肌肉的激励行为(18维向量)。其中,总回报是最后一次迭代后X轴上的骨盘位置(即跑动的距离)减去过度使用韧带力量带来的惩罚(韧带的作用是防止关节过度弯曲,如果跑动幅度过大会导致韧带受到伤害,而这是在比赛中需要避免的)。
赛后雷锋网也在第一时间联系了黄哲威,向他请教第一次参赛就取得好成绩的奥秘。
雷锋网(以下用Q代表):你是怎么注意到这个比赛的?
黄哲威(以下用A代表):我在旷视Face++的研究院实习,9月份的时候,我的Mentor向我推荐了这个比赛,正好入门一下各种炼丹工具。
Q:介绍一下你的Mentor的情况,以及他给了哪些有益的解决问题的思路?
A:我的Mentor(周舒畅)和另外一些研究员提供了许多思路,包括网络模型、激活函数,动作噪声等等,以及科学的实验管理方法。
Q:你认为这个比赛最大的难点在哪里?
A:最大的难点是官方提供的模拟器的计算速度很慢,每轮障碍跑在单核 cpu 上的模拟时间超过一个小时,获取训练数据代价很高;连续动作空间的决策本来就是强化学习的一个难题,在这个任务中,环境提供的输入信息是41维的0到1实数向量,包括下肢关节的位置,角度,速度,障碍信息等,根据这些信息我们需要输出18维的0到1实数向量,决策下肢肌肉的动作;环境具有随机性,障碍的大小和位置是不确定的,而且输入信息中只有模型前方最近的一个障碍。
Q:模拟慢的问题最后是怎么解决的?
A:一位中国选手(@qing-yongliangaka)为大家提供了模拟器并行的框架,这个框架让我们能够在多台服务器上并行模拟器然后训练,节约了大量的训练时间。这位选手也获得了比赛方颁发的特别奖。
Q:你们是如何搭建模型的?
A:1) 我参考了一些开源的代码,并尝试在OpenAI gym上训练了一些简单的任务,正确实现了 DDPG 之后,我们通过比较多的对比实验确定了各种参数和网络结构;
2) 发现训练出的模型瘸腿(拖着一条腿)和重心靠后的情况比较多,我们针对这两个问题设计了一些惩罚。
Q:在你看来,参与比赛的过程中有哪些比较重要的节点?
A:1) 由于我缺乏并行处理的知识,单个模拟器速度又极其缓慢,刚开始数天毫无进展,后来发现有参赛者开源了并行模拟器的框架,使得我们能在数百个 cpu 上开展训练;
2) 加入了比赛的讨论组之后,惊讶地得知一些选手从随机网络参数开始,不到一天就能训练出表现很不错的模型,而我对着一份网络参数折腾许多天也没什么进展,于是开始了提高训练速度的探索;
3) 通过以及降低控制帧率并将多帧奖励合并,还有一些其它技巧,数十倍地加快了训练,比赛后期我们训练一个40分的模型只要几个小时,使得大量的对比实验变得可行。
Q:第二轮比赛中,障碍物从3个增加到了10个,这给训练带来了什么样的变化?
A:因为增加的障碍离起点比较远,AI要学会控制模型在高速奔跑时避开障碍,后腿很容易被绊到。模型的摔倒概率上升到接近30%,使得我们不得不花费精力在稳定性上下工夫,后来通过多个actor和 critic 群策群力的方法将摔倒概率降低到5%以下。这方面的工作我们之后会写一个实验报告。
Q:除了DDPG,你们是否还有采用其他方式,例如PPO(雷锋网注:PPO是OpenAI强化学习的默认算法)来实现?
A:我们队伍没有采用其它的训练方式,主要是我能力和精力有限,一些选手尝试了许多方法,似乎也没有本质提高。值得一提的是,有选手使用进化算法获得了很不错的结果。
Q:第一次参加比赛就取得好成绩,有什么想和其他初学者分享的经验吗?
A:多和其它参赛选手交流讨论,获取灵感,及时反思;提高工程能力,将理论和实践结合;注重代码管理和实验的可重现性。
尽管黄哲威一再强调自己是“业余选手”,“能力和精力有限”,但从其认定了一个方向后不断持续深挖的做法来看,最终取得好成绩也有着一定的必然性。有的时候,选择过多不一定是好事,从人工智能发展的历史来看,正是有着一批在人工智能发展遇冷时仍然坚持研究的先驱的不断努力,才迎来了当下以机器学习推动的又一波人工智能的春天。在恭喜黄哲威首次参赛就取得好成绩的同时,也希望有更多机器学习的初学者们能够不畏困难和努力钻研,共同进步。