深度学习原理与应用
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 为什么会出现深度学习

在今天已经是如日中天的深度学习,它的出现和快速发展,主要归功于图像识别、语音识别技术的发展,以及Google等大数据公司的贡献,得益于大量训练测试数据的轻松获取、GPU等硬件的发展,当然还有学习方法方面的发明创造。下面逐一简要说明它们在深度学习发展过程中所起的作用。

在图像识别方面,以往使用的是尺寸不变特征变换(Scale Invariant Feature Transform,SIFT)、视觉词袋模型(Bag of Visual Word,BoVW)特征表达,以及费舍尔向量(Fisher Vector,FV)等尺寸压缩方法。这些方法尽管发展了很多年,但是很难使图像识别技术走出实验室。

引入深度学习方法后,图像识别的能力在很短的时间内得到了大幅度的提升。以2010年开始举办的大规模视觉识别挑战赛(ILSVRC,ImageNet Large Scale Visual Recognition Challenge)竞赛为例,2012年挑战赛冠军AlexNet的测试错误率为16.4%,这个网络使用了8层神经网络,2014年的冠军InceptionNet的错误率为6.7%,使用了22层神经网络,2015年的冠军ResNet的错误率已经降至3.57%,共使用了152层神经网络。

ILSVRC曾经是机器视觉领域最具权威的学术竞赛,使用的数据集是ImageNet,由斯坦福大学美籍华裔科学家李飞飞教授主导。ILSVRC竞赛项目主要包括:①图像分类与目标;定位;②目标检测;③视频目标检测;④场景分类。由于2016年ILSVRC的图像识别错误率已经达到2.9%,远远超越人类5.1%的识别错误率,以后再进行这类竞赛意义不大了,2017年7月26日,ILSVRC举办了最后一届竞赛,标志着一个时代的结束,但也是新征程的开始。从2018年起,图像识别竞赛由苏黎世理工大学和谷歌等联合发起的WebVision竞赛接棒,重点在图像理解。而且,WebVision使用的数据集抓取自浩瀚的网络,不经过人工处理与标签,难度大大增加了。

ImageNet图像数据集始于2009年,当时李飞飞教授等在CVPR2009上发表了一篇名为《ImageNet: A Large-Scale Hierarchical Image Database》的论文中介绍了这个图像数据集,之后应用于ImageNet挑战赛。ImageNet是一个用于视觉对象识别软件研究的大型可视化数据库,包含1400余万的图像,2万个类别(synsets),每个图像通过众包方式完成了手动标注,大类别包括:amphibian、animal、appliance、bird、covering、device、fabric、fish、flower、food、fruit、fungus、furniture、geological formation、invertebrate、mammal、musical instrument、plant、reptile、sport、structure、tool、tree、utensil、vegetable、vehicle、person。

在语音识别方面,以往使用的是高斯混合模型(GMM)和隐马尔科夫模型(HMM)。

仰仗不断增长的计算力、大规模的数据集,在隐马尔可夫模型中引入了深度神经网络,产生了DNN-HMM模型声学,使语音识别的性能得到大幅提升(2011年)。2016年,微软人工智能研究部门(MSR AI)的团队研发的语音识别系统将词错误率[WER=(替换词数+插入词数+删除词数)/正确文本中的总词数]降为5.9%,已经达到人类速记员的顶级水平。

早在2010年,Google公司开发的深度学习实现了猫脸自动识别,使得深度学习方法瞬间广为人知。2015年,Google公司收购的DeepMind公司提出了一种全新的自动学习方法(Deep Q-Network,强化学习),这个方法在设置游戏任务后,机器能够自动学习如何操作才能得到高分。这种方法被科学杂志Nature刊载,影响非凡。

深度学习的发展离不开大数据的支撑。现在人们不但可以通过手机智能App、传感器获得源源不断的巨量数据用于开发深度学习应用,还可以直接从互联网上获得大量公开的语音和图像数据用于深度学习应用的开发与测试,在这些公开的数据中,比较有影响力的包括用于图像识别的数以百万计的图像(ImageNet:“http://www.image-net.org”、Places:“http://places.csail.mit.edu/downloadData.html”),用于语音识别的上千小时的语音数据(网上有开源的中英文数据集,如http://www.openslr.org/resources.php)。

硬件方面的进步主要是GPU(Graphics Processing Unit)的问世。GPU是图形处理器,原本是作为专用的图像显卡,它集成了大量计算单元,能够提供强大的并行运算的能力,后来被大量应用于通用的数值计算。GPU在10年的时间里,将计算速度提高了约1000倍。有了GPU强大的并行计算能力助阵,深度学习繁重的计算任务才能在规模不大的PC服务器集群中完成。

GPU主要由NVIDIA(英伟达)和AMD两家公司提供,但因为NVIDIA提供了CUDA这个面向GPU并行计算的编程环境,所以是当下的主要厂商。NVIDIA提供的产品包括面向大众的GeForce系列和面向科学计算的Tesla系列,以及面向嵌入式主板的Tegra系列。还提供了面向深度学习的快速计算库。

GPU与CPU的差别:GPU采用了数量众多的计算单元和超长的流水线,但只有非常简单的控制逻辑并省去了Cache。而CPU不仅被Cache占据了大量空间,而且还有复杂的控制逻辑和诸多优化电路,相比之下计算能力只是CPU很小的一部分。所以,CPU擅长逻辑控制和通用类型数据运算;GPU擅长大规模并发计算,最好是计算量大,但不复杂,且重复多次的计算任务。

经过十多年的发展,深度学习在算法性能方面获得了很多成果,归纳起来主要有以下三个方面:

• Dropout等防止过拟合方法;

• 新的激活函数;

• 增加预训练方法。