百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

业界 | 微软的神经网络:深度学习可以走得「更深」

wptr33 2025-02-28 17:40 19 浏览

选自wired

作者:CADE METZ

机器之心编译出品

编译:吴攀

计算机视觉现已走进了我们的日常生活。Facebook可以识别你上传到的照片中的人脸。Google Photos应用可以识别狗、生日派对、墓地等多种事物和场景,这种能力能帮你检索相册中的照片。Twitter则可以在没有人类监管者的情况下识别鉴定色情图片。

以上的「视觉」能力都源于人工智能一个高效率的被称为「深度学习」的分支。尽管这项技术在近几年得到了人们的大肆吹捧,但微软研究院的一项新实验却显示这一切才刚刚开始;深度学习可以走得「更深」。

计算机视觉的革命已经进行了相当长的时间。2012年时我们终于迎来了一个关键转折点,来自多伦多大学的人工智能研究者赢得了一个名为ImageNet的比赛。ImageNet是一个机器图像识别比赛——看谁的技术能更好更准确地识别猫、汽车或云朵。2012年,多伦多大学的团队(包含研究者Alex Krizhevsky和Geoff Hinton教授)凭借深度神经网络登顶大赛冠军。这项技术可以通过检查大量图片的内容而学习识别图像,而不再像之前那样通过人类费力地手工编码来实现。

多伦多大学的胜利昭示了深度学习的未来。自那时起,互联网巨头(包括Facebook、谷歌、Twitter和微软)都开始使用类似的技术打造能与人类匹敌甚至超越人类的计算机视觉系统。微软研究部门负责人Peter Lee说:「我们不能说我们的系统能像人类一样『看见』东西,但我们可以说在非常具体、范围窄的任务中,我们可以通过学习做到和人类一样好。」

粗略地说,神经网络使用硬件和软件搭建出了类似于人类的神经元网络。这个想法可以追溯到上世纪80年代,但直到2012年,Krizhevsky和Hinton才开始发明在图形处理器(GPU)上运行神经网络的技术。GPU原本是为游戏和其它高性能图像软件设计的专用处理芯片,但事实证明,它们也非常适合驱动神经网络的那些数学。谷歌、Facebook、Twitter、微软和其它许多公司现在都使用GPU驱动的人工智能来处理图像识别等多种任务,包括互联网搜索和安全应用等。Krizhevsky和Hinton加入了谷歌。

现在,ImageNet最新赢家又指出了计算机视觉发展的下一步可能——更大范围的人工智能。上个月,来自微软的一个研究团队使用一种被称为「深度残留网络」(deep residual network)的新技术夺得了ImageNet的桂冠。从这项技术的名称中我们看不出什么;据他们描述,他们设计了一个远比典型设计复杂的神经网络——这个网络能够进行多达152层的复杂数学运算,而典型设计一般只有六七层。这预示着未来几年,微软这样的公司将能使用GPU和其它专用芯片的庞大集群来极大提升包括图像识别在内的各种各样的人工智能服务,包括识别语音甚至理解人类自然表达的口语。

换句话说,深度学习目前还远没有达到实力的极限。Lee说:「我们才刚刚在这个巨大的设计空间中起步,以找出下一步的方向。」

神经元层

深度神经网络是按层排布的,每一层都运行着不同的数学运算(即:算法)。一层的输出又会成为下一层的输入。举例说,如果一个神经网络是专为图像识别设计的,那么其有一层是用于搜索图像中的一组特定的特征(如:图片的边缘、角度、形状、纹理等),后面的运算层则用于搜索其它特征。这些层是神经网络「深度」的关键。「一般而言,如果你让这些网络更深,那么它们的学习能力也就越强。」北卡罗来纳大学研究者Alex Berg说,他帮助监督了ImageNet的比赛。

目前典型的神经网络设计一般包含六七层,部分可以达到20到30层,但由Jian Sun领导的微软团队则实现了152层!本质上这个神经网络在图像识别上能表现得更好,因为它能够监测识别更多的特征。Lee说:「还有非常多的微妙的特征可以学习。」

