杰弗里·辛顿(Geoffrey Hinton)教授一生笃信人工神经网络。不管人工神经网络是热还是冷,也不管外界如何反应,他都从没有放弃过人工神经网络,甚至可以说从未更换过研究方向。幸运的是,他的坚持打动了一批有识之士,得到一批“伯乐”的认可。也许,这些“伯乐”似乎根本不在乎辛顿教授最终是否取得重大成果,仅仅因为他的这份坚持而被感动。
2004年,转入多伦多大学的辛顿教授得到加拿大高等研究院(CIFAR)一笔5年共250万美元的经费资助,开展神经计算和自适应感知(Neural Computation and Adaptive Perception, NCAP)项目。2006年,辛顿团队先后在《神经计算》(Neural Computation)期刊和《科学》(Science)杂志上发表了两篇关于深度神经网络的论文。
然而,很多开创性工作的价值往往在一开始并不能被人们认识,哪怕是同一领域的学术同行也未必都认同新技术路线。即使是发表在《科学》这样的顶级学术刊物上,辛顿团队关于深度神经网络的工作在发表后,关注者也是寥寥无几。例如Reducing the dimensionality of data with neural networks这篇论文,2007~2010年期间每年引用次数仅为100次左右,而2019~2021年期间每年引用次数则跃升至2600次左右(见图1),提升了20多倍。今天,这两篇论文当之无愧地被认为是深度学习领域的里程碑之作,开启了新一轮AI浪潮的新篇章。今年,辛顿教授因为在人工神经网络领域的卓越贡献而荣获诺贝尔物理学奖,但谁能想到他的一些开创性论文也曾被如此冷落。
图1 辛顿团队于2006年发表在《科学》的论文引用情况
2005年,李飞飞从加州理工学院博士毕业,她的博士工作主要是实现了一个面向计算机视觉研究的数据集Caltech 101。这个数据集共包含了101类、9146张标注好的图片,每一类有40~800张图片,可用于评估和设计计算机视觉识别算法。博士毕业后,李飞飞加入了伊利诺伊大学厄巴纳-香槟分校(UIUC)担任助理教授,那时她开始反复思考一些新问题:更大的数据集对计算机视觉会产生什么影响?如何产生更大的数据集?……
2006年,李飞飞转到普林斯顿大学计算机系任教,并于2007年初与同在计算机系的李凯教授一起启动ImageNet项目,目标是建立一个包含上万类、上千万张图片的数据集。同年,李凯教授的博士生邓佳也全力投入到这个项目中。然而,当时的ImageNet项目并不被看好,申请美国国家自然基金委(NSF)经费屡屡碰壁,但李飞飞教授与李凯教授都坚信数据的作用,哪怕没有美国的国家级经费支持,他们仍决定先依靠自有经费把工作开展起来。李凯教授是笔者2010~2012年在普林斯顿大学的博士后导师,他曾用一个形象的类比向我们讲述ImageNet项目背后的逻辑:如果总是用小学生的课本让一个人学习,则无法培养出大学生。这个类比形象地体现了数据的重要性。
关于ImageNet的论文于2009年正式发表,但其命运就如辛顿那篇发表在《科学》上的论文,也未受到同行的广泛关注。为了推广ImageNet,李飞飞团队决定发起一个竞赛,然而前两届推广效果依然不尽如人意——2010年收到35份提交结果,而2011年一下子滑落到仅仅13份提交结果,这预示着ImageNet似乎越来越不受同行待见。不过,金子总会闪光。2012年的ImageNet竞赛成为了推动这一轮AI浪潮的关键转折点,从而载入AI技术发展史册。
2001年,斯坦福大学威廉·达利(William Dally)教授团队在处理器微结构旗舰期刊IEEE Micro上发表了一篇题为“Imagine: Media Processing with Streams”的论文,正式介绍Imagine项目,一个可加速多媒体应用的流处理器(stream processor)结构。这项工作2006年11月,第一款GeForce 8800 GTX GPU发布,包含128个流处理器,单精度浮点运算性能达到345.6 GFLOPS,访存带宽86.4 GB/s,远高于同期CPU性能。与此同时,斯坦福大学一位年轻的博士生伊恩·巴克(Ian Buck)在导师帕特·汉拉汗(Pat Hanrahan)教授(2019年ACM图灵奖得主)的指导下开展如何方便且高效地发挥GPU能力的研究。2004年,巴克发表了一篇题为“Brook for GPUs: Stream Computing on Graphics Hardware”的论文,为GPU设计了一套支持流编程(stream programming)语言的编译器和运行时系统Brook,从而让开发者能够像在通用CPU上那样在GPU上编程。这项工作旋即得到英伟达的青睐,于是巴克在博士毕业后立刻加入英伟达,带领两位工程师创立了统一计算设备架构(Compute Unified Device Architecture, CUDA)项目。2007年,CUDA 1.0正式发布,全面适配GeForce 8800系列GPU。随后,UIUC胡文美教授团队在GeForce 8800 GPU上用CUDA实现了一些程序,性能比在通用CPU上高出10倍到400倍不等,充分展示了GPU的高性能与可编程性。至此,英伟达的GPU生态大厦的地基已基本构成,英伟达的GPU开始被称为GPGPU(General Purpose GPU,通用图形处理器)。彼时的GPU生态大厦其实还缺一块——应用。当传统上用于图形处理的GPU具备了高性能浮点运算能力,并且能像通用CPU那样可编程时,它可以用来做什么呢?对于这个问题,中国的计算机科学家给出了答案——科学计算与超级计算机。2007年,国防科技大学杨学军院士带领团队在国际计算机体系结构旗舰会议ISCA上发表题为“A 64-bit Stream Processor Architecture for Scientific Applications”的学术论文,揭示了流处理器架构可大幅加速科学计算。这项工作不仅为具备大量流处理器的GPU开辟了新的应用场景,也为超级计算机架构设计开辟了一条新的技术路径,即采用“CPU+GPU”异构结构提升性能。很快引起了英伟达(NVIDIA)公司的关注,英伟达向达利教授伸出了橄榄枝。随后在2003年,达利教授担任英伟达的顾问,参与GeForce 8800系列GPU的微架构设计,指导如何在GPU中加入流处理器,让GPU具备浮点运算能力。2006年11月,第一款GeForce 8800 GTX GPU发布,包含128个流处理器,单精度浮点运算性能达到345.6 GFLOPS,访存带宽86.4 GB/s,远高于同期CPU性能。与此同时,斯坦福大学一位年轻的博士生伊恩·巴克(Ian Buck)在导师帕特·汉拉汗(Pat Hanrahan)教授(2019年ACM图灵奖得主)的指导下开展如何方便且高效地发挥GPU能力的研究。2004年,巴克发表了一篇题为“Brook for GPUs: Stream Computing on Graphics Hardware”的论文,为GPU设计了一套支持流编程(stream program-ming)语言的编译器和运行时系统Brook,从而让开发者能够像在通用CPU上那样在GPU上编程。这项工作旋即得到英伟达的青睐,于是巴克在博士毕业后立刻加入英伟达,带领两位工程师创立了统一计算设备架构(Compute Unified Device Architecture, CUDA)项目。2007年,CUDA 1.0正式发布,全面适配GeForce 8800系列GPU。随后,UIUC胡文美教授团队在GeForce 8800 GPU上用CUDA实现了一些程序,性能比在通用CPU上高出10倍到400倍不等,充分展示了GPU的高性能与可编程性。至此,英伟达的GPU生态大厦的地基已基本构成,英伟达的GPU开始被称为GPGPU(General Purpose GPU,通用图形处理器)。彼时的GPU生态大厦其实还缺一块——应用。当传统上用于图形处理的GPU具备了高性能浮点运算能力,并且能像通用CPU那样可编程时,它可以用来做什么呢?对于这个问题,中国的计算机科学家给出了答案——科学计算与超级计算机。2007年,国防科技大学杨学军院士带领团队在国际计算机体系结构旗舰会议ISCA上发表题为“A 64-bit Stream Processor Architecture for Scientific Applications”的学术论文,揭示了流处理器架构可大幅加速科学计算。这项工作不仅为具备大量流处理器的GPU开辟了新的应用场景,也为超级计算机架构设计开辟了一条新的技术路径,即采用“CPU+GPU”异构结构提升性能。此后,GPU便开始出现在超级计算机排行榜(Top500)上,并逐步成为主流:2009年11 月,采用Intel CPU+ATI GPU异构结构的“天河一号”名列Top500排行榜第五;2010年6月,采用Intel CPU+Nvidia GPU异构结构的“曙光 6000”在Top500排行榜跻身第二;2010年11月,采用Intel CPU+Nvidia GPU+FT-1000异构结构的“天河一号A”荣登Top500榜首,打破了长期以来美日霸榜的格局。在四川宜宾,长江、金沙江、岷江三江汇流于此。有人说,长江自此被称为“长江”,一路奔流向东,最终成为一条波澜壮阔的大江。今天,人们也常说这一轮AI浪潮离不开三个要素,即算法、数据与算力。那它们又在何时何处汇流?答案是2012年的ImageNet竞赛。如前所述,ImageNet在2009年正式发布后并未得到很大的反响。为了推广ImageNet,李飞飞教授团队决定启动一项基于ImageNet的物体识别竞赛。2010年第一届竞赛冠军识别的错误率为28%,2011年第二届竞赛冠军错误率降到约26%。2012年的第三届竞赛正是转折点——辛顿教授与其两位学生伊尔亚·苏茨克维(Ilya Sutskever)和亚历克斯·克里切夫斯基(Alex Krizhevsky)带着使用英伟达GPU+CUDA训练出来的深度神经网络AlexNet参加竞赛,将错误率大幅降低了近11个百分点,高出第二名41%。这个结果不仅让ImageNet竞赛组织者李飞飞教授与邓佳博士感到震惊,也震撼了整个AI学术界。余凯博士的故事是一个典型案例:他是第一届ImageNet竞赛冠军团队的核心成员,更能深刻地认识到AlexNet背后深度学习技术的潜在影响。余凯博士于2012年11月在中国科学院计算技术研究所作了一场学术报告“Recent Advances on Deep Learning”,对比并分析了2010—2012年三届ImageNet竞赛背后的技术变革,旗帜鲜明地提出深度学习时代已经到来。彼时,他回国加入了百度公司,随后创立百度深度学习研究院,投入到深度学习浪潮中。算法、数据、算力汇流而成的“大江”势不可挡,在学术界掀起了惊涛骇浪。此后几届ImageNet 竞赛冠军都采用深度学习技术,并在短短的四年内就将识别的错误率降低到3%(2016年冠军成绩),超越了人类(见图2)。
图2 历届ImageNet竞赛冠军的识别错误率
毋庸置疑,深度神经网络在今天已被视为一种颠覆性技术,三位深度学习先驱辛顿、杨立昆(Yann LeCun)和约书亚·本吉奥(Yoshua Bengio)也被授予2018年度ACM图灵奖。但是,辛顿教授在2006年发表两篇关于深度神经网络的论文时,即使是大多数同行也并没认识到这将会在未来成为颠覆性技术,直到2012年的ImageNet竞赛。进一步,虽然ImageNet竞赛让学术同行感知到了深度学习技术的颠覆性,但彼时绝大多数企业、风投机构、政府部门以及社会大众都还未感知到深度学习将会掀起新一轮AI浪潮,直到2016年AlphaGo战胜围棋世界冠军李世石。改变人的思想和观念也许是世界上最难的事情之一。
可见,对颠覆性技术的识别与感知并不容易,因为颠覆性技术可能是一系列各自发展的技术在某个时刻的汇合,就如算法、数据、算力三条技术线在2012年ImageNet竞赛上的汇合。但是,这次汇合离不开辛顿教授几十年来一直坚持对神经网络的研究,离不开李飞飞教授坚持认为数据对于AI的作用不可替代,离不开黄仁勋率领英伟达不断追求GPU的高性能和易编程。
在对这一轮AI浪潮的技术溯源过程中,笔者得到了三点启示:1.每一条技术线都值得探索。从科技管理者角度来看,要鼓励和支持有人去探索一些不随大流的技术路线,就如那批始终支持辛顿教授的“伯乐”;对于科研团队来说,找到自己坚信的事很重要,一旦找到,那就在现有资源条件下努力做到最好,然后坚持、坚持、再坚持,用这份坚持来打动“伯乐”。2.信息传播与交换对于促成技术组合很重要。从信息传播视角来看,ImageNet竞赛是一种信息扩散方式,超级计算机Top500排行榜也是,通过“出圈”让更多人了解到了超算背后的技术信息。辛顿教授团队一定是获取到了这些信息,才会用GPU训练AlexNet参加ImageNet竞赛。因此,当工作做到一定阶段,有必要用合适的方式扩散信息。3.一定要将工作做到让外行觉得“好用”。要促成技术组合的产生,往往意味着一项技术要能被来自其他领域的外行方便使用。ImageNet能支撑竞赛表明它很容易上手,英伟达开发CUDA正是为了让GPU更好用。可以说,正是因为ImageNet和GPU的“好用”,才促成了算法与数据、算力的汇流。
(本文仅代表个人观点,不代表任何单位和机构;个人接触到的信息有限,因而文中资料和观点难免存在偏颇,恳请相关专家指正。)
CCF高级会员、开源发展委员会副主任,2019年“CCF-IEEE CS青年科学家奖”得主,CCCF前编委。中国科学院计算技术研究所研究员。主要研究方向为计算机系统结构,包括处理器芯片敏捷设计、开源芯片等。baoyg@ict.ac.cn