面向汽车的新一代信息技术
上QQ阅读APP看书,第一时间看更新

1.2.2 深度学习

1. 深度学习的定义

深度学习是机器学习的一个类型,其模型直接从图像、文本或声音中学习执行分类任务。通常使用神经网络架构实现深度学习。深度是指网络中的层数,层数越多,网络越深。传统的神经网络只包含2层或3层,而深度网络可能有几百层。

深度神经网络由一个输入层、多个隐含层和一个输出层组成。各层通过节点或神经元相互连接,每个隐含层使用前一层的输出作为其输入,如图1-20所示。

图1-20 深度神经网络

深度学习算法与其他算法的比较如图1-21所示。基于规则的系统一般会编写显示的规则逻辑,这些逻辑一般是针对特定的任务设计的,并不适合其他任务。传统机器学习算法一般会人为设计具有一定通用性的特征检测方法,如尺度不变特征变换、方向梯度直方图特征,这些特征能够适合某一类的任务,具有一定的通用性。但是如何设计特征方法,特征方法的好坏是问题的关键。神经网络的出现,使得人为设计特征这一部分工作可以通过神经网络让机器自动学习,不需要人类干预。但是浅层神经网络的特征提取能力较为有限,而深层的神经网络擅长提取深层、抽象的高层特征,因此具有更好的性能表现。

图1-21 深度学习算法与其他算法的比较

深度学习是机器学习的子类型。使用机器学习,需要手动提取图像的相关特征。使用深度学习,只需要将原始图像直接馈送给深度神经网络,该网络便可以自动学习特征。为了获得最佳结果,深度学习通常需要成百上千乃至数百万张图像,而且属于计算密集型,需要高性能图像处理器。

2. 深度学习的特点

与机器学习、浅层神经网络相比,深度学习通常具有以下特点。

(1)数据量 早期的机器学习算法比较简单,容易快速训练,需要的数据集规模也比较小,如1936年由英国统计学家Ronald Fisher收集整理的鸢尾花卉数据集(Iris)共包含3个类别的花卉,每个类别50个样本。随着计算机技术的发展,设计的算法越来越复杂,对数据量的需求也随之增大。1998年,由Yann LeCun收集整理的手写数字图片数据集(MNIST)共包含0~9共10类数字,每个类别多达7000张图片。随着神经网络的兴起,尤其是深度学习,网络层数较深,模型的参数量达到成百上千万个,为了防止过拟合,需要的数据集的规模通常也是巨大的。现代社交媒体的流行也让收集海量数据成为可能,如2010年的图像数据集(ImageNet)收录了14197122张图片,整个数据集的压缩文件大小就有154GB。

由于深度学习对数据集需求较高,所以收集数据尤其是收集带标签的数据,往往是代价昂贵的。数据集的形成通常需要手动采集、爬取原始数据,并清洗掉无效样本,再通过人类智能去标注数据样本,不可避免地会引入主观偏差和随机误差。因此,研究数据量需求较少的算法模型是非常有用的一个方向。

(2)计算能力 计算能力的提升是第三次人工智能复兴的一个重要因素。实际上,目前深度学习的基础理论在1980年就已经被提出,但直到2012年基于两块GTX580 GPU训练的卷积神经网络(AlexNet)发布后,深度学习的真正潜力才得以发挥。传统的机器学习算法并不像神经网络这样对数据量和计算能力有严苛的要求,通常在中央处理器上串行训练即可得到满意结果。但是深度学习非常依赖并行加速计算设备,目前的大部分神经网络均使用英伟达的图形处理器和谷歌的张量处理器或其他神经网络并行加速芯片训练模型参数。

(3)网络规模 早期的感知机模型和多层神经网络层数只有1层或者2~4层,网络参数量也在数万左右。随着深度学习的兴起和计算能力的提升,神经网络层数不断增加,8层、16层、22层、50层、121层的模型相继被提出,同时输入图片的大小也从28×28逐渐增大,变成224×224、299×299等,这些使得网络的总参数量可达到千万级别。

网络规模的增大,使得神经网络的容量相应增大,从而能够学习到复杂的数据模态,模型的性能也会随之提升;另一方面,网络规模的增大,意味着更容易出现过拟合现象,训练需要的数据集和计算代价也会变大。

