机器学习
 
Recent Advancement in RL and Robotics
novakon 2017-1-18

很久不上了,上了写点干货。

You may have dreamed about having your own two-legged (bipedal) robot.

Now you may came up with some names, like ASIMO from Honda, or Big Dog from Boston Dynamics.

They've accumulated decades of research. But see what these "accumulated research" do in the DARPA Challenge:

Pieter Abbeel, Associate Professor, UC Berkeley - RE•WORK Deep Learning Summit 2016 #reworkDL

https://www.youtube.com/watch?v=evq4p1zhS7Q


They are so ROBOTIC (please watch the video)!! All participants of the 2-million-dollar-competition were less flexible than an 100-year-old human.

Why? 因为传统上来说,一个机器人系统是这样工作的:

传感器输入 -> 数学建模 -> 特征提取、识别 -> 任务规划 -> 参数调整 -> 机械输出

每一个环节都需要用到大量(比如,超过KC论坛上所有活人总和)的工程知识。因此Robotics成为了美国对外限制出口的专业(留学生朋友们懂)。

但是,搞深度学习的人,比如上面那个视频的主讲Pieter教授不这么看。人要完成这些任务(开门、开车、通过障碍)并不需要进行大量数学计算,只需要通过肢体练习、大脑学习,效果却比任何控制算法都好。因此传统的机器人设计理念,将来必定是死路一条。

他们认为机器人系统应该是这样工作的:

传感器输入 -> 很大的神经网络 -> 机械输出

当然,他们有底气这么说,是因为他们已经用3d仿真加深度增强学习的方法,在计算机上解决了这些问题。


上面这个骨架机器人,以关节角度等作为传感器输入,以前进速度为奖励,学会了如何正确且最优地施加每个关节的力矩,在3D空间中保持快速前进。整个过程不需要机器人基于任何数学模型执行任何数学计算(除了用于模拟及训练神经网络的计算)。

这和深度学习用结构简单的卷积神经网络,在大规模图像识别任务上轻松打败2012年以前所有人工设计特征算法的道理是一样的。我们将会在接下来的几年见证机器人技术如当前的图像、语音技术一样,实现令人惊讶的突破。

Geoff Hinton教授曾经吐槽,要搞清楚大脑是怎么工作的,你不需要10亿欧元(讽刺欧洲大脑项目),你需要一点计算理论。

现在Pieter教授其实也在吐槽:要搞清楚怎么让机器人走路,你不需要每年租场地找一帮机械专业的学生悬赏百万美元(讽刺DARPA),你需要一点深度学习。


Now You May Ask

