1.3.1 数据与数据集
大量高质量、精准、安全的数据是深度学习训练的基础。数据是人工智能必备的学习资源。人工智能领域有“garbage in garbage out”的说法,即如果数据精度达不到标准,那么训练出来的模型也是不可靠的。
在使用深度学习技术训练模型时,一般把数据集划分为训练集、验证集和测试集。数据集的划分方式与作用如图1-1所示。
图1-1 数据集的划分方式与作用
在模型训练过程中,训练集用于训练神经网络模型,通过不断学习数据特征来更新网络模型参数。验证集用于检验模型的状态、调整超参和防止过拟合。如果模型验证效果良好,在验证集上的各项指标均满足要求,后面需要继续用测试集进行模型评估。测试集用来评价模型的泛化能力。泛化能力指的是训练得到的算法是否具有推广能力和对新问题的适应能力,即模型在训练集和验证集上学习的能力能否很好地推广到新的数据集——测试集上。若在测试集上的识别率较高,则表明模型的泛化能力较强;若在测试集上的识别率较低,则表明模型可能存在一定的过拟合,需要调整训练策略。
下面讨论训练集、验证集和测试集三者的关系。首先,3个集合中的数据应该具有某种一致性,即数据的关键属性、数据特征和应用场景等情况是一致的。其次,训练前无法获得测试集,因此测试集在训练过程中是不可见的,原因在于人工智能应用中的数据是未知的。最后,需要将训练之前获得的数据进行合理划分,划分为不重叠的训练集和验证集。通常采用随机选取的方式划分训练集和验证集,常见的数据比例为8:2或者7:3,也可以根据实际情况设定。
关于3个集合的关系有一个形象的比喻:若将训练集比作课堂的教学内容,那么验证集是课后作业,测试集是考试题目。学生通过长时间学习课程获得知识和能力,然后通过课后作业检验学习效果,最后通过考试检验学习水平。通常课后作业和课堂教学内容不一样但紧密相关,考试的题目应该是平时没有见过的。