电子书

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

第一章:为什么使用深度学习?

第一章

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


深度学习用于开发可以在数据中发现模式的模型;然而,这并不是唯一能够做到这一点的方法。本章探讨了为什么你可能会选择深度学习而不是其他方法的一些原因。

dl-engineers-ebook-ch1-model-training-daisy

一旦训练好模型,就可以输入未标记的数据,模型将根据训练时学到的信息应用最可能的标签。

部分

模式识别

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

dl-engineers-ebook-ch1-linear-reg-k-means

很多这种非深度学习方法的好处是,逻辑往往更容易理解,而且它们使用的数据相对简单,数量更少。当你训练一个深度神经网络时,解释它为什么工作是很困难的,而且网络需要更多高质量的标记数据进行训练。考虑到这一点,为什么会有人选择深度学习而不是其他方法呢?原因之一是深度学习非常适合在大的解决方案空间中找到真正复杂的模式。

例如,您可能希望在图像中查找并标记特定对象以进行对象跟踪和定位,或者您可能希望可视化地检查硬件的缺陷和材料损坏

dl-engineers-ebook-ch1-raw-data-identified-pattern
dl-engineers-ebook-ch1-concrete-damage

在这些示例中,模式是像素的特定组合,表示行人或开裂的混凝土等事物。这些是复杂的模式,在不同的实例之间可能有很大的不同,或者它们可能以与其他模式几乎难以区分的微妙方式变化。因此,您选择的算法不仅需要对这些复杂的模式进行分类,而且还必须在一个非常大的解决方案空间中进行分类。

非图像数据中也存在复杂的模式。在音频信号中,您可能需要识别口语单词或从几秒钟的片段中识别歌曲。

在时间序列信号中也有复杂的模式,例如在预测性维护应用程序和生物医学行业中。

面板的导航

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

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

面板的导航

利用长短期记忆网络对心电信号进行分类

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

面板的导航

基于小波分析和深度学习的时间序列分类

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

在所有这些情况下,解决方案存在的复杂性和范围可能会使人们难以提出基于规则的方法,在这种方法中,人类必须自己设计和管理逻辑。这就是深度学习可以成为更好方法的地方。

注意:电子书中的例子集中在分类,其中一个离散标签应用于数据。然而,回归,其中模型的输出是一个连续的值,而不是一个离散的标签,这在深度学习中也是可能的。了解如何训练卷积神经网络(CNN)进行回归。

深度学习使用深度神经网络来建模输入数据和输出分类之间的关系。神经网络的细节超出了本章的范围;但是,简单地说,您可以将网络视为一系列层,每个层对数据执行特定的操作。早期层倾向于在较大的模式中寻找较小的特征,然后后期层查看这些特征的组合,以确定数据最可能的标签。

dl-engineers-ebook-ch1-model-training-car
部分

特征如何帮助定义模式?

为了理解深度学习的好处,以及特征识别如何帮助更大的模式识别,假设您需要开发一种可以从加速度数据中识别击掌的算法。

下图中的图表显示了三种不同手臂运动的加速度模式。中间的图代表击掌。你会如何开发一种算法来区分击掌的模式和所有其他可能的手臂动作?

如果你知道所有的定义特征

您可以从寻找解决这个问题的简单的基于规则的方法开始。一种解决方案是使用一个已知的击掌轮廓,您可以与来自传感器的连续加速度测量流进行模式匹配。例如,一个函数可以查看两个信号之间的标准偏差,当偏差低于某个阈值时,可以声称存在击掌。

然而,这种方法的困难之处在于,每一次击掌都不一样。有些人可能会更快或更慢地移动他们的手,在拍手之前停下来,或者只是以一种奇怪的方式击掌。即使你能提出一个有代表性的概要文件,或一组概要文件,像这样的方法可能对以前没有见过的击掌运动不太可靠。此外,如果你添加了太多的配置文件或提高了标准偏差阈值,以确保你捕捉到每一个击掌,你就有可能错误地将动作标记为击掌。

一个更聪明的方法可能是认识到,与其将模式作为一个整体来看待,它可能有很大的变化,不如找到一组每个击掌都有共同之处的小特征。

你可以声明任意组合的a慢——慢——快加速度是一个击掌,即使你观察到一个新的击掌,你没有明确地收集数据。例如,这些击掌看起来不同,但它们表现出相同的慢-慢-快加速度特征。

dl-engineers-ebook-ch1-high-five-graph-comparison

通过寻找较小的特征,并查看它们何时以何种顺序出现,您可以设计出比简单的全模式匹配算法更好的基于规则的分类器。

像这样基于规则的分类器的困难在于,您需要非常熟悉您正在寻找的模式,以确保您定义了正确分类所需的最佳特征。你还需要确信你已经处理了所有的变化,这样你就不会无意中让你的算法对矮个子、害羞的人、其他文化等等产生偏见。对于非常复杂的模式,这可能很耗时,甚至不可能手工完成。

如果你不知道所有的定义特征

深度学习可以帮助解决这个问题。模式的特征,甚至是不直观的特征,都可以自动学习,而无需设计人员显式地定义它们。因此,如果你试图对数据中的复杂模式进行分类,而你无法定义将该模式与其他模式区分开来的所有规则,那么深度学习可能是一个很好的探索选择。

请记住,深度学习有自己的一套要求。您需要大量高质量的标记数据,需要正确的网络架构,还需要确保网络可以部署到目标处理器,并在分配给它的时间内执行。这本电子书的以下章节解决了这些要求。