那这和我们这些吃瓜群众有什么关系呢?

  1. 深度学习是计算机科学的分支,增强学习(现在)是深度学习的分支。最近几年有很多中国人(比如本版的某些人)留学美国、加拿大或英国学习计算机科学,并将深度学习的最新进展源源不断地带回国内(因为这个领域不属于robotics,暂时还不受迟钝的美国政府限制),在北上等地的许多行业(语音、图像、人机交互、自动驾驶、数据挖掘)大放异彩。所以如果你对深度学习感兴趣,相信这是一种解决问题的好方法,你可以选择去国外留学。目前这方面的佼佼者包括UCB, UCLA, Stanford等湾区学校,另有U Toronto和NYU等等。

  2. 如果你有计算机科学背景,但是在国内上学没有机器学习课程,那么除了申请国外研究生,你还可以直接在网上收看国外名师的视频课程。具体课程我在本版发布过多次,这里再强调一下。

    深度学习入门请看Andrew Ng(教授)在Coursera上的Machine Learning,然后是Andrej Karpathy(博士)的在Stanford网站上发表的关于CNN和RNN的课程教学内容。这两个人以热心教育事业著称。

    然后做很多深度学习实验,比如语音、图像、文本的分类。

    增强学习入门看David Silver(阿法狗)和John Schulman(博士)的视频教程,John Schulman的教程口才一般但是发的关于CEM的python练习一定要做。

    增强学习练习请去gym.openai.com,用你的算法跟全世界的人比赛。你应该至少用增强学习算法解决CartPole和Pendulum两个控制问题。我在Pendulum-v0环境的成绩是第二名(ctmakro),因为我用的方法实现的是DeepMind半年前刚出的论文。我在BipedalWalker(双足机器人控制,超难)环境的成绩这两天在跑,预计也能拿到第二名。具体见 https://gym.openai.com/envs/BipedalWalker-v2

  3. 目前ImageNet作为深度图像识别的benchmark已经快被(某几位中国同学)爆关,但深度增强学习领域仍不成熟(DeepMind和OpenAI最近仍然在不断发表新成果、新方法,从最早的Policy Gradient到Deep Q-Learning到现在的TRPO),有许多开放的问题尚待解决。无论牛逼与否,每个人都有机会为这个学科作出贡献。OpenAI有gym和universe,DeepMind有DeepMind Lab环境,这都是免费的实验环境。

  4. 我没有接受过系统的计算机科学教育,但我有8年编程史,16年计算机操作史,于是我花了3个月的工作时间把计算机科学教育补上了(主要是UCB和斯坦福的课程,从操作系统、算法数据结构一直到关系数据库理论)。如果你懂编程,但没有机会接受计算机科学教育,我推荐你也花时间学习这些课程,它们能让你获得对这个学科更高层次的理解(从而把许多痛苦的bug变成轻松的cake),实现后续课程学习效率的数倍提升。

    然后我又花了3个月的工作时间把机器学习从Linear Regression、Cross Entropy一路学到 Attention Based Model、Deep Reinforcement Learning,途中做了很多实验,现在能非常熟练地用Python操作多维数组(Tensor),并掌握了TensorFlow和Keras等开源图计算框架的使用。当然这和我7年前曾经稍微接触过数字图像处理(DIP)、计算机图形学(CG)有关系,不过我想每一个计算机专业的同学对DIP都不会陌生,如果懂CG就更好。

    意思就是说,深度学习(比如对于KC的许多人来说)并不难,只不过(目前以及未来5年)都要从国外进口,所以显得很洋气。只要高中数学扎实,即便高等数学不及格也是可以学会的,很多时候只是我们没有尝试、不敢尝试。所以我亲自试了一下,证明通过网络课程是可以学会的,对人工智能感兴趣的话不学就亏了。

  5. 这里有些人不是想制导吗?不是想入轨吗?不是想绑块板砖空中悬停吗?不是想丢个飞镖把无人机砸下来吗?不是想开着高达上路吗?现代控制理论的局限需要靠深度学习方法弥补。

[修改于 2 年前 - 2017-01-18 17:27:49]

2017-1-18 17:22:10
novakon(作者)
1楼
最后强调一下

爱好变成职业的代价是很高的,所以我上文一直强调要花工作时间学习(意思是每天8小时)。花业余时间学习,是很业余的行为,也是我亲眼目睹到很多人最后放弃学习的原因。

另外,没有计算机科学背景是不可能玩转深度学习的。这是因为任何想法也要利用计算机验证。这其实不是坏事:目前学习计算机科学的相关资源是免费的(国外有youtube国内有慕课),因此即便你的专业背景不是计算机,也同样拥有丰富的机会。

谨记:千万不要参加“XX语言培训班”“XX技术速成班”,老老实实跟着课程走。


附近期作品:Painted In Python, Stroke Regression w/ Neural Activation Difference Loss


[修改于 2 年前 - 2017-01-18 17:24:34]

2017-1-23 14:57:21
novakon(作者)
2楼
http://rll.berkeley.edu/deeprlcourse/ 伯克利今年开了RL课程。
3楼
The course is now full, and enrollment has closed 哈哈 刚进去就发现了这个

想参与大家的讨论?现在就 登录 或者 注册

{{submitted?"":"投诉"}}
请选择违规类型:
{{reason.description}}
支持的图片格式:jpg, jpeg, png