深度学习实用指南:从数据到部署
第 3 章
数据预处理
精心准备用于深度神经网络的数据可大幅提高模型准确度。本章介绍为何数据质量对深度学习如此重要,以及针对不同网络和数据类型的考量。
降低数据维度
我们使用深度学习训练一个网络来识别数据中的模式。因此,但凡不是识别要寻找的模式所需的信息,都可以删除,且不会影响总体分类。
![深度学习-工程师-电子书-第 3 章-比较马克杯](https://ww2.mathworks.cn/campaigns/offers/next/practical-guide-to-deep-learning/data-preprocessing/_jcr_content/mainParsys/band_2102914970/mainParsys/lockedsubnav/mainParsys/image_copy_copy_copy.adapt.full.medium.jpg/1700468741217.jpg)
多余的数据是不必要的,而且删除这些数据还能让留下的模式更加明显。通常,如果模式对于人类来说更明显,则它们对于深度学习算法来说也更明显,这对训练过程会有帮助。
数据降维也是为了避免所谓的“维度灾难”。数据维度越高,其中包含的特征及特征变体也越多,因此,涵盖解空间中所有可能的组合所需的训练数据也越多。所以,高维度不仅意味着更大的数据,也意味着需要更多数据去训练网络,进而意味着更复杂的网络、更大的数据存储和更长的训练时间。
数据降维的一个难点是您必须了解数据才能实现成功降维。您需要确信您能够有效地降低维度,而不会从数据集中误删除关键信息。因此,在深度学习应用中,特定领域知识仍相当重要。
例如,如果您想训练一个能对六角螺母制造缺陷进行视觉识别的网络,您需要了解要寻找的瑕疵,以及这些瑕疵在数据中如何呈现。在下面的数据图像中,要减小图像大小,尺寸缩放不是个好主意。由于您要寻找的瑕疵或模式相当小,缩小图像尺寸会丢失有助于区分的细节。在这种情况下,更合适的降维方式可能是裁剪图像。
![深度学习-工程师-电子书-第 3 章-六角螺母图像](https://ww2.mathworks.cn/campaigns/offers/next/practical-guide-to-deep-learning/data-preprocessing/_jcr_content/mainParsys/band_2102914970/mainParsys/lockedsubnav/mainParsys/image_copy_copy_copy_463891931.adapt.full.medium.jpg/1700468741230.jpg)
针对网络架构预处理数据
原始数据经常需要经过修改,才适用于网络架构。这意味着要确保数据在大小、单位和信号类型等方面都符合该网络的预期。下面几个示例大致介绍了不同的网络和数据类型,并重点说明了它们可能需要的不同数据预处理方式。
最常见的两种网络架构是卷积神经网络 (CNN) 和长短期记忆 (LSTM) 网络。
CNN
CNN 的核心组成部分是卷积层。它的工作原理是令一个滤波器(或核)滑过输入数据,寻找被激活的区域。根据这些激活的区域,CNN 能够了解存在哪些特征,这些特征位于数据的哪些区域。通过组合这些特征,网络可以确定最可能的分类。
LSTM
LSTM 网络是一种循环神经网络 (RNN),它可以学习序列数据的时间步之间的长期相关性。LSTM 网络的核心组成部分包括一个序列输入层和一个 LSTM 层。序列输入层用于将文本或时间序列数据等序列馈入网络。LSTM 层用于学习序列数据的时间步之间的长期相关性。
对于这两种网络(以及其他大部分网络),输入在以下方面是固定的:馈入网络的元素个数,以及数据所表示的意义。也就是说,如果您收集的数据的大小或类型不一致,则需要将其预处理成网络预期的形式。
数据类型
数据预处理的具体方法取决于要处理的数据类型。以下是一些例子。
表格数据:表格数据在深度学习应用中不是很常见,但仍有其适用情形。您可能需要使用独热编码将一系列表格数据转换成为稀疏矩阵,或使用实体嵌入将其转换为更稠密的矩阵。
图像和视频:馈入网络的每一张图像需要有大小一致的宽度、高度和颜色层。这可能意味着部分预处理工作是对维度不合适的图像进行裁剪、填充或大小调整。
![深度学习-工程师-电子书-第 3 章-马克杯-原始数据-裁剪-填充-调整大小](https://ww2.mathworks.cn/campaigns/offers/next/practical-guide-to-deep-learning/data-preprocessing/_jcr_content/mainParsys/band_2102914970/mainParsys/lockedsubnav/mainParsys/image_copy_copy_copy_2064527978.adapt.full.medium.jpg/1700468741268.jpg)
信号:信号的长度和采样率必须一致,否则同样需要裁剪、填充和重采样。
![深度学习-工程师-电子书-第 3 章-图-原始数据-裁剪-填充-调整大小](https://ww2.mathworks.cn/campaigns/offers/next/practical-guide-to-deep-learning/data-preprocessing/_jcr_content/mainParsys/band_2102914970/mainParsys/lockedsubnav/mainParsys/image_copy_copy_copy_178118617.adapt.full.medium.jpg/1711976436224.jpg)
![深度学习-工程师-电子书-第 3 章-原始数据-填充-音频信号](https://ww2.mathworks.cn/campaigns/offers/next/practical-guide-to-deep-learning/data-preprocessing/_jcr_content/mainParsys/band_2102914970/mainParsys/lockedsubnav/mainParsys/image_copy_copy_copy_1005695936.adapt.full.medium.jpg/1700468741300.jpg)
人类语音中大部分重要音频内容的频率低于 8 kHz;因此,可以在 16 kHz 对这种音频信号进行重采样,同时不会损失信息。
短时傅里叶变换能够可视化音频信号中的频率成分随时间变化的情况。具体方法如下:设定一个小于完整信号的窗大小,然后在窗滑过整个信号的同时,对窗内的数据子集执行快速傅里叶变换 (FFT)。
![深度学习-工程师-电子书-第 3 章-图-第一-第二-第三-窗](https://ww2.mathworks.cn/campaigns/offers/next/practical-guide-to-deep-learning/data-preprocessing/_jcr_content/mainParsys/band_2102914970/mainParsys/lockedsubnav/mainParsys/image_copy_copy_copy_1307518529.adapt.full.medium.jpg/1700468741312.jpg)
将窗内数据与加窗函数相乘,确保它从 0 开始,以 0 结束。对重复不连续的信号执行 FFT 时,会引入额外的高频信息,而以上操作可以将之消除。
![深度学习-工程师-电子书-第 3 章-图-缩放的窗](https://ww2.mathworks.cn/campaigns/offers/next/practical-guide-to-deep-learning/data-preprocessing/_jcr_content/mainParsys/band_2102914970/mainParsys/lockedsubnav/mainParsys/image_copy_copy_copy_144199951.adapt.full.medium.jpg/1700468741325.jpg)
每次 FFT 会生成数以千计的值,横跨整个频谱范围。识别音频数据中的单个字词不需要这种粒度水平。减少频率信息量的一种常用方法是将频谱分为多个 bin,然后使用 Mel 滤波器组对每个 bin 中的频率进行缩放和求和。Mel 滤波器组是一组三角带通滤波器,这些滤波器在低频密集分布,并随着频率增加而逐渐变宽变稀疏。这种滤波器组可以模拟人类听力的敏感度,即相对于高频,人耳对低频更加敏感。
将 Mel 滤波器组应用于每个窗频谱后,对应每个三角 bin 得到一个值,表示该 bin 中频率成分的量。下图显示了 bin 频率成分绘图,值的大小决定了方形标记的颜色。
![深度学习-工程师-电子书-第 3 章-应用 Mel 滤波器组](https://ww2.mathworks.cn/campaigns/offers/next/practical-guide-to-deep-learning/data-preprocessing/_jcr_content/mainParsys/band_2102914970/mainParsys/lockedsubnav/mainParsys/image_copy_copy_copy_1770769678.adapt.full.medium.jpg/1700468741349.jpg)
所有这些频率 bin 和时间窗包含的信息可以综合为一张图:频谱图。频谱图是一种时间序列数据预处理方式,可将数据转换为图像,以用作卷积神经网络的输入。
![深度学习-工程师-电子书-第 3 章-频谱图](https://ww2.mathworks.cn/campaigns/offers/next/practical-guide-to-deep-learning/data-preprocessing/_jcr_content/mainParsys/band_2102914970/mainParsys/lockedsubnav/mainParsys/image_copy_copy_copy_1768706647.adapt.full.medium.jpg/1700468741362.jpg)
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
亚太
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)