如上图,深度学习有3个基本的步骤:
1) 定义函数,即选择建立神经网络
2) 建立一个标准,判断第一步得到的函数或者网络好不好,相当于损失函数,误差越小,则该函数或网络越好
3) 选择误差最小的那个函数或网络
将我们之前选择的模型或网络用在训练集上,如果误差大,则说明模型不好,需要重新选择或者训练模型;如果该模型在训练集上误差小,那么就在测试集上计算误差,如果测试集上误差也很小,则说明这个模型很好;如果在测试集上误差比较大,则说明模型在训练集上过拟合了,需要重新训练或者选择模型。
有时候,模型在测试集上误差大,并不一定时过拟合造成的。如下图,理论上说,神经网络层数越深,效果应该会更好,至少在训练集上误差会随着层数的增加误差减少(因为参数更多了,造成过拟合的话,那么训练集上误差就减少),但是实验效果却不是。56层的网络在训练集和测试集的误差都要比20层的误差大,因此56层神经网络模型并没有过拟合,而是56层的网络在训练的时候本身就没有训练好,得到了一个比较差的模型。
因此,该如何得到一个更好的模型呢?如下图所示,如果网络在训练集上误差就很大,那么可以选择新的激活函数或者自适应学习率方法来调整;如果网络在训练集上效果比较好,在测试集上效果比较差,则可以尝试使用提早结束训练、正则化和dropout等方法调整模型。