电子书

深度学习实用指南:从数据到部署

章节

第 1 章:为何使用深度学习?

第 1 章

为何使用深度学习进行模式识别?


您可以利用深度学习开发模型,用于找出数据中的模式;但是,深度学习并不是唯一的方法。本章将探讨选择深度学习而非其他方法的可能原因。

深度学习-工程师-电子书-第 1 章-训练模型-雏菊

模型经过训练后,我们可以将未标注数据馈入其中,模型会基于在训练时学到的信息应用最可能的标签。

节

模式识别

以下是两个简单的模式识别示例:一个示例使用线性回归确定传感器数据随时间变化的趋势,另一个示例使用 k 均值算法将数据聚类到相似的组。

深度学习-工程师-电子书-第 1 章-线性回归-k 均值

像这样的非深度学习方法大多都有着更易理解的逻辑,并且所用的数据相对简单,数据量也较小。但如果选择训练深度神经网络,解释其工作原理可能就比较困难,并且训练这种网络需要优质的标注数据,数据量也大得多。既然这样,我们为什么还是会选择深度学习呢?原因之一在于深度学习特别适合用于在庞大的解空间寻找相当复杂的模式。

例如,您可能需要在图像中寻找并标注特定目标,以用于目标跟踪和定位;或是需要对硬件进行视觉检查,看是否存在缺陷和材料损伤。

深度学习-工程师-电子书-第 1 章-原始数据-识别的模式
深度学习-工程师-电子书-第 1 章-水泥-损伤

在这些示例中,模式是代表行人或水泥裂损等目标的特定像素组合。这些属于复杂的模式,不同实例间可能差异巨大,也可能仅在细微处存在差异,以至于难以跟其他模式区分。因此,您选择的算法不仅要对复杂模式进行分类,还要在一个相当庞大的解空间内进行这种分类。

复杂模式也存在于非图像数据中。在音频信号中,您可能需要从一小段几秒钟的音频中识别特定的词或者一首歌。

时间序列信号中也存在复杂模式,这在预测性维护应用和生物医学行业中较为常见。

面板导航

使用深度学习进行时间序列预测

使用长短期记忆 (LSTM) 网络进行时间序列数据预测。

面板导航

使用长短期记忆网络进行 ECG 信号分类

使用深度学习和信号处理对 2017 年 PhysioNet 挑战赛的心电图 (ECG) 数据进行分类。

面板导航

使用小波分析和深度学习对时间序列进行分类

使用连续小波变换 (CWT) 和深度卷积神经网络对人类心电图 (ECG) 信号进行分类。

在以上这些情况下,解的复杂度之高、范围之广都让我们难以找到基于规则的方法,因为这类方法要求我们自己创造和组织逻辑。而这正是深度学习发挥优势之处。

注意:本书中的示例关注的是分类,即对数据应用离散标签。不过,对于模型输出是连续值而非离散标签的回归问题,深度学习也同样适用。了解如何训练卷积神经网络 (CNN) 用于回归。

深度学习使用深度神经网络对输入数据和输出分类之间的关系进行建模。神经网络的具体原理不在本章讨论范围内。简单地说,您可以将网络视为一系列层,每一层对数据执行特定的操作。较浅的层通常会寻找较大模式中存在的较小特征,较深的层会关注这些特征的组合,以确定数据最可能对应的标签。

深度学习-工程师-电子书-第 1 章-训练模型-车
节

如何借助特征定义模式?

为了理解深度学习的强项以及特征识别对大型模式识别的帮助,我们假设要开发一个算法,用来识别加速度数据中的击掌模式。

下方绘图分别显示了三种手臂动作的加速度模式。中间的绘图代表击掌。您打算如何开发算法,区分击掌模式与所有其他可能的手臂动作呢?

如果已知所有决定性的特征

您可以先尝试为此问题寻找普通的基于规则的方法。一种方法是使用已知的击掌特征曲线,对来自传感器的加速度测量值连续数据流执行模式匹配。例如,可以用一个函数计算两个信号之间的标准差,然后在标准差降至某个阈值以下时,认为检测到击掌模式。

但是,这种方法的难点在于每次击掌并不完全相同。每个人移动手的速度或快或慢,有可能在手掌接触前顿一顿,也可能就是姿势很特别。即使您能找到一个或者一组有代表性的特征曲线,但万一遇到从未见过的击掌动作,这种方法就不见得可靠。此外,如果您为了确保捕捉到各种击掌动作,包含了太多特征曲线,或者提高了标准差阈值,又可能将其他动作误标注为击掌。

或许,与其将模式视为一个整体、以至于不得不面对五花八门的变体,我们不如寻找每次击掌共有的一系列较小特征。

您可以认为任何慢 - 慢 - 快的加速度组合都是击掌,哪怕是那些尚未专门收集相关数据的新的击掌动作。比如说,下图这两种击掌看起来不太一样,但都展现出慢 - 慢 - 快的加速度特征。

深度学习-工程师-电子书-第 1 章-击掌-图线-比较

我们寻找较小的特征并观察它们何时以何种顺序出现,从而设计出一个比单纯的全模式匹配算法更加有效的基于规则的分类器。

但是,这种基于规则的分类器对设计者提出了很高的要求:设计者必须对所要寻找的模式非常熟悉,才能保证定义正确分类所需的最合适的特征。设计者还要确信已经考虑到所有情形,确保算法没有无意中忽略身高较矮、较为害羞或其他文化背景的人群。这就意味着模式会相当复杂,实际设计起来不仅相当耗时,甚至可能无法仅凭人力做到。

如果不知道所有决定性的特征

深度学习可以帮助我们解决问题。它能自动学习模式的特征,甚至是那些不直观的特征,而且不需要设计者事先显式定义特征。因此,如果您想要对数据中的复杂模式分类,但是无法定义将这一模式与其他模式相区分的所有规则,不妨尝试深度学习。

但是别忘了,深度学习也有其特殊要求。您需要有大量优质的标注数据,需要选择正确的网络架构,并且需要确保该网络可以部署到目标处理器,并在分配的时间内执行完毕。本书后续章节将介绍如何满足这些要求。