上篇 初见
人生若只如初见,何事秋风悲画扇。
等闲变却故人心,却道故人心易变。
骊山语罢清宵半,泪雨零铃终不怨。
何如薄幸锦衣郎,比翼连枝当日愿。
——纳兰性德《木兰词·拟古决绝词柬友》
第一次见到Caffe,是2014年年初我在阿里云实习期间,看到很多同事在用Caffe做深度学习算法优化。当时被名字吸引了,因为我之前只知道Java是一种咖啡,而这个深度学习框架全称是“快速特征植入的卷积结构”(Convolutional Architecture for Fast Feature Embedding)。当时的Caffe还只是雏形,看了一遍代码后深深被其设计所吸引,高效的C++/CUDA实现、Matlab/Python接口、独特的网络描述方式、清晰的代码框架……当时对深度学习的认识仅仅停留在教科书中的“神经网络”、“多层感知器”、“径向基函数”等抽象概念上,没有具体可操作性,而读完Caffe代码就像突然发现了新大陆一般,原来深度学习实现起来居然可以这么简单!
经过两年的发展,Caffe已经发生了巨大的变化,例如加速库cuDNN引入、多GPU支持、多种计算平台(AWS、Apache Spark、阿里云ODPS/HPC)支持等。其核心变化并不大,体现了其设计模式的前瞻性。Caffe文档丰富,对初学者的友好程度大大提升。本篇的目的是让Caffe走近每个深度学习爱好者,亲身体验深度学习最佳实践方式。
第1天 什么是深度学习
第一眼看到“学习”,大多数人想到的是读书、上课、写作业,我们就拿它作为切入点。上课时,我们是跟着老师一步步学习,即“有监督”学习;而课后的作业,则需要靠自己完成,是“无监督”学习。平时做的课后练习题,是我们学习系统的“训练数据集”,而考试时卷面上的题目则属于“测试数据集”,用于检验我们的学习成果。“学霸”训练效果比其他人好,对测试数据集的所有情况如数家珍;“学渣”则完全没有训练或训练不充分,对测试数据集的效果和随机猜测差不多;还有“学痴”在训练上出现了“过拟合”,平时做训练题滚瓜烂熟,一遇大考就跪了……
更抽象地表达,可以说学习是一个不断发现自身错误并改正错误的迭代过程。人是如此,机器亦如此。带“学习”功能的机器能仅仅通过“看”未知系统的输入-输出对(称为训练样本),自动实现该系统内部算法,并具有举一反三的能力(称为泛化),对不在训练样本中的未知输入也能产生正确的输出,完全不需要程序员或算法专家动手设计中间算法,是不是感觉非常酷?
如果将训练样本表示为:
D= {z1, z2, …, zn}
其中,zi表示未知系统 P(Z)中采样得到的数据(每个元素都可表示为输入-输出对)。规定惩罚函数L(f, Z),其参数为学习到的规则f和独立于训练样本的验证样本集Z,其返回值为实数标量,称为惩罚值,又称损失(Loss)。对机器的要求是让损失最小,否则会让机器陷入无止境的重复计算中不得安宁。运行在这些机器上的邪恶算法称为机器学习算法,它能从数据D中学习游戏规则f(攒经验),然后靠学到的经验不断提高游戏得分,最终获得整套游戏攻略(训练好的模型)。
为了让机器自动学习,需要为机器准备三份数据:
(1)训练集,机器学习的样例。
(2)验证集,机器学习阶段,用于评估得分和损失是否达到预期要求。
(3)测试集,机器学习结束之后,实战阶段评估得分。
在现代社会,机器学习技术增强了网页搜索、社交网络内容过滤、电子商务网站广告推荐系统、消费产品如相机和智能手机等方面的能力。
机器学习系统用于识别图像中的物体、将语音转换为文字、匹配新闻条目、在搜索中选择相关度更高的内容,以及推荐用户感兴趣的商品等。在这些应用中越来越多地使用一类叫作深度学习(Deep Learning, DL)的技术。深度学习是由多个处理层组成的计算模型,可以通过学习获得数据的多抽象层表示。该方法显著提高了语音识别、视觉目标识别和检测效果,很多领域(如药品发明、基因测序)也从中受益。
国内外大量互联网公司、高校和科研机构逐步加大深度学习技术的投入,在越来越多的实际项目中加以应用(见图1-1)。
图1-1 国外使用深度学习技术的机构
1.1 星星之火,可以燎原
深度学习一度备受冷落,真正的燎原之势始于2012年多伦多大学Geoffrey Hinton的学生Alex Krizhesky在ILSVRC(ImageNet Large Scale Visual Recognition Challenge, ImageNet大规模视觉识别竞赛,http://image-net.org/challenges/LSVRC/)中使用深度学习方法一举夺得图像分类、目标定位两个项目冠军,远远拉开了与第二名(传统计算机视觉方法)成绩的差距。
如图1-2所示为Alex在比赛中使用的深度学习模型AlexNet结构。注意到网络分成上下两部分,分别运行在两块GPU(Graphics Processing Unit)上,其中虚线表示两块GPU之间的数据通信。事实上,该模型已成为深度学习的模板结构,一些新模型(VGG/GoogLeNet)均在AlexNet基础上改进得到。
图1-2 AlexNet结构
为什么深度学习在2012年而不是其他时间爆发?主要有3个有利因素:
(1)更大的数据集,如ImageNet。
(2)新的深度学习技术,如ReLU、Dropout等技术。
(3)新的计算硬件,如GPU。
我们先看看国外的深度学习有哪些进展。
1.2 师夷长技
1.2.1 谷歌与微软
Google在Geoffrey Hinton等大牛的带领下,在理论与技术方面一直保持世界领先地位。利用GoogLeNet,在2014年ILSVRC中其分类错误率低至6.66%。
基础平台包括早期基于大规模CPU集群的DistBelief(由16000个计算节点构成)和近期开放的支持GPU加速的TensorFlow。2016年朋友圈刷屏的“阿尔法狗”(AlphaGo)也是Google强大深度学习的具体案例之一。
Microsoft在2015年ILSVRC目标检测任务中使用深度残余学习框架(Deep Residual Learning Framework)取得绝对优势,赢得200个类目中194个最佳检出率,平均检出概率高达62%(2014年同一任务最好结果为37%)。基于Caffe实现的Fast-RCNN(作者为Ross Girshick)在目标识别领域占有重要地位。
Microsoft在基础平台方面也势头强劲,2015年推出的Azure Machine Learning Studio有大量的机器学习算法,适合用来构建预测分析解决方案。这些算法可用于一般的机器学习,如回归分析、分类、聚类和异常检测,且每一个都可以解决不同类型的机器学习问题。为其作支撑的不仅有高可扩展性、支持CPU/GPU计算的Minerva及分布式深度学习训练系统Adam、CNTK,还有利用Catapult加速深度卷积神经网络(DCNN)的项目也在进行中。
1.2.2 Facebook、亚马逊与NVIDIA
Facebook于2013年成立了人工智能实验室,在Yann LeCun的带领下Facebook同纽约大学数据科学中心在数据科学、机器学习、人工智能领域展开合作,代表性工作有最著名的开源深度学习项目Torch(http://torch.ch/)和fbcunn(https://github.com/facebook/fbcunn)。
Amazon本身是做IaaS平台的,看到机器学习如火如荼的发展,也迅速融入并推出了云上的机器学习服务(http://aws.amazon.com/cn/machine-learning/),提供一种PaaS模式。Amazon Machine Learning提供可视化的工具和向导,无须学习复杂的机器学习算法和技术。使用简单的API即可让用户应用程序轻松获得预测能力,而无须实现自定义预测生成码或管理任何基础设施。采用Amazon内部使用的机器学习方法,非常容易扩展。而且,使用Amazon Machine Learning不需要对硬件或软件事先投入资金,只需按使用量付费。
另外,不得不提NVIDIA,这家老牌显卡制造商也将未来方向瞄准了深度学习,于GTC 2015、2016连续发布多款面向深度学习的GPU加速器硬件(Titan X、Tesla P100)、加速库(cuDNN)和解决方案(DIGITS DevBox、DGX-1),为深度学习的普及和更大模型的支持起到推波助澜的作用。
以上为国外情况,国内情况又如何呢?
1.3 中国崛起
1.3.1 BAT在路上
百度是国内较早开展深度学习研究的企业,于2013年年初创立了百度深度学习实验室(Institute of Deep Learning, IDL, http://idl.baidu.com/),斯坦福大学教授、Google大脑创始人Andrew Ng随后加入。IDL研究方向包括深度学习&机器学习、机器人、人机交互、3D视觉、图像识别、语音识别等,同时开展了一系列深度学习相关的创新项目,如无人机、智能自行车DuBike、自动驾驶汽车、智能眼镜BaiduEye等。
百度在深度学习计算平台基础设施建设方面一直走在国内互联网公司的前列,百度在ImageNet挑战中取得的成绩得益于其超级计算机Minwa(36个服务器节点,每个节点2个六核Xeon E5-2620和4个NVIDIA Tesla K40m GPU)。为了提高深度学习算法的计算速度,百度在GPU和CPU上做了很多优化,发表了一些深度学习算法GPU加速的论文(虽然中间有点小插曲)。经过这些工作,百度也意识到GPU、CPU在深度学习应用中的成本效率、能耗效率和目标间的差距。在充分考量各种芯片的特性后,可编程、低功耗并拥有超强并行计算能力的FPGA走进了百度工程师们的视野。百度开始尝试用FPGA打造AI专有芯片,并成就了第一版AI专有芯片版百度大脑——FPGA版百度大脑。这使得百度成为了全球最早将FPGA规模应用在人工智能领域的公司。
阿里巴巴作为电子商务巨头,很早就看到了深度学习在商品检索方面的应用价值,在阿里巴巴图像搜索的领军人物、阿里巴巴搜索事业部研究员华先胜的带领下迅速将深度学习技术成功应用到手机淘宝图像搜索业务——拍立淘中。2015年“双11”当天,上千万消费者使用了拍立淘功能,引导了数千万元的销售额。拍立淘上线一年以来,所覆盖的类目范畴已经从最开始的女装,发展到目前的男女装、鞋包、配饰、食品、数码、家居、日用百货、内衣、瓶饮等十余个类目。与通用搜索主要依靠字节不同,图像搜索被主要定义为“以图搜图”。据华先胜介绍,图像搜索的第一步是训练计算机进行图像理解,也就是通过计算机将图片中的要素,包括人像、颜色、纹理等具体特征以及深度学习产生的图像描述,转换为类似于文字的“视觉词”,编成索引之后,才能再进行第二步——图像搜索。图像搜索仍有很多未知领域有待探索。在华先胜看来,能推动图像搜索下一步突破的关键有三点:深度学习、大数据分析和大量用户使用反馈。环顾国内外,似乎只有阿里巴巴能够同时具备这三个条件。对于“拍立淘”的未来,华先胜表示,拍立淘将会拓展到更多领域,力争成为人们获取信息(包括购物、教育、娱乐、新闻、知识等)的一个快捷、有趣、有效的入口,而不仅仅是搜寻商品的入口。
阿里巴巴在基础平台建设方面起步虽晚,但发展迅速,利用装备NVIDIA Tesla GPU的高性能计算集群,不仅完美支撑拍立淘、搜索、OCR、绿网、神马语音、iDST等内部业务,还进一步在2015年10月14日云栖大会上正式宣布通过阿里云对外提供公共云上的HPC服务(https://www.aliyun.com/product/hpc),使普通用户也有机会享受高性能计算平台带来的高效性和便利性。目前越来越多的中小企业选择租用云端HPC服务器,而不是自建机房做繁杂冗长的运维工作。最新机型G4配备了双Tesla M40作为加速器,可大大提高深度学习应用的运行效率,基于Docker的快速环境部署大幅降低了客户使用深度学习框架的门槛,可谓开箱即用。
腾讯拥有海量的社交关系数据,在深度学习应用方面潜力巨大,目前主要应用为语音识别、图像识别和广告推荐。腾讯优图(BestImage, http://open.youtu.qq.com/)是腾讯旗下顶级的机器学习研发团队,专注于图像处理、模式识别、深度学习等方向,在人脸检测、五官定位、人脸识别、图像理解领域都积累了完整解决方案和领先的技术水平。
腾讯在深度学习基础平台方面经历多次升级逐步完善,在Mariana基础上针对多种应用打造出Mariana DNN、Mariana CNN、Mariana Cluster等基础框架,在微信语音识别、微信图像识别方面均已成功落地,在图文类效果广告点击率提升方面也取得初步的应用。
1.3.2 星光闪耀
中国科学院计算所计算机体系结构国家重点实验室未来计算组陈云霁研究员领导的团队提出了国际上首个深度神经网络处理器寒武纪1号(DianNao),通过高效的分块处理和访存优化,能高效处理任意规模、任意深度的人工神经网络,以不到通用处理器1/10的面积和功耗达到了100倍以上的神经网络处理速度,性能功耗比提升了1000倍。该项工作意味着,处理器结构设计的创新,有望在未来使得手机移动终端具备谷歌大脑级别的认知处理能力。2014年12月,新推出的寒武纪2号神经网络处理器(DaDianNao)荣获年度Micro最佳论文。“DaDianNao”又有多项突破,性能继续大幅度提升,与通用芯片和GPU相比,计算速度提高几十倍,功耗只有十分之一,整体能效提高450倍。陈云霁透露,这种芯片将用在国产手机上。“寒武纪”芯片执行的是一种与通用计算完全不同的指令集——电脑语“DianNaoYu”。所谓指令集就是电脑“语言”,其直接面对大规模神经元和突触的处理,一条指令即可完成一组神经元的处理。模拟实验表明,“寒武纪”相对于传统的执行x86指令集的芯片,有两个数量级的性能提升。与传统的通用计算指令集相比,“电脑语”显然更类似于人类大脑的学习方式,因此有人将其称为“下一代人工智能技术”。“电脑语”被计算机体系结构领域顶级国际会议ISCA 2016接收,其评分在近300篇投稿中排名第一。陈天石研究员表示,“寒武纪”不是代替中央处理器的颠覆式革命。从目前的情况来看,它更像是一款针对智能认知等应用的专用芯片——“我们的优势主要集中在人脸识别、声音识别等人工智能方面。比如,传统的手机或个人电脑主板上嵌入‘寒武纪’芯片后,将极大地提高处理这类任务的速度,并且降低能耗”。
科大讯飞股份有限公司(http://www.iflytek.com/)是一家专业从事智能语音及语言技术、人工智能技术研究、软件及芯片产品开发、语音信息服务及电子政务系统集成的国家级骨干软件企业。该公司的智能语音核心技术代表了世界最高水平,是我国产业化实体中在语音技术领域基础研究时间最长、资产规模最大、历届评测成绩最好、专业人才最多及市场占有率最高的公司。语音技术实现了人机语音交互,使人与机器之间的沟通变得像人与人沟通一样简单。此外,语音技术还包括口语评测、语音编码、音色转换、语音消噪和增强等技术,有着广阔的应用空间。科大讯飞作为中国最大的智能语音技术提供商,在智能语音技术领域有着长期的研究积累,并在语音合成、语音识别、口语评测、自然语言处理等多项技术上拥有国际领先的成果。
1.3.3 企业热是风向标
近两年国内利用深度学习技术的创业公司如雨后春笋般涌现。
商汤科技SenseTime(http://www.sensetime.com/)致力于引领人工智能核心“深度学习”技术突破,构建人工智能、大数据分析行业解决方案。在人工智能产业兴起的大背景下,商汤科技拥有在技术、人才、专利上多年的积累,聚集了一批出色的华人深度学习、计算机视觉科学家,以及来自于谷歌、百度、微软、联想等产业界领军人物。在人脸识别、文字识别、人体识别、车辆识别、物体识别、图像处理等前瞻性应用技术上,商汤科技均拥有核心原创技术和持续进行学术研发的潜力;在业务上,商汤集团深耕金融、移动互联网、安防监控三大行业,已与中国移动、银联、京东、拉卡拉、华为、小米、新浪微博、科大讯飞、东方网力、英伟达等知名公司开展深度合作,推动行业产品智能化升级,开拓中国原创人工智能技术更多可能。
Face++™(http://www.faceplusplus.com.cn/)是北京旷视科技(Megvii)有限公司旗下的新型视觉服务平台,旨在提供简单易用、功能强大、平台兼容的新一代视觉服务。Face++团队专注于研发世界最好的人脸检测、识别、分析和重建技术,通过融合机器视觉、机器学习、大数据挖掘及3D图形学技术,致力于将最新、性能最好、使用最方便的人脸技术提供给广大开发者和用户。通过提供云端API、离线SDK,以及面向用户的自主研发产品形式,将人脸识别技术广泛应用到互联网及移动应用场景中。
涂鸦(http://www.airtake.me/)成立于2014年,专注于云服务,致力于通过智能云为厂商提供由普通硬件转变为智能硬件的完整技术解决方案分布式架构的全球部署,每日超过10TB和千万人次的数据吞吐量原生图像识别与机器学习能力。涂鸦在云计算技术、硬件生产以及海外市场运营方面有丰富的经验。涂鸦在技术上获得了阿里云和亚马逊云服务的支持。
格灵深瞳(http://www.deepglint.com/)成立于2013年年初,是全球第一家采用三维计算机视觉技术,将人工智能应用于商业领域的科技公司,致力于让计算机像人一样看懂这个世界,并且把这一技术率先用在了安防监控和智能交通领域。让计算机看懂世界,是格灵深瞳的使命。因为感知技术是所有存在于真实世界里的人工智能的信息入口。近年来,深度学习和深度视觉成为了计算机视觉领域最伟大的创新和进展。格灵深瞳是全世界最早把这些技术商业化的公司之一。结合深度学习和深度视觉技术建造视觉传感器网络,有效地赋予视频监控、智能交通以及智能驾驶等领域全新的价值。
Dress+(衣+, http://www.dress-plus.com/)成立于2014年,提供在线视觉识别技术与社交网络搜索时尚商品的服务。衣+边看边买搜索引擎是领先的商品图像特征建模方案,基于深度学习和传统方法融合商品图像特征建模算法,既刻画了高层语义特征,又兼顾了底层图像特征,大大加强了衣+引擎对同款和相似款商品的检索能力,帮助用户快速找到感兴趣的商品图像。使用衣+独有的高效特征量化压缩算法,在保证检索效果和原始特征基本一致的条件下可以将单条记录特征压缩到1KB以内,极大地提高了搜索引擎的可扩展性。衣+高实时性搜索引擎在单机单线程条件下完成2千万条目的检索时间小于1s,通过并行优化的系统支持单机亿级条目的检索时间小于1s。
Linkface(http://www.linkface.cn/)是一家人脸识别技术研发公司,曾取得FDDB人脸检测公开测试世界第一、300-W Benchmark准确率世界第一、LFW人脸识别准确率达99.5%以上等一系列成绩。Linkface开发了基于深度学习的人脸检测创新算法,无论孤身一人还是置身人群,抑或是处在侧脸、遮挡、模糊等情景中,均能进行精准检测;Linkface可准确识别出眼睛、鼻子等人脸关键位置,在表情不同、姿态多样、遮挡模糊等状态下均可进行精准定位;在监控、门禁、自拍、人证比对等场景中,Linkface的识别算法能够提供精准、便捷的识别方案。
今天的主要内容是展现国内外深度学习领域一片欣欣向荣的形势,读到这里是否已经下定决心跟着本书一探深度学习之究竟?!我们明天继续~
1.4 练习题
1.搜索深度学习领域的先驱者Geoffrey Hinton、Yann LeCun、Youshua Bengio三大牛的个人主页,查看其最新动态。
2.在Coursera上搜索Andrew Ng的机器学习课程。
3.了解各大招聘网站上深度学习相关岗位的需求情况。