1.1 什么是深度学习
深度学习的概念源于人工神经网络的研究,是人工智能的一个分支。包含多隐层的多层感知器就是一种深度学习结构。深度学习是通过层次结构来完成特征从形成到更加抽象的高层特征提取工作的,进而对样本进行预测。深度学习可以解决有监督学习、强化学习、无监督学习等问题。
神经网络算法是具有广泛适用性的一类算法,深度学习是人工神经网络的一个分支,具有深度网络结构的人工神经网络是深度学习最早的网络模型,深度神经网络相比于普通神经网络,其拥有更深更宽的网络结构,在此之上还有卷积层、LSTM等新的网络组件。
深度学习所涉及的组件和网络结构的其他概念将在后续章节进行详细的介绍。
1.1.1 深度学习能解决的问题
深度学习具有解决广泛问题的能力,因为其拥有自动学习数据中的重要特征信息的能力。深度学习具备很强的非线性建模能力。众多复杂问题本质上都是高度非线性的,而深度学习实现了从输入到输出的非线性变换,这是深度学习在众多复杂问题上取得突破的重要原因之一。文本、图像、语音等问题都比较复杂,这就需要模型具有很强的非线性建模能力。
分类和回归是人工智能以及机器学习中两个非常重要的问题。
分类希望能够自动识别某种数据的类别。输入是样本,输出是样本应该属于的类别。一般情况下是这样的,首先通过已有的数据、已经标记的分类,通过训练得到可用的分类器模型,然后通过模型预测新输入数据的类别,例如针对不同类别动物的图像进行分类。举例来说,我们首先为每种动物照片指定特定的标签,例如飞机、车、鹿等,然后通过图像分类的算法建立一个分类模型,针对新的照片,分类器可以通过这个模型输出对应的标签。
如图1-1所示,分类器可以将图片分为三类。
图1-1 分类问题
回归与分类相似,但是输出需要是连续的数据,根据特定的输入向量预测其指标值。例如,我们有历史股票的时间-价格信息,价格是连续数据,通过数据训练回归模型,最终将未来的时间信息输入到训练好的回归模型,回归模型能够预测未来时间点的价格。如图1-2所示,可以通过深度学习模型,基于历史的收盘价,学习回归模型,预测未来时间点的价格。
图1-2 回归问题
深度神经网络能够灵活地对分类或回归问题进行建模和分析,这依赖于其对于特征的自动提取。例如,可以通过卷积层来表达空间相关性,通过RNN表达序列数据的时间连续性。另一个实例就是Word2Vec,通过浅层神经网络可以将单词转换为向量表示。
根据问题和数据的潜在特性,研究人员设计深度学习网络结构如何从输入到输出逐步提取对预测有影响的信息,进而将不同的网络组件组织连接起来。随着大数据的增长、计算力的提升、算法模型的进化,深度神经网络模型的复杂度也变得越来越高,这表现为深度与广度两方面的扩展。
1.1.2 深度学习适用的领域
深度学习研究及应用的一个目标是算法及网络结构尽量能够处理各种任务,而深度学习的现状是在各个应用领域仍然需要结合领域知识和数据特性进行一定结构的设计。例如,自然语言处理任务的每一个输入特征都需要对大量的词、句等进行建模,并考虑语句中词汇之间的时间顺序。计算机视觉中的任务对每一个样本都需要处理大量的图像像素输入,并结合图像局部性等特性设计网络结构。下面是深度学习中的几个常见的适用领域。
1.计算机视觉
计算机视觉(Computer Vision)就是深度学习应用中的重要研究方向之一,是解决如何使机器“看”这个问题的科学。因为视觉对人类以及许多动物来说毫不费力,但是对计算机来说这个任务却充满了挑战。深度学习中有许多针对计算机视觉的细分研究和应用方向,图像识别、物体检测、人脸识别、OCR等。
通过以下几个计算机视觉的典型问题和应用,我们可以快速了解计算机视觉能够解决的问题。
(1)图像识别
图像识别问题的输入是一张图片,输出图片中要识别的物体类别。自从2012年以来,CNN和其他深度学习技术就已经占据了图像识别的主流地位。在图像识别领域有一些公开的数据集和竞赛驱动着整体技术的发展,例如,ImageNet是目前世界上最大的图像识别数据库,是由美国斯坦福的计算机科学家,模拟人类的识别系统而建立的。
(2)物体检测
物体检测问题的输入是一张图片,输出的是待检测物体的类别和所在位置的坐标,通过深度学习方式可以解决。有的研究方法将问题建模为分类问题,有的将其建模为回归问题。如图1-3所示,物体检测可以识别图像中的人、狗、车辆、马等。
图1-3 物体检测
(3)人脸识别
人脸识别又可以细分为很多子问题,例如,人脸检测是将一张图片中的人脸位置识别出来,人脸校准是将图片中人脸更细粒度的五官位置找出来,人脸识别是给定一张图片,检测数据库中与之最相似的人脸。
(4)OCR
从早期的通用扫描文档识别,到银行卡、身份证、票据等证件识别以及车牌识别都属于OCR。
2.语音识别
工业界和学术界掀起的深度学习浪潮在语音识别领域取得了巨大的成功。RNN模型充分考虑了语音之间的相互关系,因此取得了更好的效果。深度学习在语音识别中的作用很大一部分表现在特征提取上,可以将其看成是一个更复杂的特征提取器。当然深度学习的作用不仅仅是特征提取,还逐渐涌现出了基于深度学习的端到端的解决方案。但这并不是说CNN在语音识别中无用武之地,我们一般习惯于利用CNN的良好训练与速度优势,而且其效果并不差。
3.自然语言处理
深度学习在自然语言处理中的应用越来越广泛,从底层的分词、语言模型、句法分析等到高层的对话管理、知识问答、聊天、机器翻译等方面几乎全部都有深度学习模型的身影,并且取得了不错的效果。
从数据上看,经过前些年互联网的发展,很多公司都完成了海量文本数据的积累。当数据量增大时,若模型较浅,则无法对海量数据中的非线性关系进行建模,从而不能带来性能上的提升。以深度神经网络为代表的深度模型,能够随着模型复杂度的增加,对数据进行更为精准的建模,进而获得更好的效果。
从算法上看,首先,Word2Vec的出现,使得我们可以高效地表示词,这在一定程度上缓解了语义问题,降低了输入特征的维度,从而降低了输入层的复杂度。
深度学习模型的灵活性,使得之前比较复杂的包含多流程的任务,可以使用端到端(End to End)的方法进行解决。当采用Encoder-Decoder架构后,模型可以将输入语言直接映射到输出语言,从而完成很多语言学问题。
4.自动驾驶
自动驾驶也是这几年逐渐应用深度学习进行开发的一个重要领域。自动驾驶的人工智能包含了感知、决策和控制等流程和模块。感知是指通过摄像头、激光雷达等传感器的输入,进而解析出周围环境的信息,例如有哪些障碍物,障碍物的速度和距离,道路的宽度和曲率等。决策是根据感知信息判断如何进行下一步的行进规划,控制是将决策信息作用于实车。而自动驾驶中又包含了很多细分子问题,如道路与车道线的检测、前车检测、行人检测和防撞系统,以及End to End的自动驾驶模型等。
(1)基于规则(Rule Based)的方式
传统规则式的无人驾驶系统发展到现在,实车试验已经有十几年,研究更是有二三十年。业界和学术界主流还是基于规则系统,从车辆、传感器感知,然后进行决策、控制,最后到车辆,形成一个完整的闭环,每个流程又涉及大量的功能模块。
(2)端到端的方式
英伟达在一款汽车应用产品中,用卷积神经网络(CNN)将车前部摄像头捕捉到的原始像素图映射为汽车的方向操控命令。这种强大的端到端技术意味着,只需要人们提供少量的训练数据,系统就能学会自动驾驶技术,无论有没有车道标志线,无论是在普通公路还是高速公路上都是如此。但是深度学习在带来简便的同时也存在着难以解决的问题。