电子书

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

第 2 章

收集数据


使用深度学习训练网络需要大量经过标注的优质数据。本章介绍获取和收集这种数据的各种方法。

节

为何需要如此多的训练数据?

无论您选择使用什么方法来设计您的分类算法,都需要数据。即使您要设计基于规则的算法,您也需要了解系统及其预期的输入,才能编写这些规则。

这类数据与深度学习系统训练所需的数据之间的差异主要体现在质量上。

设计基于规则的算法时,您已经具备处理此类问题的多年经验和知识,可以借此快速排除一些明显行不通的方法或思路。然而,训练深度神经网络时,除非以部分训练的模型作为起点,否则就无从借鉴经验或现有知识。它们没有“明显”这种概念。

因此,这种网络需要借助更多的标注数据示例才能理解哪怕是信号上升沿这类最基本的概念,更不用说理解这些沿组成的更为抽象的模式,对其进行分类。

因此,深度学习需要使用更多数据,以弥补自身缺乏的、人类则通常具备的解决问题的经验和知识。

深度学习-工程师-电子书-第 2 章-知识量与数据大小对比图
节

获取标注数据

网络的质量取决于所提供的已标注训练数据的质量,因此您需要有涵盖整个解空间的数据。有几种方法可用于获取标注数据。您可以选择其中一种或几种方法,具体取决于要解决的问题的类型。

自行收集数据

您可以通过从传感器自行收集数据,从头开始构建数据库。对于自动驾驶汽车等应用场景,这是一种收集数据的好办法,因为行驶在道路上的汽车有数十亿之多,涉及各种可能的环境和行驶工况,您只需记录其传感器数据即可。然后,随着时间的推移、数百万里程的累积和无数小时的标注,数据库构建完成。

图 1.自主系统工作流

初看之下,自行收集数据是一种直接且符合直觉的数据集构建方法,但实际上有不少细节需要留意。

比如说,您需要确保收集到涵盖整个解空间的数据。例如,如果您的网络将用于识别人类语音中的字词,则理想的训练数据不仅要涵盖每一个字词的发音,还要涵盖大家对同一个字词的不同发音。如果您只基于一部分口音进行训练,您就只会对那一部分口音进行模型拟合,模型无法学到问题的整个域。

完成所有这些数据的收集后,您需要对其进行标注......这可不是一件轻松的任务!

现有数据库

幸运的话,您可能会在一个现有数据库中找到您需要的所有标注数据。例如,如果您要设计一个能识别图像中常见目标的网络,或许就可以利用 ImageNet,它包含超过 1,400 万张经过标注的图像。

您也可以找到音频数据集,其中包含经过标注的歌曲、讲话和其他声音的示例。而且,人们还在不断创建包含各类信号的新数据集。

增强现有数据

如果某个现有数据库只能提供您所需的部分训练数据,您可以通过添加您自己的标注数据以填补缺失之处来增强该数据集,还可修改现有数据,以涵盖更大的解空间。

以下是两个修改现有数据的例子:调整人类语音音高;旋转并缩放手写字符。

语音识别:音频数据库可能包含由一名说话者所说的一组字词。通过复制数据集并调整频率,您可以训练您的网络,以识别音高不同于原始数据库音高的语音。

字符识别:一个现有的手写字符数据库里的图像可能都已经过缩放和旋转,使得每个字符的大小和方向相同。如果您希望网络能够识别不同大小或者带有倾斜的手写字符,可以通过复制数据集并调整缩放和方向来增强原始数据库。

深度学习-工程师-电子书-第 2 章-语音识别图

但是,如果您的工程问题非常特殊,增强或扩展现有数据库的工作量可能不亚于从头开始创建您自己的数据库。

合成数据

如果您对问题的物理本质了解得非常透彻,足以构建仿真,则您可以利用仿真合成训练数据。合成数据的一个好处是标签实际上得来全不费工夫,因为您首先就需要标签来生成数据。

图 1.自主系统工作流

合成数据还适用于收集真实数据的代价非常高昂或带来危险的情形。例如,在相当多情况下,故障可能导致机器人硬件损坏,此时,相比构建真实情境来收集数据,机器人仿真可能是个代价更小的办法。

反过来,如果要构建一个网络来对音频信号中的字词进行分类,则对说话者进行仿真可能意义不大,因为其难度远远大于收集大量真实音频。因此,您需要根据具体问题,决定是合成数据、收集真实数据还是两者相组合。

节

示例:合成波形数据

如需数据合成示例,请参阅 MATLAB 示例基于深度学习的雷达和通信波形分类。此示例使用深度学习训练一个 CNN 网络来识别射频波形调制类型。

该分类网络要识别的一类调制是线性调频 (LFM),下图显示了单一载波频率、扫描带宽、脉冲宽度和扫描方向的 LFM。

图 1.自主系统工作流

上图是理想模式,而现实环境中有诸多因素可能损伤此信号:天气、来自无线电电子元件的硬件失真、天线附近障碍物的反射,还有许多其他噪声或误差源。

以下每个信号都是一种含噪 LFM 波形。

波形分类器需要能够理解这些信号之所以是线性调频的独有特征。因此,解空间(执行分类算法的全部条件和场景)非常巨大,您的训练数据集需要对其完整涵盖。这正是深度学习和合成数据的用武之地。

由于各类射频调制方案和导致噪声的各种损伤已为人熟知,合成训练数据用在这里再合适不过。此示例为每个调制类型生成了 10,000 个帧;下图显示了其中几个波形的示例帧。

深度学习-工程师-电子书-第 2 章-调制分类-深度学习

然后,我们使用这些合成数据训练网络。真正的考验在于该网络标注真实射频数据的性能如何。我们一般都希望使用真实场景在硬件上验证并测试模型,对这个网络也不例外。

节

进一步了解如何使用合成数据

面板导航