Skip to main content

Jeff Dean发文回顾:深度学习黄金十年

 


过去十年,由于神经网络借助深度学习重新崛起,人工智能领域研究取得了空前的进展,计算机具有看到、听到并理解世界的能力,AI算法的进步也让其他科学领域的应用取得巨大进步。

 

谷歌AI的掌门人Jeff Dean最近写了一篇文章,研究了AI迅速发展的原因,包括专门用于加速机器学习硬件的进步和开源软件框架的问世,让使用机器学习变得更加高效,也让无数非从业者能够轻松使用AI模型应用。

 

Image

 

文章中还对过去十年中机器学习的应用领域进行了广泛的概述,并讨论了一些AI未来可能的发展方向。

 

这篇文章发表在了美国文理学会会刊 Dædalus 的 AI 与社会(AI & Society)特刊上,内容为17页,作者只有Jeff Dean一人。

 

Image

文章链接:https://www.amacad.org/publication/golden-decade-deep-learning-computing-systems-applications

 

深度学习的黄金十年


人类一直梦想着能制造出一台「会思考」的机器。

 

1956年,在达特茅斯学院组织的一次研讨会上,约翰 · 麦卡锡提出「人工智能」概念,一群数学家和科学家聚集在一起,「寻找如何让机器使用语言,形成抽象和概念,以解决人类现存的各种问题,并改进自己。」

 

Image

 

研讨会的参与者当时都乐观地认为,几个月集中的努力就能在这些问题上取得实际进展。

 

但几个月就解决,实在是太乐观了。

 

在接下来的50多年里,各种人工智能系统方法层出不穷,包括基于逻辑、基于规则的专家系统和神经网络。事实证明,对世界的逻辑规则进行编码并使用这些规则的方法是无效的。

 

作为1990年的本科生,Jeff Dean表示他对神经网络非常着迷,觉得它们似乎是创造智能机器的正确抽象,并确信人类需要的只是更多的算力,使更大的神经网络能够处理更大、更有趣的问题。

 

所以他的本科论文就是关于神经网络并行训练的,当时就深信如果我们能用64个处理器来训练一个神经网络,那么神经网络就能解决更多现实中的任务。

 

但事实再一次证明,对于1990年的计算机来说,我们需要的是多100万倍的计算能力才能取得一些进展。

 

直到 2011 年左右,人工智能才开始进入发展关键阶段,到2021年的十年时间里,我们离1956年那次会议提出的目标又进了一步。

 

软硬结合的进步


在硬件方面,与通用的计算机程序不同的是,深度学习算法通常由构成少量线性代数运算的不同方式构成:如矩阵乘法、向量点积和类似运算。由于需要操作的指令很少,所以有可能制造出专门用于支持这类计算的计算机或加速器芯片。

 

在21世纪初,一些研究人员开始研究如何使用图形处理单元(GPU)来实现深度学习算法。虽然最初设计用于绘制图形,但研究人员发现,这些设备也非常适合深度学习算法,因为与CPU相比,它们具有相对较高的浮点计算速率。

 

2004年,计算机科学家Kyong Su Oh和郑基全Keechul Jung展示了一种使用GPU的神经网络算法的近20倍改进。

 

2008年,计算机科学家Rajat Raina及其同事证明,对于一些无监督学习算法,使用GPU与基于CPU的最佳实现相比,其速度提高了72.6倍。

 

Image

 

后来专用于AI加速的模块、芯片陆续开发出来,例如谷歌的TPU,以8位浮点计算为目标,专门用于深度学习推理,将硬件每瓦特的速度和性能都提高了一到两个数量级。之后的TPU系统由更大规模的芯片构成,通过高速定制的网络将彼此连接起来,形成POD和大型超级计算机。

 

随着深度学习方法开始在图像识别、语音识别和语言理解方面显示出巨大的改进,随着计算密集型模型(在更大的数据集上训练)继续显示出改进的结果,机器学习领域真正「起飞了」。

 

有了硬件,计算机系统设计师开始开发软件框架,将深度学习模型扩展到计算更密集、复杂的领域。

 

Image

 

早期的一种方法是使用大规模分布式系统来训练单一的深度学习模型。谷歌的研究人员开发了DistBelide框架可以使用大规模分布式系统来训练单个神经网络,该模型比以前的神经网络大两个数量级。可以在YouTube视频中的大量随机帧上进行训练,通过一个大型网络和足够的计算和训练数据,它证明了模型中的单个人工神经元(神经网络的构建块)将学会识别人脸或猫等高级概念,尽管除了原始图像的像素外,从未获得任何关于这些概念的信息。

 

谷歌在 2015 年开发、开源的 TensorFlow,能够表达机器学习计算,并结合了 Theano 和 DistBelief 等早期框架的想法。到目前为止,TensorFlow 已被下载超过 5000 万次,是世界上最受欢迎的开源软件包之一。

 

TensorFlow 发布的一年后,PyTorch 于 2016 年发布,使用 Python 可以轻松表达各种研究思想而受到研究人员的欢迎。

 

