(摘录源自:CS231n课程笔记)
在训练神经网络的时候,应该跟踪多个重要数值。这些数值输出的图表是观察训练进程的一扇窗口,是直观理解不同的超参数设置效果的工具,从而知道如何修改超参数以获得更高效的学习过程。
损失函数
下图的左侧,绘制了不同学习大小可能出现的损失值曲线;
- 学习率过小时,损失值下降缓慢,曲线平缓,收敛太慢;
- 学习率偏大时,损失值下降快速,但很可能不能找到比较合适的极小值;
- 学习率过大时,损失值先下降,后上升,因为可能在极小值点位置反复越过极小值
下图的右侧,显示了一个典型的随时间变化的损失函数值,在CIFAR-10数据集上面训练了一个小的网络,这个损失函数值曲线看起来比较合理(虽然可能学习率有点小,但是很难说),而且指出了批数据的数量可能有点太小(因为损失值的噪音很大)。
损失值的震荡程度和批尺寸(batch size)有关,当批尺寸为1,震荡会相对较大。当批尺寸就是整个数据集时震荡就会最小,因为每个梯度更新都是单调地优化损失函数(除非学习率设置得过高)。
损失值变化曲线
准确率
在训练分类器的时候,需要跟踪的第二重要的数值是验证集和训练集的准确率。
下图蓝色曲线能够展现模型过拟合的程度:
- 在训练集准确率和验证集准确率中间的空隙指明了模型过拟合的程度。在图中,蓝色的验证集曲线显示相较于训练集,验证集的准确率低了很多,这就说明模型有很强的过拟合。
- 遇到这种情况,就应该增大正则化强度(更强的L2权重惩罚,更多的随机失活等)或收集更多的数据。
- 另一种可能就是验证集曲线和训练集曲线如影随形,这种情况说明你的模型容量还不够大:应该通过增加参数数量让模型容量更大些。
———·———·———·———·———·———·———·———·———·———·——
(以下)暂未完全理解、体会的部分
———·———·———·———·———·———·———·———·———·———·——
网友评论