(4)通用智能 在过去,为了提升某项任务上的算法性能,往往需要手动设计相应的特征和先验设定,以帮助算法更好地收敛到最优解。这类特征或者先验往往是与具体任务场景强相关的。一旦场景发生了变动,这些依靠人工设计的特征或先验便无法自适应新场景,往往需要重新设计算法模型,模型的通用性不强。

设计一种像人脑一样可以自动学习、自我调整的通用智能机制一直是人类的共同愿景。从目前来看,深度学习是最接近通用智能的算法之一。在计算机视觉领域,过去需要针对具体的任务设计特征、添加先验的做法,已经被深度学习完全抛弃,目前在图像识别、目标检测、语义分割等方向,几乎全是基于深度学习端到端的训练,获得的模型性能好,适应性强。

3. 深度学习的应用

深度学习算法已经广泛应用到人们的生活中,例如手机中的语音助手、自动驾驶汽车、人脸支付等。下面将从计算机视觉、自然语言处理和强化学习三个领域入手,介绍深度学习的一些主流应用。

(1)计算机视觉 计算机视觉可用于图像识别、目标检测、语义分割、视频理解和图像生成等。

1)图像识别。图像识别是常见的分类问题。神经网络的输入为图像数据,输出值为当前样本属于每个类别的概率,通常选取概率值最大的类别作为样本的预测类别。图像识别是最早成功应用深度学习的任务之一。

2)目标检测。目标检测是指通过算法自动检测出图像中常见物体的大致位置,通常用边界框表示,并分类出边界框中物体的类别信息,如图1-22所示。

图1-22 目标检测效果图

3)语义分割。语义分割是通过算法自动分割并识别出图像中的内容,可以将语义分割理解为每个像素点的分类问题,分析每个像素点属于物体的类别,如图1-23所示。

图1-23 语义分割效果图

4)视频理解。视频理解随着深度学习的发展在二维(2D)图像的相关任务上取得较好的效果,具有时间维度信息的三维(3D)视频理解任务受到越来越多的关注。常见的视频理解任务有视频分类、行为检测、视频主体抽取等。

5)图像生成。图像生成通过学习真实图像的分布,并从学习到的分布中采样而获得逼真度较高的生成图像。目前模型产生的图像样本已经达到了肉眼难辨真伪的效果,如图1-24所示。

图1-24 模型生成的图像

除了上述应用,深度学习还在其他方向上取得了不俗的效果,比如艺术风格迁移、超分辨率、图像去噪/去雾、灰度图像着色等一系列非常实用酷炫的任务。

(2)自然语音处理 自然语音处理的典型应用有机器翻译和聊天机器人。

1)机器翻译。过去的机器翻译算法通常是基于统计机器翻译模型,这也是2016年前谷歌(Google)翻译系统采用的技术。2016年11月,谷歌基于Seq2Seq模型上线了谷歌神经机器翻译系统,首次实现了源语言到目标语言的直译技术,在多项任务上实现了50%~90%的效果提升。

2)聊天机器人。聊天机器人也是自然语言处理的一项主流任务,通过机器自动与人类对话,对于人类的简单诉求提供满意的自动回复,提高客户的服务效率和服务质量。常应用于咨询系统、娱乐系统和智能家居等。

(3)强化学习 强化学习的典型应用有虚拟游戏、机器人和自动驾驶汽车等。

1)虚拟游戏。相对于真实环境,虚拟游戏平台既可以训练、测试强化学习算法,又可以避免无关干扰,同时也能将实验代价降到最低。

2)机器人。在真实环境中,机器人的控制已经取得很大的进展。美国波士顿动力公司制造的机器人在复杂地形行走、多智能体协作等任务上表现良好,如图1-25所示。

3)自动驾驶汽车。自动驾驶被认为是强化学习短期内能技术落地的一个应用方向,很多公司投入大量资源在自动驾驶上,图1-26所示为百度的自动驾驶汽车。

图1-25 美国波士顿动力公司制造的机器人

图1-26 百度的自动驾驶汽车