JAX 于 2018 年发布,这是一个流行的面向 Python 的开源库,结合了复杂的自动微分和底层 XLA 编译器,TensorFlow 也使用它来有效地将机器学习计算映射到各种不同类型的硬件上。

 

TensorFlow 和 PyTorch 等开源机器学习库和工具的重要性毋庸置疑,它们让研究人员可以快速尝试想法。

 

随着世界各地的研究人员和工程师更轻松地在彼此的工作基础上进行构建,整个领域的进展速度也会加快!

 

机器学习的未来


Jeff Dean在论文中指出了机器学习研究社区正在兴起的研究领域,如果将他们结合起来的话,可能会产生一些有价值的结果。

 

1、稀疏激活模型,比如稀疏门控专家混合模型(sparsely-gated mixture of expertsE)展示了如何构建非常大容量的模型,其中对于任何给定的实例只有一部分模型被激活,比如包括2048个专家,其中激活2-3个。

 

2、自动化机器学习(AutoML),其中神经架构搜索(NAS)或进化架构搜索(EAS)等技术可以自动学习 ML 模型或组件的高效结构或其他方面以对给定任务的准确率进行优化。AutoML 通常涉及运行很多自动化实验,每个实验都可能包含巨量计算。

 

3、多任务训练,将几个到几十个相关任务的适当规模同时训练,或者从针对相关任务的大量数据训练的模型中迁移学习然后针对新任务在少量数据上进行微调,这些方式已被证明在解决各类问题时都非常有效。

 

一个非常有趣的研究方向是把以上三个趋势结合起来,其中在大规模 ML 加速器硬件上运行一个系统。目标是训练一个可以执行数千乃至数百个任务的单一模型。这种模型可能由很多不同结构的组件组成,实例(example)之间的数据流在逐实例的基础上是相对动态的。模型可能会使用稀疏门控专家混合和学习路由等技术以生成一个非常大容量的模型,但其中一个任务或实例仅稀疏激活系统中总组件的一小部分。

 

Image

 

每个组件本身可能正在运行一些类 AutoML 的架构搜索,以使组件的结构适应路由到它的数据类型。新的任务可以利用在其他任务上训练的组件,只要它有用就行。Jeff Dean 希望通过非常大规模的多任务学习、共享组件和学习路由,模型可以迅速地以高准确率来完成新任务,即使每个新任务的新实例相对较少。原因在于模型能够利用它在完成其他相关任务时已经获得的专业知识和内部表示。

 

构建一个能够处理数百万任务并学习自动完成新任务的单一机器学习是人工智能和计算机系统工程领域真正面临的巨大挑战。这需要机器学习算法、负责任的 AI(如公平性和可解释性)、分布式系统和计算机架构等很多领域的专业知识,从而通过构建一个能够泛化以在机器学习所有应用领域中独立解决新任务的系统,来推动人工智能领域的发展。

 

2010以来的十年确实堪称深度学习研究的黄金十年,1956年达特茅斯会议上提出的问题接连被攻克,在效果上,已经达到了机器能够看到、听到和理解世界的程度。有了AI,人类将继续创造更复杂、更强大且对日常生活有帮助的深度学习模型。得益于深度学习强大的创造力,人类的未来也充满了更多可能性。


参考资料:

https://www.amacad.org/publication/golden-decade-deep-learning-computing-systems-applications

Comments

Popular posts from this blog

CKA Simulator Kubernetes 1.22

  https://killer.sh Pre Setup Once you've gained access to your terminal it might be wise to spend ~1 minute to setup your environment. You could set these: alias k = kubectl                         # will already be pre-configured export do = "--dry-run=client -o yaml"     # k get pod x $do export now = "--force --grace-period 0"   # k delete pod x $now Vim To make vim use 2 spaces for a tab edit ~/.vimrc to contain: set tabstop=2 set expandtab set shiftwidth=2 More setup suggestions are in the tips section .     Question 1 | Contexts Task weight: 1%   You have access to multiple clusters from your main terminal through kubectl contexts. Write all those context names into /opt/course/1/contexts . Next write a command to display the current context into /opt/course/1/context_default_kubectl.sh , the command should use kubectl . Finally write a second command doing the same thing into ...

OWASP Top 10 Threats and Mitigations Exam - Single Select

Last updated 4 Aug 11 Course Title: OWASP Top 10 Threats and Mitigation Exam Questions - Single Select 1) Which of the following consequences is most likely to occur due to an injection attack? Spoofing Cross-site request forgery Denial of service   Correct Insecure direct object references 2) Your application is created using a language that does not support a clear distinction between code and data. Which vulnerability is most likely to occur in your application? Injection   Correct Insecure direct object references Failure to restrict URL access Insufficient transport layer protection 3) Which of the following scenarios is most likely to cause an injection attack? Unvalidated input is embedded in an instruction stream.   Correct Unvalidated input can be distinguished from valid instructions. A Web application does not validate a client’s access to a resource. A Web action performs an operation on behalf of the user without checkin...