据Lee和一些非微软的研究者介绍,过去这种非常深的神经网络是不可能实现的。部分原因是当数学信号从一层传输到另一层时,信号会被稀释并逐渐消失。Lee解释说,微软建造的神经网络可以在不需要某些层时跳过它们,信号只传递给有需要的层,从而解决了这一问题。Lee说:「当进行这样的跳过时,我们可以更进一步地保证信号的强度。事实证明这种方法给计算精度带来了很大的有益影响。」

Berg说和之前的系统相比,这一方法有显著的差异,而他相信其它公司和研究者也会进行跟进。

深度的困难

另一个问题是建造这样的大型神经网络是极其困难的。为了确定每一层的工作模式以及与其它层的通信方式,需要将不同的特定算法部署到每一层上,但这却是一个极其艰难的任务。但微软在这里也有技巧。他们设计了一个能够帮助他们建造这些网络的计算系统。

Jian Sun解释说,研究人员可以识别一些可能有用的大型神经网络部署方式,然后该计算系统可以在一系列的可能性上对此进行循环计算,直到确定出最佳选择。「大部分情况下,经过一些尝试后,研究人员会学到一些东西,然后反思,又开始为下一次尝试做新的决定。你可以将其看作是『人工辅助搜索』。」

据深度学习创业公司Skymind的首席研究专家Adam Gibson介绍,类似的做法现在越来越普遍。这被称为「超参数优化」(hyper parameter optimization)。他说:「人们可以让一群机器跑起来,一次运行10个模型,然后找出最好的那个使用就行了。他们可以输入一些基本参数——基于直觉确定——然后机器在此基础上确定什么才是最好的解决方案。」Gibson指出,去年Twitter收购的一家公司Whetlab就提供了类似的「优化」神经网络的方法。

「硬件问题」

正如Peter Lee和Jian Sun所说的那样,这样的方法并不完全是「暴力破解」的问题。「如果有非常非常多的计算资源,人们可以想象制造一个巨大的『自然选择』配置,其中的进化力量可以通过一个巨大的可能性空间帮助引导暴力破解搜索,」Lee说,「但目前世界上还没有这样的可用计算资源……目前而言,我们还仍然只能依赖那些非常聪明的研究者,比如Jian。」

但Lee同时也说,多亏了新技术和充满GPU的计算机数据中心,深度学习获得了巨大的可能应用领域。这家公司的任务中很大一部分都只是获取用来探索这些可能性的时间和计算资源。「这项工作极大地扩张了设计空间。就科学研究而言,覆盖的领域已经在指数式扩张了。」Lee说,而这也已经突破了图像识别的范畴,进入到了语音识别、自然语言理解等其它任务中。

Lee解释说,也正因为覆盖的领域越来越多,微软在提高其GPU集群的运算能力的同时也在探索使用其它的专用处理器,其中包括FPGA——一种能针对特定任务(如深度学习)编程的芯片。「另外我们的研究者还在探索实验一些更具实验性的硬件平台,」他说。而且这项工作已经在全世界的技术和人工智能领域掀起了波澜。去年夏天,英特尔完成了其历史上最大的并购案,收购了专注FPGA的Altera。

Gibson说,事实上深度学习或多或少已经变成了一个「硬件问题」。是的,我们仍然需要顶级研究者来引导神经网络的创造;但渐渐地,对新方法的寻找变成了在更强大的硬件组合上寻找暴力破解算法的问题。Gibson指出,尽管这些深度神经网络工作效果非常好,但我们并不清楚它们为什么能工作;其中诀窍只在于找到能得到最佳结果的复杂算法组合。而更多更好的硬件可以缩短这条路径。

最终,有能力建立最强大的硬件网络的公司将顺理成章地领先。现在也只有谷歌、Facebook和微软了。那些擅长利用深度学习的公司只会越过越好。

本文由机器之心原创编译,转载请联系本公众号获得授权

?------------------------------------------------

机器之心是Comet Labs旗下的前沿科技媒体。Comet Labs是由联想之星发起、独立运作的全球人工智能和智能机器加速投资平台,携手全球领先的产业公司和投资机构,帮助创业者解决产业对接、用户拓展、全球市场、技术整合、资金等关键问题。旗下业务还包括:Comet旧金山加速器、Comet北京加速器、Comet垂直行业加速器。

