谷歌大脑团队现在正在Reddit上进行他们第二次AMA在线答疑,目前网友留言已经高达490多条。新智元第一时间为你编译整理:谷歌大脑当前的工作重心在哪里,他们认为深度学习要进一步往前需要克服哪些难题,成员看好什么研究方向,同时,谷歌大脑如何运作,成员都有哪些背景,怎样才能加入谷歌大脑。更有Hinton最新研究以及TPU进展爆料,赶紧来看——
TensorFlow遭遇对手,不过谷歌大脑的人欢迎各种idea
说实话,你们认为Pytorch如何?有用过吗?担不担心Pytorch带来的竞争?还是说你们认为Pytorch是TensorFlow的补充?
Alexandre Passos:我认为 pytorch 很棒!UI 很简洁,文档做的也不错。编程模型里有不少很好的idea。有更多的人在 ML libraries 上工作是件好事,这样我们就能看到更多的idea,并充分利用它们。
Rajatmonga:ML 社群的一个优点就是互相学习。在开发 TensorFlow 的过程中,我们从以往 DistBelief 的经验中学习,也从其他框架,比如 Theano 中学习。我们也会继续从 Pytorch 和 DyNet 这样的新框架中汲取养分。我们把 TensorFlow 看作是推动 ML 研究边界的工具,它把 ML 带给了每个人。社群中的研究和 idea 在不断进化,TensorFlow 也在不断进化。
谷歌大脑在关注哪些研究重难点?训练、数据、计算力
领域面临的下一个最大的障碍是什么?
Vincent Vanhoucke:使深度网络稳定地适应来自弱监督数据的在线更新仍然是个大问题。解决这个问题,将使真正的终身学习成为可能,并使得许多应用程序开放。另一个巨大的障碍是,像GAN 或Deep RL 这样领域内最激动人心的发展还没有到达“批量归一化”的时刻:在那一刻,所有一切忽然都变得自动地“想要训练”,而不是要一次一个超参数地和模型较劲。它们仍然不够成熟,还没有从有趣的研究方向转变成我们可以依赖的技术; 现在,不进行大量的精确微调,就无法可预测地训练这些模型,因此很难将它们纳入到更精细的系统中。
Jeff Dean:现在,我们倾向于构建机器学习系统来完成一个或少量的特定任务(有时这些任务是相当困难的,例如把一种语言翻译成另一种语言)。我认为我们真的需要设计可以解决数千或数百万个任务的机器学习系统,并且可以借鉴解决这些任务的经验来学习自动地解决新任务,同时,模型的不同部分会根据不同任务被 sparsely activated。要搞清如何做到这一点,还有很多挑战。今年早些时候,在斯坦福大学举行的 Scaled ML 大会上,我发表了关于这个问题的演讲,从幻灯片的第80 页开始(有些背景知识从第 62 页开始)。
人们常说要开放数据集/代码,但很少提计算力。谷歌在机器学习和AI方面投入巨大,训练AlphaGo用了将近300个GPU,还只是单个模型,这样一项研究要用到好几千个GPU了。谷歌的人在研究过程中是否会考虑计算力资源这个问题,还是把这看作是在提供知识——没有谷歌这么深的口袋,进行这些研究是不可能的。你们认为这是否会让其他负担不起相同资源的实验室/研究组产生不合理的期望,对整个圈子产生其他潜在的积极/消极影响?
Vincent Vanhoucke:许多伟大的研发都是以贵得吓人的研究开始的,而一旦人们知道什么是可行的并开始优化它们时,它们就成为了人人都能达到的目标。谷歌的第一个深度网络(用于语音识别)训练时间需要几个月,而且运行速度也非常慢。然后,我们发现了提升速度、改进(和开源)我们深度学习基础设施的技巧,现在现场的所有人都在使用它们。SmartReply也一度贵得吓人。我还能举出不少这样的例子。对于我们来说,重要的是探索可能的范围,因为最终目标不是在基准测试中获胜,而是要使科学进步。
George Dahl:我们都想要更多的资源,如今资金充足的学术实验室实际上可以访问相当多的计算资源,并能够进行大量有趣的研究。我完全同意,如果学者(和所有开展研究的人)都可以获得更多的计算资源,那一定是件好事。这就是我们为什么要推出TensorFlow 研究云。它将为机器学习研究界提供共计180 petaflop 的raw computer power,而且是免费的。
总是会有一些实验室拥有比其他实验室更多的资源,一般来说,只要结果公布,整个社群就能从有更多资源进行大规模实验的实验室研究人员的所作所为中获益。这是我们如此致力于发布和传播我们研究的原因之一。
小公司或者刚刚开始采用机器学习的新领域,要收集带标签的数据集真的很难,而且效率低下。你们对无监督学习或半监督学习的未来有什么看法? 5年后机器学习的主要研究重点还是深度学习吗?
Samy Bengio:确实,深度学习最大的成功经常与大量可用的带标签的数据联系在一起。但深度学习并非固有需要这么多的数据。最近关于few-shot learning的论文,比如《Optimization As A Model For Few-Shot Learning》和《Prototypical Networks for Few-shot Learning》,显示了可以显著减少完成每个任务所需的带标签数据的数量。没有人知道5年后机器学习会怎样,但很可能会涉及到通过深度非线性模型实现一些形式的梯度下降。
很多人都说,深度学习只是不断试错。把数据喂给神经网络,调整架构,尽可能做得越深越好。你们怎么看这些说法?构建具体问题的架构背后有什么理论吗?
Samy Bengio:像以前的许多领域一样,深度学习在拥有坚实的理论基础前就开始产生巨大的影响。但是,还是有很多很好的理论论文发表出来,包括谷歌大脑的研究,比如《Sharp Minima Can Generalize For Deep Nets》、《Understanding deep learning requires rethinking generalization》、《Investigating the learning dynamics of deep neural networks using random matrix theory》,主要是为了更好地理解“为什么深度学习会有效”,特别是要更好地理解,如何为特定任务设计一个模型。同时,像“学会学习”这样的方法已经从一定程度上减轻了对这些问题的担忧。
Hinton,你的Capsules研究进展怎么样了?
Hinton,你的capsules进展怎么样了?
Nick Frosst:Hinton现在很忙,但今早我们准备了这个答案:Capsules 进展顺利!
我们多伦多办公室的一组五人(Sara Sabour,Nicholas Frosst,Geoffrey Hinton,Eric Langois 和 Robert Gens)正在取得稳步进展!Capsules是一组神经元,其活动向量表示特定类型的实体(例如对象或对象部分)的实例化参数。我们最近有一篇被作为spotlight 的 nips 论文,讨论了capsules 之间的dynamic routing,作为衡量较低级别功能之间协议的一种方式。该架构在MNIST上实现了最先进的性能,并且在识别高度重叠的数字时明显比卷积网络更好。我们还在研究新的routing procedure,并在NORB 数据集上取得了良好结果,以及一个新的capsule 架构,可以保持与输入空间中给定组的等价性。我们希望尽快发布这些结果!
其他被看好的方向:高效大规模优化、第三人称视角模仿学习、在运行代码时推理代码
你们都对什么项目感兴趣,为什么?
Nicolas_LeRoux:我个人对高效大规模优化感兴趣。现在,我们依靠标记的数据集来训练模型,但是我们已经看到了这种方法的局限性。将来,我们会更多地使用更大的未标记或弱标记的训练集,每个数据点都包含较少的信息。在这种情况下,如何最大限度地利用每个样本,不要一训练模型就花上好几个月乃至几年的时间就非常重要了。我想了解如何以在线方式从这些数据点收集和保留信息,从而尽可能快速和有效地训练模型。这将使我们能够处理更具挑战性的问题,也可能对训练这些模型所需的能源产生巨大影响。
随机梯度方法便是一个这样的例子。虽然是选择的方法,但在仅仅使用一次之后便立即舍弃渐变似乎很浪费。其他方法,例如动量(在线)或SAG/SAGA(有限数据集),通过保持这些梯度的记忆来加快学习。但是,我们仍然不知道如何在一般的在线非凸情况中最好地使用这些用过的样本。
大家都在说机器学习/AI/深度学习的成功,能不能谈几个失败的例子,或者说你们在工作中遇到的困难?谷歌大脑团队对无监督学习方法怎么看?你觉得未来几年它会成为主流概念吗?
Vincent Vanhoucke:失败的例子:我们中的一些人试图与纽约客漫画编辑Bob Mankoff 合作,在纽约客漫画上训练一个神经字幕发生器(今年刚刚看到NIPS论文)。项目失败了。我们没有符合DL 标准的足够数据,尽管我们可以预先对其他类型的漫画进行视觉表征。我希望有一天能做到这件事,但方法可能是老式的。
至于无监督学习,我认为人们最终会明白,自动编码是一个坏主意,而能工作的无监督的学习(例如语言模型)和不能工作的无监督的学习之间的区别通常是预测未来(比如下一个单词、下一帧)而不是现在(自动编码)。我很高兴地看到很多人已经开始对我们去年开源的push dataset 的“预测未来”工作进行了基准测试,这让人很惊喜。
一般来说。以NLP为例:该空间中最基本的自动编码形式,像LSA 和LDA 这样的线性瓶颈表征,已经完全被Word2Vec 等替代,它们仍然是线性的,但使用上下文作为监控信号。在声学建模中,我们花费了大量的时间来衡量自动编码音频表征对模型信号的好处。而所有这些都被LSTM 毁了,LSTM再次使用因果预测作为监控信号。连Yann LeCun 都修改了他的“樱桃vs蛋糕”的说法,不再是关于“无监督学习”,而是关于“预测学习”。这本质上是一回事。自动编码器不好,未来自我预测好。
对于深度强化学习和/或机器人技术,你们认为最有希望的方向是什么?
Vincent Vanhoucke(vincentvanhoucke):在过去十年中,机器人技术的大部分发展是基于知觉根本不会起作用这个前提,因此在该领域的大量研究集中在非常受控环境中的机器人操作。现在,有了计算机视觉的“超能力”,我们有机会返回去,重建一个围绕知觉和丰富反馈的机器人堆栈,这些反馈很大程度都来自一个未知的环境。深度强化学习是将感知置于控制反馈循环中心最有前景的方法之一,尽管离应用还有很大的距离。我们需要弄清楚如何更容易地获得奖励,更可靠的训练和更高的样本利用率。我在AAAI演讲中提到了一些,现在我很感兴趣的一个问题是第三人称视角模仿学习(imitation learning from third-party vision),我认为这是解决任务操作(task instrumentation)和提高样本利用率的一种大有希望的方法。我们将在即将举行的第一届机器人学习大会(1st Conference on Robot Learning)上讨论这个问题:http://www.robot-learning.org/home/program
我们越来越多地看到神经网络在使用非常通用的数据,例如像素数据,并且能够复制人类编码的复杂规则。例如,一群大学生最近能够基于用户输入做出老式的 2D 超级玛丽游戏——只是通过看人类玩游戏来学习,而不是在编码上训练。然后,他们的网络编写了游戏代码,并取得了很好的成绩。什么时候我们可以开始训练神经网络,比如 Python 代码和相应的输出,然后推理出底层代码和规则?
Danny Tarlow(dtarlow):从代码执行中推理代码,这绝对是一个很酷的问题!相关研究已经很长时间了。传统上,这些方法里并没有很多机器学习的成分,但20 年前,人们已经开始考虑这个问题了。最近这方面有了相当多的工作,机器学习方法进入了研究者的视野,我认为这真的很令人兴奋。
通过具体执行追溯代码仍然是一个很难的“海底捞针”的搜索问题,值得思考机器学习能做出什么贡献。最近至少有两个有趣的方向:
源代码执行的differentiable proxy。也就是说,我们能找到一个可微函数来(很可能是近似地)解释源代码产生的行为吗?这可以产生梯度来引导对行为条件程序的搜索。可以如论文 Learningto Execute(Wojciech Zaremba,Ilya Sutskever,2014)那样在不编码解释器架构的情况下完成,或通过编码解释器的架构实现,如论文Differentiable Forth(Matko Bošnjak et al.,2017)或TerpreT (Alexander L.Gaunt et al.,2016)。值得注意的是,这些模型只能在简单的语言上进行测试,或者容易受到局部最优化的影响,所以我们还没有成功地将它们扩展到小问题之外。开发出 python 的全部能力是一个很好的目标,但是现在我们还有几个很大的挑战。
学习从执行行为到代码的映射。最近的一些论文,如A Machine Learning Framework for Programming by Example (Aditya Krishna Menon et al.), DeepCoder(Matej Baloget al., 2016), RobustFill (Jacob Devlin,2017)。此处的瓶颈是去哪里获得“代码——行为”对的良好大规模数据。我们可以通过手动构建的基准测试或随机产生的问题取得一些进展,但仍需要更多的高质量数据推动这一方向的研究。
所以,总体来说,这绝对是没有解决的问题,但它是一个巨大的挑战,也是值得积极研究的领域。
所以,谷歌大脑究竟是怎么运作的?怎样才能加入谷歌大脑?
你们的日常工作情况是怎样的?你们在选人时有什么标准?
Jeff Dean:我领导大脑团队。每一天,我都要花时间阅读和撰写电子邮件,阅读、评论、有时会编写技术文档,与我们的团队或谷歌其他地方的各种人员进行1:1 或小组会议。Review 代码,编写代码,思考影响我们团队的技术或组织问题。有时会进行内部或外部的讲话。
Alexandre Passos:我是一个 tensorflow 开发人员。我每天的工作基本是开始于阅读和分类电子邮件(谷歌里邮件可真不少)。我会看看关于 stackoverflow 的问题,挑些有趣的来回答。我每天花几个小时编写代码、调试,但不像我更年轻一些时预想的那么多。我也在合作进行一个研究项目,论文不久以后会出来。幸运的是,这些天我不用参加太多的会。
Nicolas LeRoux:我是蒙特利尔的研究科学家。我的时间花在以下三件事上:与本地学术实验室建立联系——这是我们的任务之一,进行自己的研究,指导更多的初级研究人员——包括实习生或大脑resident。我试图每天至少抽出一个小时阅读最新的论文、研究博客或浏览arXiv。我也尝试花一些时间,不去任何会议,不回复电子邮件,只是想想我目前的项目。其余的时间我通常用于与其他研究人员进行互动,讨论电子邮件或视频会议的想法,以及参加会议(山景中的所有演讲都会流传到各处,供我们享用)。最后还有社区活动(我今年是NIPS的地区主席,对各种期刊和会议进行了 review)。
我们主要寻找具有卓越履历的候选人,但我们也希望确保他们能够与团队其他成员进行有效的互动,因为团队合作对于解决最为深远的问题至关重要。
Nick Frosst:我是多伦多办公室的R-SWE。我们在这里是一个很小的团队,都坐在一起,所以我很多时间都在和小组的其他成员谈论新的想法。作为一个r-swe,我可以做自己的研究工作,以及实施其他研究人员的想法。我几乎完全在 TensorFlow 中工作。我每周和我的主管有两次会议,每周有一次小组会议。
Samy Bengio:作为研究带头人(research lead),我的大部分时间都是致力于把研究小组往重要的研究问题上引,我会与研究科学家开会,讨论他们的想法,与文献有什么关联,了解他们目前的进展和局限,制定下一个计划步骤……我还组织了一些研究活动,比如阅读小组和定期会谈,内部的和外部的都有。最近,我作为NIPS的程序主席一直在忙。当考虑让谁加入我们的团队时,我在寻找具有开放研究心态的优秀人物,有潜力大大影响我们目前对机器学习理解的人。
Pi-Chuan Chang:我是谷歌大脑基因组学团队([Google]Brain Genomics)的软件工程师(SWE)。我花时间了解基因组学问题,并将其纳入深度学习范围,确保我们编写高质量的代码,供基因组学界的其他人使用。当我加入这个团队时,我认为这对我来说很适合,因为我可以利用我的机器学习和工程技能,并学习一个新的领域(基因组学)。作为团队中的新人,我认为有一些现有的技能可以满足团队的需求,同时也带来新的技能/观点是非常重要的。
George Dahl:我是大脑团队的研究员。大脑团队工作是我能想象的最好的工作,主要是因为我能够做我想要做的工作,并且与超凡的同事共事。我花大部分时间来指导初级研究人员,和他们在具体的研究项目上进行合作。我手头随时都可能有大约5个正在进行的项目。我试图确保这些项目中至少有一个是我自己经历大量实验或编写大量代码的程序,而对于其他人,我可能会处于更偏向监督的角色(审查代码,规划和优先排序任务)。这在实践中意味着我通常会在一天内进行几次研究会议,花一些时间在邮件上,花一些时间做代码审查,再花大量时间与同事进行头脑风暴。我也花时间提供有关TensorFlow的反馈意见,出去演讲,看论文和进行面试。在评估潜在的新研究团队成员时,我们通常会寻找这样的人,他们热衷于机器学习研究,与他人能良好合作,拥有良好的编程和数学技能,并拥有一些机器学习研究经验。
谷歌大脑里研究科学家和工程师之间怎么区分,责任有什么不同?很多公司里都有这样的情况,那就是科学家对于学习写明晰的产品代码并不感兴趣,而工程师则不关心研究/实验。
Samy Bengio:谷歌大脑的研究科学家能自由设置自己的研究计划(公司也期望如此)。他们也可以自己组队,联合起来解决更重要的项目。此外,我们还在团队中增加了一个(不断增长)的研究软件工程师团队(R-SWEs),这些软件工程师会帮助研究科学家实现他们的目标。软件工程师的工作包括扩展给定的算法、实现基线算法、运行各种实验,开源重要算法,将给定算法针对特定产品做优化等。这些都是我们研究项目的一个组成部分,因此软件工程师通常是我们论文的共同作者。
Dumitru Erhan:谷歌大脑团队中的“研究科学家”和“工程师”之间的界线有时(通常是)是非常模糊的。有许多人根据项目或他们当前兴趣的不同,随时转换身份。只是因为官方title是“研究员”,并不意味着他们就不会提供产品级别的代码了!
Pi-Chuan Chang:我是一名软件工程师(SWE),拥有CS博士学位。我现在是谷歌大脑的成员,但在谷歌之前我也在其他研究团队工作过。总的来说,我的印象是,谷歌大脑研究科学家和工程师之间的界限可能非常模糊,更多地取决于人的技能和偏好,而不是title。我个人喜欢做软件工程任务和研究项目的混合。我也喜欢与不同的人合作。我真的不在乎他们的头衔是什么。而且,作为“研究员”,能够编写干净可读的代码,对于良好和可重复的研究实际上是至关重要的。明晰的代码和文档对于沟通至关重要,对于研究人员和工程师都是如此。
把谷歌大脑和DeepMind这样的研究团队分开来的主要目的是什么?是因为 DeepMind 是被收购的,在签署合约上有一定的独立权限保留吗?
George Dahl:我们保持着合作,尽管只有少数的谷歌大脑研究人员在伦敦工作,且大多数DeepMind 研究人员都不在加州工作,时差有时候会带来挑战。两个团队都够大,我们也不缺合作者。但是,因为有很多牛人都同时在两个团队工作,我们还是有时间合作的。
我不赞成这样的想法:因为不在同一个团队中,所以内耗会增加。与两个生产竞品的研发团队不同,两个研究团队可以根据需要,在彼此的研究基础上轻松地生产和协作。谷歌大脑和 DeepMind 都致力于开放式机器学习研究并会定期发布。我们都像学术界一样享受高度的研究自由。我们开展研究的方式相似。我们在许多不同的应用领域和时间范围内进行一系列项目。谷歌大脑和 DeepMind 都会探索有影响力的应用。我们不局限于单独的研究领域,因为研究人员将自然地遵循自己的兴趣,并根据其他同期工作来定位他们的工作。
因为这两个团队都非常大,可以自我维持自我运转,所以不能也不必合并成一个。管理更大的组往往更难。
也就是说,大脑团队对 TensorFlow 负责,DeepMind 则不用。但就研究方面而言,我们真的非常相似。研究计划的任何差异都更可能是由每个团队的特定人员的具体兴趣所驱动的。
Google Brain组织结构是怎么样的?每个人都主要靠自己,还是都在某个专注于具体问题的团队里工作?每个团队每周都会和Jeff Dean、Geoff Hinton 开会吗?你们跟不在山景城的那些团队多久沟通一次?
Samy Bengio:谷歌大脑的研究科学家制定他们自己的研究目标,公司也鼓励他们与任何他们想要合作的人合作,实现更大的目标。我们确实有一个(相当扁平的)管理结构,但并不总是与研究项目保持一致。人们经常会与跟项目有关的小组开会,而不是管理意义上那种。不过,我们整个团队确实会定期开会(但是,频率是每几个星期一次,因为我们现在是一个非常大的团队)。我经常通过视频会议与几个不同办公室的同事开会(山景城,旧金山,蒙特利尔,剑桥,纽约,苏黎世)。
谷歌大脑评价体系:如何衡量“成功”这件事?
你们认为,团队做研究时,什么样的情况算成功?
Nicolas Le Roux:研究的成功可以有很多种形式。有些人可能对偏理论的方面感兴趣,当我们对现有问题的理解有所改善,那么我们就认为研究是成功的。在国际会议和期刊发表的文章也能量化地衡量研究工作的成功。机器学习研究的另一个重要部分是了解什么是使系统工作真正必要的,因此,我们也乐于见到任何提升知名系统性能的贡献。在这种情况下,外部出版物和对谷歌产品的影响都能用来衡量成功。一般来说,我们非常幸运的是,谷歌大脑有很好的兴趣组合,团队定期将项目投入生产,例如改进Google翻译,以及持续在顶会上的发表文章(今年谷歌大脑团队在NIPS被接收了23篇论文)。
Jasmine Hsu:对于谷歌大脑机器人团队来说,只有在真实世界运行机器人时,才算真正的成功。但是,这期间也有较小的里程碑,比如建立可扩展的机器人基础设施,发表有影响的研究,或实现干净的开源Tensorflow模型,也是一样算成功!
谷歌还会发布更新一代的TPU吗?
还会有新版本的TPU吗?谷歌会不会出售TPU(还是说只出租)?你们认为定制硬件将取代通用GPU吗?
Zak Stone(poiguy):我们已经公布了第一代TPUv1和第二代TPUv2。至于还会不会有新的版本,欢迎你来猜啊:)到目前为止,我们只宣布了在我们的数据中心部署这些TPU的计划。
我们也广泛使用GPU,并正在努力扩展TensorFlow支持NVIDIA V100等新型GPU。这个领域的发展速度非常快,人们对各种各样的应用感兴趣,所以不清楚任何一个平台将无限期地覆盖每个用例。GPU还具有机器学习以外的许多用途,并且对于需要高水平浮点精度的传统HPC计算,它们可能仍然是更好的选择。
原文发布时间为:2017-09-14
编译:闻菲,熊笑
本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”微信公众号
原文链接