摘要: 人工智能(AI)是近年来很火的一个领域,Google、Facebook、苹果、微软等巨头都在发力。而可以帮助进行语音识别、语言翻译及提供计算机视觉的深度学习则是最近的新宠。 尽管苹果有
人工智能(AI)是近年来很火的一个领域,Google、Facebook、苹果、微软等巨头都在发力。而可以帮助进行语音识别、语言翻译及提供计算机视觉的深度学习则是最近的新宠。
尽管苹果有Siri,Facebook成立了人工智能实验室,但业界普遍的看法是Google是人工智能领域竞赛的领跑者。因为最近有深度学习的领军人物Geoff Hinton的加盟,因为它展示过自己会自主学习的深度学习系统,也因为它与NASA联合成立的人工智能实验室等吸引人眼球的东西。在计算机视觉和语音识别方面,Google还保持着几个记录。
但现在微软的研究团队要向Google叫板,我的深度学习系统Adam要比你的Google Brain快。微软称,在ImageNet 22K标杆测试上,Adam在识别图像方面的熟练程度是之前系统的两倍,使用的机器则要少得多,仅为其1/30。ImageNet 22K是用来测试深度学习系统计算机视觉(自动识别图像能力)能力的数据库,共有150万张图片,图片类型多达22000种,此前只有少数系统能处理这么多类型,其中就包括Google Brain,Google的Android语音识别和Google Maps等的AI计算都要靠Google Brain。
那么Adam是怎么做到的呢?
Adam并不是在算法上进行突破,而是优化了机器数据处理方式,同时调整了机器的通信方式。Adam是微软研究员Trishul Chilimbi(Bing的基础设施是他弄的)想出来的产物,其训练方式不太算是人工智能的科学,而是大规模计算机系统的艺术。
与深度学习系统类似,Adam也运行于一组标准服务器(由微软Azure提供)之上。深度学习更加接近于创造了神经网络的大脑的运作方式,而这些神经网络往往需要大规模的服务器去模拟。Adam的独特之处在于使用了异步(asynchrony)技术。
我们知道,随着计算机系统越来越复杂,系统的各个组件之间的信息交换变得越来越困难,而异步可以缓解这一问题。所谓的异步,指的是将系统拆分为基本能独立运行的各个部分,然后再把计算结果合并起来。合并结果在智能手机和笔记本上是比较容易实现的,因为计算可以分布到许多计算机芯片上,但是跨许多不同计算机实现这一点就没有神经网络那么成功。此前许多研究机构和公司(包括Google在内)都是靠大型异步系统来实现这一点的,而现在微软利用了威斯康星大学研发的一种名为“HOGWILD!”的技术来实现异步系统。
HOGWILD!当初的设计主旨是让机器内的每一个处理器工作更加独立。甚至可以允许不同的芯片同时向同一个内存地址写入,即操作相互覆盖也没问题。对于大多数系统来说,这种做法是很糟糕的,因为会引发数据冲突,但是在一些情况下这么做是没问题的。威斯康星大学已经证明,在小型计算系统里,数据冲突的几率是很低的。这样的话,单台机器的速度可以显著提升。Adam则更进一步,把HOGWILD!的异步应用到整个计算机网络上。
神经网络非常稠密,所有的机器都要向主服务器发送更新,数据冲突风险很高。但是由于这种更新往往都是递增性的更新,所以发生冲突的结果往往是一致的。举个例子,机器1可能要给某个现值为5的变量加1,机器2则要给这个变量加3,这种情况下,系统不会控制两台机器的更新次序,因为最后结果是一样的,都是9。
这样一来,微软的神经网络在理解图像之类的东西是就可以快了许多且更精确。百度的深度学习专家Andrew Ng对此的评价是:
很有侵略性的做法,不过我知道为什么这种做法能省很多计算,好想法,很有趣。
令Ng感到惊讶的是,Adam运行于传统的计算机处理器而非GPU(图形处理器)上,后者往往是偏数学型计算的首选。许多深度学习系统都转向GPU以避免通信瓶颈,但是Adam却走了不同的路线。
神经网络需要大规模的数据,这种量已经超出了单台机器CPU的能力范围,所以才需要跨机器。用GPU可以更快地处理数据。问题是如果单个GPU或有多GPU的单台服务器无法容纳下整个AI模型的话,系统就会停转。因为数据中心的通信系统速率赶不上GPU处理信息的速度会导致数据拥塞。因此有些专家称GPU不适合扩展到大型神经网络上。Chilimbi也持同样的看法。
不过,由于微软并没有公布优化网络的细节,业界的专家对于Adam如何实现微软所声称的性能提升并不知晓。
目前该项目仍处于萌芽阶段。微软内部用户可以通过手机抓拍一个对象之后提交给Adam让它来识别。微软研究院负责人Peter Lee 称,他已经用Adam识别出了一种狗和一种害虫,目前该app尚未有面向公众推出的计划,但显然这种技术在电子商务、机器人和情感分析等方面都有广泛用途。微软内部也在讨论用FPGA(现场可编程逻辑门阵列)提高Adam性能的可能性。