加入机器之心(全职记者/实习生):hr@almosthuman.cn

投稿或寻求报道:editor@almosthuman.cn

广告&商务合作:bd@almosthuman.cn

↓↓↓点击「阅读原文」查看机器之心网站,获取更多精彩内容。

相关推荐

oracle数据导入导出_oracle数据导入导出工具

关于oracle的数据导入导出,这个功能的使用场景,一般是换服务环境,把原先的oracle数据导入到另外一台oracle数据库,或者导出备份使用。只不过oracle的导入导出命令不好记忆,稍稍有点复杂...

继续学习Python中的while true/break语句

上次讲到if语句的用法,大家在微信公众号问了小编很多问题,那么小编在这几种解决一下,1.else和elif是子模块,不能单独使用2.一个if语句中可以包括很多个elif语句,但结尾只能有一个else解...

python continue和break的区别_python中break语句和continue语句的区别

python中循环语句经常会使用continue和break,那么这2者的区别是?continue是跳出本次循环,进行下一次循环;break是跳出整个循环;例如:...

简单学Python——关键字6——break和continue

Python退出循环,有break语句和continue语句两种实现方式。break语句和continue语句的区别:break语句作用是终止循环。continue语句作用是跳出本轮循环,继续下一次循...

2-1,0基础学Python之 break退出循环、 continue继续循环 多重循

用for循环或者while循环时,如果要在循环体内直接退出循环,可以使用break语句。比如计算1至100的整数和,我们用while来实现:sum=0x=1whileTrue...

Python 中 break 和 continue 傻傻分不清

大家好啊,我是大田。今天分享一下break和continue在代码中的执行效果是什么,进一步区分出二者的区别。一、continue例1:当小明3岁时不打印年龄,其余年龄正常循环打印。可以看...

python中的流程控制语句:continue、break 和 return使用方法

Python中,continue、break和return是控制流程的关键语句,用于在循环或函数中提前退出或跳过某些操作。它们的用途和区别如下:1.continue(跳过当前循环的剩余部分,进...

L017:continue和break - 教程文案

continue和break在Python中,continue和break是用于控制循环(如for和while)执行流程的关键字,它们的作用如下:1.continue:跳过当前迭代,...

作为前端开发者,你都经历过怎样的面试?

已经裸辞1个月了,最近开始投简历找工作,遇到各种各样的面试,今天分享一下。其实在职的时候也做过面试官,面试官时,感觉自己问的问题很难区分候选人的能力,最好的办法就是看看候选人的github上的代码仓库...

面试被问 const 是否不可变?这样回答才显功底

作为前端开发者,我在学习ES6特性时,总被const的"善变"搞得一头雾水——为什么用const声明的数组还能push元素?为什么基本类型赋值就会报错?直到翻遍MDN文档、对着内存图反...

2023金九银十必看前端面试题!2w字精品!

导文2023金九银十必看前端面试题!金九银十黄金期来了想要跳槽的小伙伴快来看啊CSS1.请解释CSS的盒模型是什么,并描述其组成部分。答案:CSS的盒模型是用于布局和定位元素的概念。它由内容区域...

前端面试总结_前端面试题整理

记得当时大二的时候,看到实验室的学长学姐忙于各种春招,有些收获了大厂offer,有些还在苦苦面试,其实那时候的心里还蛮忐忑的,不知道自己大三的时候会是什么样的一个水平,所以从19年的寒假放完,大二下学...

由浅入深,66条JavaScript面试知识点(七)

作者:JakeZhang转发链接:https://juejin.im/post/5ef8377f6fb9a07e693a6061目录由浅入深,66条JavaScript面试知识点(一)由浅入深,66...

2024前端面试真题之—VUE篇_前端面试题vue2020及答案

添加图片注释,不超过140字(可选)1.vue的生命周期有哪些及每个生命周期做了什么?beforeCreate是newVue()之后触发的第一个钩子,在当前阶段data、methods、com...

今年最常见的前端面试题,你会做几道?

在面试或招聘前端开发人员时,期望、现实和需求之间总是存在着巨大差距。面试其实是一个交流想法的地方,挑战人们的思考方式,并客观地分析给定的问题。可以通过面试了解人们如何做出决策,了解一个人对技术和解决问...