TASK1 笔记
TASK1主要是对于3.1节各种不同的局部极小值以及3.2节中在梯度下降法中涉及的批与动量等概念的学习。
3.1局部极小值与鞍点
对于神经网络参数的训练,就是在参数空间里寻找使得损失函数最小的参数值。而损失函数的最小值一定是局部极小值,局部极小值不一定是损失函数的最小值。并且由于参数空间一般维度较高,局部极小值较多,不易判断当前得到的极小值是否是最优值。因此要通过其他方法判断得到极小值时是否停止迭代。
判断不同临界点
显然损失函数梯度为零是临界点的一个标志,也是损失函数值为局部极小值的一个必要条件。但是仍然需要有更多的信息来判断临界点的状态。
对损失函数在当前得到的梯度为零的参数值进行泰勒展开,由于参数是个向量,那么一阶导是一个向量(此时为0)而二阶导是一个矩阵(hessian矩阵)。
判别方法是若这个矩阵是正定的(所有特征值均为正)那么当前损失函数值是局部极小值,即,在一个选定的范围内,无论当前参数如何变动,都会使损失函数值变大。
当然如果是负定的(特征值全负)则为局部极大值。而如果是不定的(有正有负),则参数的改变不一定会减小或增大损失函数值,也就是鞍点,从图像可以看出确实导数为零而不是局部极小。此时可以选取hessian矩阵中负特征值的特征向量作为优化方向来优化参数。
后面还提到,落入鞍点实际上在实际训练中非常常见。如果说寻找临界点时要以hessian矩阵达到正定为目标,那么一般也只能完成50%到60%,毕竟维度是非常高的。这就导致大部分训练时损失函数下降停滞是卡在了鞍点。
3.2批量和动量
批量指每次更新参数是要学习多少样本,由于每一轮训练要将所有样本都用到一遍,所以批量大小不同,每一轮更新的次数也不同,调整这个超参数可以改变训练的效果。动量是用来摆脱鞍点的一个量,在鞍点被卡住时,可以通过上一次更新的惯性来离开鞍点。
批量的影响
如果不分批次进行训练,即每次将所有样本学习一遍后再更新一次参数,这样历次更新的参数变化更加平滑,更加准确,同时由于并行计算的存在,同等轮次的训练中速度会更快。缺点是对内存要求高,同时训练出来的模型过拟合,性能差。
分批进行梯度下降可以有效提高模型性能,由于随机噪声的扰动,参数不易被卡在鞍点,难以继续下降。
动量的影响
在鞍点被卡住时,实际上就是此时一阶导为零,用梯度下降法已没有可移动的方向。动量法就是在下降方向上加入一定权重的上一次更新的方向,这样即便梯度为零,仍然会按照倒数第一次的方向再更新参数,可以使损失函数继续有效的减少。