欢迎你 Andrej 非常荣幸今天能邀请到你
谢谢你的邀请
很多人都知道你在深度学习方面的工作
但并不是每个人都了解你的个人经历
那么 你能先讲讲
你是如何走上深度学习的研究道路吗
— 当然可以
我记得 我第一次接触深度学习
是在多伦多大学读本科的时候
当时Geoff Hinton在那儿开设了一门深度学习课程
当时使用MNIST数字集训练受限玻尔兹曼机(Restricted Boltzmann Machine)
我很喜欢Geoff所说的训练网络的方式
他当时用的术语是 网络的心智
我当时觉得 在使用这些数据进行训练时
会发生某些神奇的事情
这就是我第一次接触深度学习时的情况
尽管当时我没有了解很多细节
后来 当我在英属哥伦比亚大学攻读硕士学位时
我再次修了一门机器学习课程
那时 我第一次对这些网络有了更深入的了解
有意思的是 当时我对人工智能非常感兴趣
所以我修了不少人工智能的课程
不过我当时看到的很多东西 都不够令人满意
有大量的深度优先搜索广度优先搜索 Alpha-Beta剪枝
等等这些东西
我当时并不满意
当我第一次碰到机器学习中的神经网络时
我觉得这是个更偏技术的术语
并不像大家都谈论的人工智能那样出名
我几乎可以这样说机器学习在当时更像是一个技术术语
我对人工智能并不满意
当我看到机器学习时 感觉就像
这就是我想花时间研究的人工智能这是真正有趣的东西
于是我就走上了这个方向
我觉得这几乎一个新的计算范式
因为通常情况下 由人来编写代码
但是在这种情况下 由优化程序编写代码
你只是创建输入输出规范
准备很多很多的样本 然后优化程序编写代码
有时候它写的代码比你还要好
所以我觉得这是一种非常新的编程思想
这让我着迷
在你的工作成果中 最令人称道的一件事
是你现在成为了ImageNet图像分类大赛的人类基准
这是怎么一回事呢
大体来说 人们常把ImageNet比赛看做
计算机视觉领域的世界杯
所以无论人们是否关注这个基准和数字
我们的错误率都会随时间越来越低
在我看来 人类在这个评分标准上能达到什么程度并不明显
我曾使用CIFAR-10数据集进行了类似的较小规模的实验
当时使用CIFAR-10数据集时我只是看着这些32乘32的图像
然后自己尝试进行归类
那时候 只有十个分类
所以很容易为它创建一个界面
我觉得 当时我的错误率大约是6%
基于我了解的情况 以及任务本身的难度
我预测了我们可以达到的最低错误率是
好吧 我记不起来确切的数字了
我猜是10%现在我们达到了3%或2% 甚至更了不起的水平
这就是我第一次开展人类基准实验的情况
而且我觉得这是非常重要
你在课上也指出了这一点
我的意思是 这个数字对于了解人类的所能达到的水平非常重要
然后我们就可以拿机器学习算法和它进行比较
对于ImageNet来说 在这个基准的重要性
与应该花多大精力来降低错误率之间似乎存在一些分歧
我们甚至都不知道 人类在这个基准上的表现如何
所以我编写了这个JavaScript界面然后我自己看图片
ImageNet的问题在于 不只有10个分类
比如有1000个分类
这几乎成了用户界面上的挑战
很明显 我记不住这1000个分类都是什么那么我怎么做才能
保证公平呢
于是我把所有的分类都列了出来让自己看了一些样本
对于每张图片 我向下滚动 浏览过1000个分类
尝试根据我看到的每个分类里的样本
来判断这张图片的分类可能是什么
我觉得这个练习非常有启发
我的意思是 我之前并不知道ImageNet有三分之一是狗和狗的品种
当我看到网络花了大量的时间来处理狗
我觉得很有意思
它三分之一的性能来源于狗
这些工作可能花了我 一到两周的时间
我放下了其他的事物
我觉得这是个非常有意思的练习
最终我得到了一个数字 然后我觉得一个人不够
我需要更多的人
所以我想办法在实验室内部组织其他人也参与进来
我觉得人们并不那么愿意 奉献一两周
来做这么辛苦的工作 坐上五个小时
想办法确定一条狗的品种是什么
所以在这方面 我没法得到足够的数据
但至少对人类的表现得到了一些近似的估计我觉得这很有趣
然后大家知道了这件事 但我当时并没有察觉
我只是想知道这个数字 然后就成了这样
大家都很高兴有人做了这件事
还开玩笑地把我称为参考人类
当然 我也觉得很有趣
当软件 也就是深度网络
最后超过你的表现时 你吃惊吗
当然
当然 非常吃惊
我的意思是 有时候真的很难看出一张图片到底是什么
有的图片就像一团黑点
我也看不出来是什么
我只能猜测它大概属于20个分类中的某一个但网络直接就找出来了
我不明白这是怎么回事
有点超出人类的范畴
此外 我觉得网络非常擅长识别诸如地砖图案和纹理
的统计规律
我觉得在那方面 网络可以更好地
提取大量图片中的精细的统计信息这点我并不吃惊
在很多情况下 我觉得惊讶的是有些图片需要你读取文字
图片中只是一个瓶子 光看你不知道它是什么
但它上面有文字 告诉你它是什么
作为人类 我能读懂 这没什么问题但对网络来说
它必须学习阅读才能识别这个物体因为从外形看并不明显
让你出名的一件事
也是让深度学习社区感谢你的一件事是
你开展教学并把它放到了网上
能讲讲这件事的经过吗
— 当然可以
我有一种强烈的感觉 总的来说
这种技术是一种变革 很多人想用它
它就像一个锤子
我想做的事情是
能够把这个锤子随机地交给很多人
我只是觉得这非常急迫
从博士研究生的角度来说 这不一定可取
因为你放下了你的研究
我的意思 这占用了我120%的时间
我必须放下所有的研究
我的意思是 这门课我教了两次每次大概都要花四个月时间
那段时间基本都花在上课上
所以从这个角度来看并不太建议但是总体来说这是我博士阶段的亮点
它甚至与研究无关
我认为教课 绝对是我博士阶段的亮点
只要看到那些学生
就能感觉到他们有多兴奋 这门课与众不同
通常 课程讲的是19世纪左右
发现的东西
但是我们可以在课堂跟大家说看 这是一周之前发表的论文
甚至昨天发表的论文
有新的结论 我觉得本科生和
其他的学生 真的很喜欢课堂的这一面
而且他们真的能理解这些内容
这不是核子物理或火箭科学
你只需了解微积分 代数
你就能够理解背后的所有原理
我这个领域非常强大 日新月异
人们觉得自己站在浪潮前沿 这感觉很棒
我觉得这是人们真正喜欢这门课的原因
而且你确实帮了很多人 递出去了很多锤子
— 没错
作为一个对深度学习有着长期研究的人
这个领域还在迅速发展
我很想知道 你自己是怎样想的
这些年来 你对深度学习的理解有什么变化
大体来讲 当我第一次见到受限玻尔兹曼机
处理数字时
对我来说 这种技术的应用前景并不明朗
也不知道它将来有多重要
当我开始研究 计算机视觉 卷积网络的时候
这些概念也已经存在了 但很多计算机视觉领域的人
觉得短时间内用不上
我觉得大家当时的观点是 在少量的场景下有用
但无法扩展到处理更大的图像
这种观点完全错误
所以总体来说 我对这个技术的通用程度感到惊讶
也没想到能取得这么好的结果
这是最大的惊喜 而且不仅如此
一方面 它的表现非常好 比如说ImageNet
另一方面 我觉得出乎所有人预料的是
至少出乎我的意料的是 你可以对训练好的网络
进行迁移
你可以在任意的其他任务中对网络进行微调
因为现在 你不仅解决了需要数百万样本的
ImageNet的问题
这个网络还成为了非常通用的特征提取器
我觉得很少有人能预料到这第二个方面
在这方面的论文中
人们一直在研究计算机视觉
场景分类 动作识别 对象识别
基本属性 等等
人们只是通过微调网络 就解决了每个任务
这让我觉得非常惊讶
是的 我觉得监督学习占据了大部分的版面
虽然微调训练好的模型 或是迁移学习的效果很好
但由于某些原因 人们谈论的比较少
是的 正是如此
是的 我觉得有些方面的研究不多大家对无监督学习抱有很高的期望
这才是吸引很多研究人员在2007年左右
投身这一领域的原因
我觉得这方面的前景 还没有实现
让我意外的是 监督学习的效果那么好
而无监督学习仍然处于
不明朗的状态 它的运作原理和应用前景尚不明确
虽然这个领域仍然有
很多忠实信徒
我知道你属于一直思考人工智能长远发展的那种人
你能跟我们分享下这方面的想法吗
我在OpenAI用了大约一年半的时间
思考这些问题
在我看来 这个领域会分成两条道路
一条是应用人工智能 就是创建和训练神经网络
主要使用监督学习 也可能用无监督学习
然后逐步提升性能 比如图像识别器或类似的东西
我觉得另一个方向是 人工通用智能
也就是 怎么让神经网络成为一个完全动态的系统
它能思考 说话 可以做人能做的任何事情在这些方面具有智能
我一直以来都觉得有趣的是 比如在计算机视觉中
我认为 我们一开始使用的方法是错误的
我们想把它分解成不同的部分
就像是 人类可以认出人 人类可以认出场景
人类可以认出物体
所以我们只是关注人类能做的各种事
一旦完成了这些独立的目标就分成了不同的领域
有了这些独立的成果
我们再考虑如何把它们拼在一起
我觉得这个方法不对
我们已经见证了历史给出的结果
所以我觉得在更高级的人工智能领域
历史正在重演
人类会问问题 会做计划
会通过实验来了解世界的运行原理人类需要互相交谈 所以发明了语言
人们试图把人类的能力分解成各种功能然后逐一实现
再把它们一起放进某种大脑
我觉得这种方法不对
所以我更倾向于不按照那样分解
而是使用一种完全动态的神经网络
这样你总是与完全的代理人程序打交道
然后的问题是
应该如何构建目标 使得当你在优化
大脑的权重时 能得到智能的行为
这是我在OpenAI里一直深入思考的东西
我认为人们已经想出了很多不同的方法
来处理这个问题
比如
在监督学习方向 我在网上发过一篇文章
不算是论文 只是我写的一个小故事
这个小故事试图设想出一个假想的世界
我们只通过扩大监督学习的规模的方式来发展人工通用智能
我们知道这是可行的
然后就会得到 像亚马逊土耳其机器人这样的东西
人们让数量众多的机器人执行任务
然后以此为监督学习的数据集进行训练 来模仿人类
这样的东西会是什么样的 等等
还有其他的方向
比如源于算法信息论的无监督学习 像AIXI那样
或者源于人工生命 这更像是人工进化
这就是我花了很多时间所思考的东西
我觉得我找到了正确的答案 但是我不想在这儿说
至少我可以通过读你的博客
学到更多的东西
— 是的 当然
你已经给了很多建议
现在 仍有很多人想进入人工智能和深度学习领域
你能给这些人一些建议吗
— 没问题
我觉得当人们和我谈起CS231n课程以及他们认为
这门课程非常有用的原因时 我反复听到的是
人们喜欢我们一直深入底层细节
他们不是在用什么库 而是看到了真正的代码
他们看到了一切是如何实现的
自己也实现了其中的大部分
要一直深入底层 理解背后的所有原理
不把事物过于抽象简化也很重要
你需要充分了解全栈
当我学习这些知识的时候 这种做法收获最大
我只是从头开始把它实现了 这是很重要的
从理解知识的角度来看 这样做
性价比最高
我写了自己的库
叫做ConvNetJS
它是用JavaScript写的 实现了卷积神经网络
那就是我学习反向传播的方法
所以我一直建议人们 不要一开始就使用
TensorFlow这样的东西
当你能自己编写最底层的代码后 再去使用
你知道了底层的所有原理后
再使用这些框架 框架为你抽象掉了一些细节
但你必须知道背后的原理
所以这点对我帮助最大
这是人们上CS231n课程时最喜欢的一点
这也是我给大家的建议
所以不是去运行神经网络 然后顺其自然
对 在某些层的序列中 我知道当我加一些
Dropout层 效果会更好 但那并不是你想要的
在这种情况下 你就无法进行有效的调试
也无法有效地改进模型
是的 听你这么说我很高兴在deeplearning.ai的课程中
开课的时候首先讲了很多个星期的Python编程
是的 很好
非常感谢你分享这些见解和建议
在深度学习的世界里你已经是许多人心目中的英雄
我很高兴 也很感谢你今天能在这里与我们分享
谢谢你的邀请GTC字幕组翻译