上个月底,李宇春一支据说筹备时间长达6个月的mv正式发布。这首基于英特尔人工智能技术的MV,将电子曲风的浪漫情歌与尖端科技结合,一上线即火遍全网。在11月15日刚刚结束的2017英特尔人工智能大会上,英特尔中国研究院院长宋继强揭秘了这支有三维人脸特效的音乐视频是如何实现的。
此外,英特尔全球副总裁兼中国区总裁杨旭本次大会上宣告了英特尔在人工智能领域的三大战略方向:创新技术、广泛合作、推动应用。本次大会以全栈作为核心关键词,发布了从前端到后端的一系列最新研究成果。
例如,英特尔在近期推出了BigDL,这是一款可以帮助开发者在基于Apach Spark大数据集群上构建深度学习应用的软件框架,能够和大数据生态系统中很多其他组件,比如说分布式的存储、SQL的查询、流式计算、图式计算等等结合在一起,从而将深度学习技术和基于英特尔架构的大数据分析平台相结合,使得深度学习更方便地被应用在大数据和数据科学社区。
英特尔也为业内提供了强大的整体性的软件优化,例如MKL-DNN、DAAL函数库,针对TensorFlow、Caffe、Theano、CNTK等框架的支持和优化,以及平台层面的Saffron等创新应用,正在让基于英特尔架构开发和部署AI成为每一家企业或者服务提供商都轻而易举可以达成的目标。
技术研发方面,英特尔中国研究院院长宋继强在本届AI大会上做了题为《人工智能前瞻性研发》的演讲。在演讲中,他介绍了上个月英特尔与李宇春合作发布的第一支有三维人脸特效的音乐视频是如何实现的。这基于英特尔中国研究院过去几年研究的一整套人脸分析技术的算法框架,包括从二维的人脸图像中提取出特征点,特征点进一步分析识别出人的属性、身份和面部表情。
宋继强还重点介绍了英特尔推出的业内首款可以自我学习的芯片Loihi芯片。这是英特尔推出的业内首款可以自我学习的芯片,可以帮助我们解决很多具备挑战性的问题,比如图像的稀疏编码,对于复杂约束的满足,比如做填字游戏、速读,复杂模式的匹配、动态学习和适应的过程,IT系统怎么可能快速适应各种变化场景。这一产品和冯诺伊曼架构完全不同。而且它会直接受益于摩尔定律的推动。很小的芯片上可以做更密的神经元,功耗更低。
以下为宋继强演讲速记,大数据文摘在不改变愿意的前提下做了部分删改。
刚才我们的同事分享了英特尔现有的一些产品和方案,我作为研究院的科学家,给大家分享英特尔在人工智能方面的一些前瞻性的研究。
现在人工智能定义范围内是要解决设备怎么自主的跟人交互的整个过程,包括从感知世界到能够理解世界和作出相应的反馈。作出反馈最后靠的是终端的设备,而不是靠云端的大脑,如何能把人工智能这些算法的创新很好的应用到前端设备里面去是一个很重要的问题。先看一个例子。
李宇春大家都认识,是年轻一代的偶像,她和英特尔联合打造了全球第一支有三维人脸特效的音乐视频,这里应用了英特尔在消费级机器上,比如家里的PC、笔记本电脑可以用到的三维人脸实时追踪重建的技术,可以在脸上做出很多有趣的特效。
图:李宇春的新歌《今天雨,可是我们在一起》的MV里,和英特尔联合打造了全球第一支有三维人脸特效的音乐视频
大家自己也可以体验,怎么样在一台PC上就可以完成在你脸上叠加各种三维特效。这是消费级电脑上实现的。这件事情我给大家拆解一下,这一个技术能体现到今天的效果是经过了好几年好多个步骤的研究。英特尔中国研究院过去几年研究了一整套人脸分析技术的算法框架,包括从二维的人脸图像中提取出特征点,特征点进一步分析识别出人的属性、身份和面部表情。
我们简单分成三个步骤:
第一阶段FA1.0(Face Analytics), FA是人脸分析的缩写。最开始用简单算法做简单的事情,这时候是比较常用的手工定义特征的方法,能够做面部的属性识别,性别、年龄、是否在微笑。
第二阶段我们引入深度学习。同时和英特尔处理器架构结合,在英特尔的消费级设备上做到人脸检测、跟踪、识别并做动态表情的识别,这些都是在二维里面做的。
到3.0版本提升到三维。可以从二维图像甚至单张图像重建一个三维人脸,三维人脸上想叠加什么叠加什么。
三维人脸也是需要很多的训练。这样一张脸是通过很多的三维人脸的模型训练出来的参数话的可变形人脸模型,300多个参数控制人脸的变形,可以变成李宇春的脸也可以变成我的脸,只需要控制参数。怎么样从二维人脸中提取特征映射到三维人脸的参数空间把它变成你想要的脸呢?这个就通过我们最近新研发的一套深度学习的算法,用几十万张图片训练出来。能够做到普通的PC上也可以把这件事情做好。这样一个功能可以用在虚拟现实、增强现实、3D游戏里很多场景。
人脸技术已经分阶段应用在英特尔不同种类的产品,包括英特尔集成显卡的加速部件、我们实感技术的SDK,还有一些前端设备的应用,比如说人脸美化应用,另外还有产业级的端到端的解决方案的应用,所以是非常多的应用领域。
我们现在知道了人脸上的部件是怎么动的,眉毛上扬,嘴角下撇,这些代表什么意义呢?这些代表了人的表情,我们在未来的智能设备和人交互的过程一定要了解人的情感,如果不了解人的情感怎么做好场景相关的交互。所以多模态的情感识别方面我们做了很长时间研究,多模态是不仅看视觉信息,还看声音、文字的相关信息。早期我们也是从传统的技术入手,用手工特征提取方式做了一套运动单元感知特征,也就是说它不是标准照标准视野让你看人的表情是日常的场景甚至电影场景有遮挡、有阴暗,仍然把人脸表情识别出来,这个比赛在2015年参加的时候我们拿到第一名,这是非深度学习算法。2016年我们把深度学习的网络植入,这时候我们拿到第二名,我们速度比别人快100倍,基于这样的结果我们得到了最有影响力的论文奖。今年我们参赛的时候我们用新的算法,及格了,我们把准确率提到60%以上,比我们自己提高了5.5%。
这个新的解决方案我们到底加入了什么呢?聚合监督情感识别算法,这个聚合监督什么意思?如果说我把深度学习的一些模型放到情感识别这个领域里面来,精度是靠训练过程反复训练得到的,如果按照传统方式只在输出层提供监督信号往回训练,可能训练效果不是那么好。所以我们做了一些创新,在它的网络浅层、中层和底层分别输入,分别提供监督信号。同时把不同层反馈回来的评分做了概率融合。这样训练效果会比别人好很多。这样的结果让我们现在处于这个领域的世界前列。
大家听说过很多关于ImageNet比赛,它是用很大的、上千万级别的图像去训练,也是训练出很大的深度的神经网络,这个网络的效果权衡好。2015年,当时是领先的,微软提出了一个152层,现在领先的视觉公司都说千层以上,而且很宽,那意味着这样的网络模型训练出来以后计算的复杂度、空间复杂度都很大,没有办法放在前端设备上用。其实就要靠模型去压缩,也就是说训练出一个大模型后想办法在保持精度基本不变的情况下压小,再部署到前端设备商。压缩有很多种方法,英特尔研究院的方案是采取了低精度深度压缩三部曲,获得了百倍压缩比,性能接近无损。第一步给网络调结构,网络的连接结构不重要或者根本不需要的边去掉,我们说它是“动态网络手术”,动刀以后再来第二步,现在深度神经网络的模型的参数、权值都是浮点,比如32位浮点,这样存储要大,计算也要浮点运算,能把它变成定点或者几位的Bit更好,怎么做?很考验算法功力,我们有一个INQ渐进式的网络量化方法,第三步我们再把结构参数通过变长编码的方式压缩,同样可以进一步降低模型的尺寸。时间关系,我只讲INQ的步骤。
这样魔方一样的网络模型,很多参数,这些参数初始状态都是浮点类型。可以先把参数用一种方案做一个划分,选出来一部分灰色的量化,量化成2的幂次。我要保持绿色的量化部分不变,然后训练量化的部分。训练好以后,第一阶段再把剩下的灰色部分再选一半再重新训练,最后全部训练成绿色的,也就是说所有的参数都是2的幂次。通过这种方式训练速度很快,它的精度基本无损。而且跟什么网络没有关系都可以拿来压缩,对于前端可订制的软件来讲可以直接移位,我们知道2的幂次在电脑里非常容易用移位计算。这样组合起来就达到了非常好的结果。
从5bit量化结果来看,每一行的第二小行是加黑,bit位宽是5,原来32的是原本的参考,每一个都比原来的要小一点,也就是错误少。也就是说经过这样的训练压缩以后,精度不降反而升了,如果进一步再压缩到3或者2的时候仍然可以拿到不错的效果。可能2的时候精度稍微下降,但是2的时候它的尺寸会压缩很多。同时整合起来看,在其他模型方案上我们比他们也有很好的压缩,我们的模型压缩是33.98,这是非常好的提升。
这是把前面三个步骤全部结合起来,这三个步骤组合以后,我们的方法用4bit做权值和激活参数量化的时候可以达到70亿倍的压缩比,但精度没有损失反而增加了0.08。如果压缩更狠,用2bit表示权值,最后达到142倍的压缩,这时候损失了不到1.5%的精度,这时候很容易让我们在前端的硬件上部署。
比如说我们的Movidius芯片和FPGA都是属于功耗和计算上很优秀的前端部署的硬件,比如说Movidius在它最新的Neural compute engine,那个里面就会使用我们的低精度压缩的模型做优化,然后提供这样的能力给我们的前端海康威视的摄像头,无人机厂商做最先进的视觉识别任务,这是很先进的技术点,大家可以持续关注。
我们再进一步看一下对视觉信息,对于机器人、无人机、智能家居摄像头、无人车看到的场景,怎么理解场景里发生了什么,然后再做相应决策,所以理解这个步骤非常重要。学术界称之为视频的解析,这里需要用到多种模态的数据,图像、声音、文字,自然界有隐含的规律和知识,我们需要补充上知识让它快速适应当前的场景,我们把它称为完整的多模态分析和解决方案。这里可以做几件事情,第一可以把视频内容输出给程序,让它产生出文字描述,后面再做自然语言的分析。也可以把一个视频当做一个数据库查询,我问它问题,你来回答。比如我问视频当中是否有狗,他回答有没有。再进一步识别视频中物体的关系或者语义的关系,所以我们称之为视觉的关系理解。
在机器学习领域我们有视觉方面的先进技术,从认知开始我们会继续往后推动,与更多知识结合,去辅助各个领域的决策和先进的人机交互。
人工智能就只是机器学习、深度学习这一部分吗?不是。在去年英特尔AI大会上就和大家分享过,英特尔看深度学习是很全面的。我们已经有了这么多种不同的可以支持人工智能的硬件产品,英特尔至强可扩展处理器系列,可以保证很多业务无缝的迁移过来增加人工智能能力,同时配合神经网络加速器做密集、大规模的深度学习训练。Mobileye是专门针对无人驾驶领域做主动的安全视觉防控,防止撞车。FPGA是做推理使用的,Movidius是更低功耗的前端智能加速器。这些还不够。
目前来讲这些大部分属于左边的机器学习类型,它是靠很多经验的方式给它做数据的端到端的训练,可以处理复杂多变的数据,但是数据必须可获得、可观测、结果可标注,这样学习效果最好。如果说你看到的数据不完全,包含了隐含知识,或者这些数据本身你标注的时候就有歧义还有一些需要推理的怎么办?我们知道机器学习现在最好的也得用几十瓦或者上百瓦获取一个业务的能力。但是人的大脑一共才20瓦,我还干很多事儿,而且我可以持续自主的学习,可以推理出这个场景你在干什么,这都是自然智能做的。英特尔一定会把两个方面全部看到,在自然智能上也会做很好的前瞻性研究。
举个例子,在座各位知道编程是怎么回事儿。传统的程序员在编程之前知道要解决什么问题,先画一个流程图,这个过程我是知道的,我写好了这个程序是依据这个流程图,然后我给它输入就产生一个答案,传统的基于已知过程的计算模式。进一步的深度学习,深度学习是有这么多的数据,知道这些数据是什么,但是不知道怎么把两边映射起来,中间这个过程不知道,编程也未必编好,所以通过一个深度神经网络让它训练,但到底是怎么推理和描述出来的现在还不太清楚。神经拟态计算,前面是从神经元的结构做了近似启发,但是神经拟态计算试图解决这个解决,你可以把大黑圈想象成小孩大脑,小朋友一岁、两岁,他的大脑里有几百亿的神经元,这些神经元之间互相连接,这些连接以前并没有存储很多对事物的处理能力,他是在跟外界交互、学习过程中,慢慢构造出了处理各种问题的过程,同一个脑子可以处理很多过程,可以学音乐、下围棋、说英语,可以干这干那儿,所以是用一个脑子去处理很多不同的过程。这种方式就是神经拟态计算要解决的问题。
量子计算就更复杂了,它要解决的问题里面答案非常多,会叠加存在着相互纠缠的量子Bit里面,怎么样做出一个方案选择答案出来,和能够很好的测量结果。英特尔发布了49个量子Bit的量子芯片。量子计算我今天不讲,我给大家介绍一下神经拟态计算。
LOIHI,是夏威夷海底的一个活火山,这个火山在不停地喷发,它很快会浮出水面,就会扩大夏威夷岛的范围,我们用这个名字表示它在不断的演进。LOIHI的特点在于它可以自我学习,它可以训练,并不是固定的。可以帮助我们解决很多挑战性的问题,比如图像的稀疏编码,对于复杂约束的满足,比如做填字游戏、速读,复杂模式的匹配、动态学习和适应的过程,整个系统怎么可能分布式的快速适应到各种变化场景。很多问题是现在可以利用这种平台,这样的计算学习方式去做的,它和冯诺伊曼架构完全不同。而且它会直接受益于摩尔定律的推动。很小的芯片上可以做更密的神经元,功耗还更低。
现在的状态是什么呢。我们在一个芯片上可以支持多种事件的学习方式。比如上面训练其中一部分神经元来做无监督的模型,检测和发现这些数据的未知模式。也可以用它的一部分去训练监督的学习,对标注的模式让它识别这是猫还是飞机。同时还可以运用一些自监督的方式让它把一些模式关联出来,比如我动了方向盘,车轮就会动,车轮动了以后我的摄像头的视野就会有新的东西产生,所以这些关联的模式就能够找出来。同时它还是非常好的做强化学习训练的一种设备。小孩的整个训练过程是强化学习训练的模式。
目前我们发布的这个芯片是业界最领先的带有学习功能的芯片,包含了各个友商发布芯片的先进性,我们可以让它学习,放进去的这些东西还可以不停地改变,自己学习和适应它。有128个小核,每核里有近千个神经元,还有低功耗的x86做协调、设计。前面讲的几种学习的一些规则我们会放在里面,预置在里面,可以选择去使用。同时,这些芯片之间还可以扩展它的连接,变成拟态的一些网络,可以增大它的能力。实际使用的时候从架构设计到芯片设计是完全连通的,我们做的时候有FPGA的仿真,这个芯片如果不太容易拿到我们可以用FPGA的方式让大家试用到。神经拟态是用脉冲神经网的方式,它包含了时空脉冲的序列作为输入。比如现在这个小核里面有一个神经元是长这样,里面有很多数图作为输入,主图是输出,数图和主突分配接取很多其他的神经元。如果有一个事件发生了,比如说检测到一个颜色的变化或者运动,它就会产生出一个脉冲,这个脉冲有强度,有时间,和时间绑定,送到神经元,累计它的电位或者类似的模拟方式,达到一定的阈值以后就会触发一个输出,输出以后输出到所有连接的神经元,继续推动他们点位的上升。这个方式是人脑学习时采用的方式,它和现在的TPU方式是完全不一样的,灵活性很强。
现在已经有了这样的芯片,而且这个芯片年底真正面市,它是研究型的实验芯片。
大家会问怎么在上面编程呢?现在允许数据科学家在Python的API上设置网络的构造,和它的一些相应的参数还有一些学习的规则可以制定,我们就可以把我们的数据往里送,送了以后通过编译器帮你转换成能够在LOIHI上部署的格式,这种格式部署好以后有几个选择,一个部署在左下角的功能模拟器,这是纯软件的东西,你可以在上面模拟它的效果怎么样。硬件的方式有三种,FPGA的、芯片的、数字模拟器的,这几种要保证大家的功能结果是一致的。这是我们在上面编程的一种模式,目前我们正在和软件部门一起合作,创造一种让大家更容易使用的编程方式和结构。
刚才给大家介绍了很多新的算法,还有硬件。我们知道人工智能的落地光靠算法和硬件不行,要靠应用的推动。对于前瞻性的应用,英特尔也在努力布局和探索。医疗健康是每个人息息相关的并且非常关心的,而且精准医疗概念中会使用很多的数据,图形数据、基因数据,怎么样让人工智能在这些前沿领域发挥作用,这是一个很好的话题。我们和上海交通大学合作也产生了很多好的结果。
原文发布时间为:2017-11-21
本文作者:文摘菌