1.1.4 深度学习的基本工作流程

深度学习的基本工作流程如图1-10所示。

图1-10 深度学习的基本工作流程

训练:神经网络模型的学习过程也是调整权重和偏差以便拟合训练数据的过程。“拟合”是指根据训练样本学习适用于所有潜在样本的“普遍规律”,以便在遇到新样本时进行正确的判别。如果用学生学习的过程来比喻深度学习,那么训练阶段就是在课堂上学习的过程。

验证:模型验证也称模型评估,用于查看训练的效果。该流程一般会调整模型的超参,对不同的算法进行验证,检验哪种算法更有效。“超参”是指在开始学习过程前设置值的参数。因此需要通过验证阶段找到最优的超参数值。如果用学生学习的过程来比喻深度学习,那么验证阶段就是做作业的过程。做作业不但可以验证课堂学习的效果,而且可以巩固课堂学习的成果。

测试:用于评估最终模型的泛化能力。“泛化能力”是指算法对训练样本中没有的新鲜样本的适应能力。如果根据训练样本学习出的“普遍规律”适用于新鲜样本,则说明算法的泛化能力强。如果用学生学习的过程来比喻深度学习,那么测试阶段就是考试的过程。考试的题目不一定都出现在课堂上和作业中,它能检验学生的举一反三的能力。

根据深度学习的3个阶段,数据集可被分成3份,即训练集、验证集和测试集。根据斯坦福大学人工智能和机器学习专家吴恩达教授的建议,如果数据集规模较小(比如只有100条或10000条),则可以按60%训练集、20%验证集和20%测试集来分配数据;如果数据集规模较大(比如达到百万条),则验证集和测试集要分别小于数据总量的20%和10%。

在训练、验证和测试这3个阶段中,训练阶段是最重要的,这一阶段要完成深度学习模型的构建,并应用算法对输入数据进行处理,最终得到预测值。深度学习模型的训练过程如图1-11所示。

图1-11 深度学习模型的训练过程

1.数据处理

数据处理首先要加载数据集,可以从本地读取数据,也可以选择从线上的资源库读取数据;然后对数据进行预处理,例如在图像处理的模型中将所有输入图像都转换为统一尺寸的图像。第3章将介绍在MindSpore框架中进行数据处理的方法。

2.模型设计

模型设计需要完成以下工作。

① 确定神经网络的模型结构:比较常见的神经网络包括CNN、RNN(循环神经网络)和GAN等。其中CNN常用于处理图像任务;RNN通常用于处理顺序任务,包括逐字生成文本或预测时间序列数据等;GAN用于根据训练集的特征生成同类的新实例。每种神经网络都包含一些经典的模型结构,用于实现图像分类、目标检测、语义分割、自然语言理解、文本分类等任务。第5章将介绍CNN的工作原理和应用情况。第9章将介绍GAN和RNN的应用实例。

② 确定神经网络的深度和宽度:神经网络的深度是指网络的层数,宽度是指每层的通道数。在卷积神经网络中,通道数通常指图片的类型,如果图片的颜色采用 RGB类型,则通道数为 3。宽度和深度决定了隐藏层的神经元数量,隐藏层的神经元越多,模型的拟合效果越好,但是会影响训练的效率。

③ 选择激活函数:常用的激活函数包括Sigmoid、Tanh和ReLU(修正线性单元)等,具体情况将在第5章中结合相关应用进行介绍。

④ 选择损失函数:深度学习模型可以根据输入数据得到预测值。在开始模型训练前会先确定一个训练的目标。一个好的模型,其预测值与目标值之间的误差会尽可能小。损失函数的作用是衡量预测值与目标值之间的误差。

虽然比较经典的神经网络模型都有默认的网络结构、超参数值、激活函数和损失函数,但是在实际应用时,也可以根据具体的应用场景通过训练进行微调。

模型设计涉及的技术问题将在第5章进行介绍。

3.训练配置

训练配置的主要工作包括设定模型的优化器和配置参与计算的硬件资源。

深度学习模型训练的目标是寻找合适的参数,使损失函数的值尽可能小。解决这个问题的过程被称为最优化,所使用的算法叫作优化器。常用的优化器包括SGD(随机梯度下降)算法和AdaGrad(自适应梯度)算法等。

4.训练过程

训练过程包括以下3个步骤。

① 前向计算:将输入数据传入模型并计算得到输出数据。

② 计算损失函数:如果损失函数的值小于期望值,则停止训练。

③ 反向传播:如果损失函数的值大于期望值,则根据前向计算得到的输出数据,通过优化器从后向前地优化网络中的参数。

5.保存模型

训练好的模型被保存起来,以备日后模型评估和预测时调用。