本文分三部分: 关于人工智能学习常识的相关观点 commaai的自动驾驶系统技术和架构代码 谷歌大脑团队成员的身份经历及对普通人的启发
开始先介绍一下commaai情况:无人车初创企业Comma.ai获310万美元融资 http://36kr.com/p/5045476.html
commaai的自动驾驶上路测试视频:
---------------------------------
下面开始探讨人工智能学习常识的观点:
机器学习实际上就是训练常识 。什么是常识?根据维基百科“常识是一种感觉,理解和判断事物基本能力,几乎被所有人所公认,所有的人都可以合理地预期,而无需任何争论”。
简单来说,容易理解并且被广泛接受的事实(常识)是复杂结构的基石。如果有持久的常识,那么就是一种智能化。
人类并不总是坚守常识,我们经常忽略了某个常识,然后导致错误的结果。准确地说,有时由于某些社会规则,我们并不在意常识。有大量的例子,比如由于人们盲目地追求流行或者术语带来巨大的失败,这能够说明如果使用常识,他们本可以拯救自己的。人们通常的错误都来源于不使用常识。常识是人类长期以来根据经验学习而得到的共同遗产。
如果有人不喜欢玩火,不喜欢在冷天去游泳,不投资肯定亏损的商业,还有采取类似明智的决定等,这些都是归功于常识。常识随着经验而增长。
当我们训练一个机器学习模型时,我们试图让它在基础数据中学习普遍事实。每个特征都像一个传感器(预测器/分类器)一样贡献出一些信息,然后模型收集到所有的信息,最后试图产生一个一般性的常识,从而对新的数据进行预测或者分类。
当任何机器学习模型要变得复杂而多余时,我们就说它失去了常识,需要做一些概括。这种情况被称为过度拟合。类似的,当模型欠拟合时我们仍然建议按常理来做判断。
参考https://mp.weixin.qq.com/s?__biz=MzIwOTA1MDAyNA==&mid=401349737&idx=2&sn=9287950e31334a08ac8c1b36a37d791f
另一篇文章是:Yann LeCun 谈对抗性网络:如何让机器掌握常识? 参考:https://mp.weixin.qq.com/s?__biz=MzA3MzI4MjgzMw==&mid=2650716316&idx=2&sn=83b05d3f84a419499c126f14a7bde9a6 点积阅读原文可以直接跳转到此文。
我的观点和Yann LeCun相似,生成模型可以让深度网络学习到语义相关的概念, 而且概率推理VAE、赫布学习规则和BP算法的关系都已有进展,这些都可以大大提高深度网络学习常识是速度
个人认为语义概念是能媲美人类小孩学到的概念,特别是openai最近开源的INFOGAN更是将语义概念的学习推进了一步,学习到连续的特征变化:
InfoGAN —— 一个对 GAN 的扩展,学习图像的去纠缠的和可解释的表示. 正常的 GAN 通过用模型重新产生数据分布达到这个目的,但是代码空间的 layout 和组织是 underspecified —— 存在很多可能的解可以将单位 Gaussian 映射到图像上,最终获得的可能是非常复杂和高度纠缠的. InfoGAN 对该空间引入了额外的结构通过增加一个新的包含最大化表示向量和观测值的小的子集的互信息目标函数. 这个方法给出相当出色的结果. 例如,在 3D 人脸图像中,我们变动代码的一个连续的维度,保持其他维度不变. 很明显从 5 个提供的例子中(每一行),代码的结果维度刻画了可解释的维度,并且模型在没有告诉这些重要特征存在的情形下可能已经理解到是存在摄像头角度、面部变化等等:
文/Not_GOD(简书作者) 原文链接:http://www.jianshu.com/p/db87c51de510 生成模型介绍可参看此ppt:https://github.com/sjchoi86/dl_tutorials/blob/master/presentations/Week6-2c%20Generative%20Adversarial%20Network.pptx
更多参看资料包括:
Autoencoding beyond pixels using a learned similarity metric
https://arxiv.org/abs/1512.09300
Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks
https://arxiv.org/abs/1511.06434
Generating Images with Perceptual Similarity Metrics based on Deep Networks
http://arxiv.org/abs/1602.02644
https://github.com/openai/InfoGAN
https://github.com/openai/improved-gan
下面开始第二部分内容介绍:
commaai自动驾驶的生成模型的架构代码:代码非常清爽!
首先Steering Angle model 代码相对简单,如下
核心是Drive Simulator的生成模型,看论文也是如此
生成模型的训练入口是train_generative_model.py 文件,
可以看到首先是命令行参数代码,然后从autoencoder.py import get_model,通过get_model讲各个深度网络模型载入,然后开始训练train_model
核心就是get_model载入的各个深度网络模型,我们看autoencoder.py 文件
这里除了get_model 还定义生成模型的几个子网络 generator encoder discriminator,这几个网络的详细介绍可以参考上面的几篇论文,这几个子网络的定义也很清楚,比如generator
网络结构一清二楚,get_model对模型的相关关系,优化方法都进行了详细的定义,模型准备、输入输出关系:
loss定义:
优化定义:
整体框架基本如此,这就是模型的大体结构。更多细节请看源代码https://github.com/commaai/research
第三部分给大家介绍谷歌大脑成员的背景,希望对大家有帮助。
Fernanda Viegas:我是学图像设计和艺术史的,我从来没有想过我会在高科技企业工作,更别说专门做机器学习了。从传统图像设计专业毕业后,我决定在MIT 媒体实验室读博硕士和博士,我在那里学会了编程,开始做数据可视化。我的工作就是让用户能更好地理解复杂的信息,现在也就是让初学者的专家能更好地与机器学习系统互动,从而理解这些系统。
Chris Olah:我没有大学文凭,我想这应该让我显得不一样。要说我是怎么加入谷歌大脑的——
Martin Wattenberg:虽然我是学数学的,但我毕业后头 6 年都在做记者。这段经历让我深感解释说明的重要性,对我现在的工作也有很大启示。机器学习系统不应该是“黑箱”:我们对它们的了解越多,就越能够有效地改善它们(这里说的“我们”指每个人,不仅仅包括计算机科学家和开发人员,也包括普通的人)。
Doug Eck:我本科学英语文学,侧重创造性写作。我估计是 Google Brain 团队中唯一有英语文学学位的人。同时,我也自学了几年数据库编程。我还玩一点音乐。后来我回学校读博,拿了音乐方面的计算机科学博士学位。然后我从事学术研究(博士后用LSTM做音乐生成;蒙特利尔大学做教员)。6年前作为研究员加入谷歌。我至今仍认为学文科的本科经历对我现在的工作有很大帮助作用。
Dan Mané:学计算机科学之前,我对金融经济很感兴趣。因此,我上大学学的是经济学专业,毕业后实习也是在金融岗位实习。但是,经济学课程上起来枯燥无味,翻来覆去都是那几句,我在金融行业的经历也让我觉得自己该在其他地方工作。所以,我转专业转到了哲学,然后事情变得有趣多了。大学上到一半,我第一次学了计算机科学,超级有趣,但那个时候转专业已经来不及了,所以我说服老师,让我在计算机科学的学分也能抵数,作为哲学在人工智能方面的实践。之后,我做了好几份软件工程的工作,最后在英国在TensorFlow。我到 Google Brain 的经历说起来很巧合,当时他们需要人做 TensorBoard,我之前的一份工作不知怎么的做了很多数据可视化的工作。所以,我虽然没有深厚的背景,但是我有幸加入这个厉害的团队,有了完美的同事和这份完美的工作:)来源:https://mp.weixin.qq.com/s?__biz=MzI3MTA0MTk1MA==&mid=2651985829&idx=1&sn=8e139ad6e91c58c1302f4ffcf5837605
大家可以在公众号内提出各自想法!
希望深入沟通交流此开源自动驾驶可在公众号回复加群。