第 2 章
创建标注数据来训练和验证模型
训练集、验证集和测试集:它们之间有什么区别?
您的大部分数据都应该用来训练网络。反向传播算法通过将输入数据拟与提供的输出注释拟合来使用训练数据集优化大量网络权重。训练数据集往往规模庞大,会包括已有数据或仿真数据。它们会被用于通过优化权重值来训练和拟合数据。这样,模型就能学习到什么内容它应该认为是重要的。
验证数据集也会被用来训练模型。这类数据的作用是在训练过程中不断检查模型对新数据的泛化程度,并帮助您在模型之间做出选择。需要大量数据的优化算法不会使用验证集。一般情况下,验证集可能比训练集要小得多。在现代系统中,验证数据的创建往往要尽可能切合实际,通常会涉及获取新的实际信号并重新进行标注。
在一轮训练完成后,您可以使用测试集来判断模型的表现。和验证集一样,测试集通常也要尽可能贴合实际。创建新数据通常涉及获取新的实际信号并重新进行标注。
为了创建有效的深度学习模型,通常至少需要有三种不同类型的数据才能开发模型:训练模型的数据、验证模型是否真正在学习的数据,以及测试模型最终性能的数据。
导入数据集
鉴于训练深度学习模型所需的数据量很大,将内存限制和数据管理考虑在内至关重要。如果内存无法容纳所有数据,您需要一种不用一次性全部读取即可表示存储数据的方法。在 MATLAB 中,实现此目标的方法之一是使用数据存储,如 audioDatastore
(需要 Audio Toolbox™)或 signalDatastore
(需要 Signal Processing Toolbox™ 和 Deep Learning Toolbox™)。这些数据存储有助于管理内存中或内存外的信号,并使用并行池处理信号以提取特征。
标注
正确标注或标记数据对于正确校准模型非常必要。对于验证数据集和测试数据集,具有准确的标签非常重要,因为这些数据集是您在训练时或训练完成后判断模型表现的基础。训练数据的标签也很重要,但考虑到训练数据集非常大,这些标签通常使用不同的方法来处理。
本节先介绍验证数据集和测试数据集的标签,然后再探讨训练数据集。
验证数据和测试数据
验证数据需要准确地代表网络在最终应用中会看到的数据。首先,验证数据中的信号必须能确切地代表您试图解决的问题。对音频应用来说,这可能包括在安静环境中用麦克风录制信号,然后用该麦克风在带有不同程度的噪声、回声和混响的环境中再次录制信号。
验证数据应该包括一些高质量标签。这些标签可以手动添加。它们就是您希望网络学习的内容。在此示例中,这就是蓝色信号上方的红色掩膜。
如果您只回放带有关键词掩膜的区域,则语音可能听起来会是这样:
如何才能为验证数据和测试数据获得高质量的标签?
不妨试用经过训练并已证实能够准确地执行类似任务的智能系统;通常情况下,这意味着要手动标注数据,或使用预训练的机器学习模型。
信号标注器等交互式 App 让手动标注更轻松。交互式 App 提供了一个用来选择信号中的区域、分配标签、调整选定段和其他任务的界面。
您也可以选择使用其他人开发的有效模型。下面是通过 Google 的云 API 接口使用其著名语音转文本服务的示例。
要为触发词创建掩膜标签,您可以将词标签导出到 MATLAB 命令行,输入几行代码后,即可获得所需的标签。请参阅此示例的代码。
您可以在这里回放标注的段。
训练数据
在处理录音等信号数据时,记录数 TB 优质数据并手动准确标注是不现实的。解决此问题的一种方法是使用现有的已标注记录,这种方法可能只适用于解决略微不同的问题。您可以授予许可的研究数据集也是一个不错的选择。
使用外部 API 标注音频信号中的有声词
自己动手使用 IBM® Watson Speech to Text API 测试信号标注器。
即使训练集不是为您的应用量身定制的也没关系;不过,训练数据和验证数据之间的差异越大,准确性的差距也就越大。
当然,如果您有其他方法方法,比如自动标注算法来帮助您快速入门,那就更好了。
Audio Toolbox 就有许多自动标注函数,包括 detectSpeech
和 speech2text
,可以帮助进行标注。同样地,Signal Processing Toolbox 支持使用 Peak Labeler 和自定义函数进行批量自动标注。
下一章将介绍更多提高训练数据质量和扩大训练数据规模的方法,例如数据增强和数据合成。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 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 (한국어)