多层神经网络 —— 梯度下降法的优化

驻点和鞍点

梯度下降法是一种求解函数极值的方法,函数在某一点的梯度是一个向量,梯度方向为函数值变化最快的方向(也就是取得最大方向导数的方向)。
多层神经网络 —— 梯度下降法的优化_第1张图片
梯度下降法沿着损失函数的梯度方向更新权值,
在这里插入图片描述
不断的逼近极小值点,直到梯度为0时,停止迭代。
在这里插入图片描述
凸函数只有一个驻点,
多层神经网络 —— 梯度下降法的优化_第2张图片
即最小值点。

因此,当机器学习模型的损失函数是凸函数时,采用梯度下降法,只要步长足够小,那么一定可以收敛于最小值点。例如,前面介绍的线性回归和逻辑回归,它们的损失函数就是凸函数。

但是多层损失函数的损失函数不再是凸函数,而是一个复杂的非凸函数。非凸函数可能有不止一个极值点,例如,在下面函数中,
多层神经网络 —— 梯度下降法的优化_第3张图片
它有四个点的导数都为0,他们都是极小值点。采用梯度下降法,可能达到全局最小值点,
多层神经网络 —— 梯度下降法的优化_第4张图片
也有可能达到局部极小值点,
多层神经网络 —— 梯度下降法的优化_第5张图片
虽然并不是全局最小值点,但是非常接近,也是一个可以接受的终点。

但是,如果不幸陷入了这个极小值点,
多层神经网络 —— 梯度下降法的优化_第6张图片
那么结果就会非常的不好。

下图为三维空间中的函数曲面,
多层神经网络 —— 梯度下降法的优化_第7张图片
★为全局最小值点,黑色的折线为初始值通过不断迭代更新参数到达全局最小值点的路径。
多层神经网络 —— 梯度下降法的优化_第8张图片
○为局部极小值点,从一个点出发,在训练过程中,也可能会陷入这个局部极小值点。

另外,对于非凸函数,导数为0的点不一定都是极值点,例如,在下图曲线中,
多层神经网络 —— 梯度下降法的优化_第9张图片
○位置点的导数为0,但是,它并不是极值点。这种既不是极大值,也不是极小值的驻点,称为鞍点。

在下图所示的空间曲面上,
多层神经网络 —— 梯度下降法的优化_第10张图片
○位置点也是鞍点。
多层神经网络 —— 梯度下降法的优化_第11张图片
在 A -> B方向为极小值,
多层神经网络 —— 梯度下降法的优化_第12张图片
但是在C -> D方向为极大值。
多层神经网络 —— 梯度下降法的优化_第13张图片
这个曲面看起来就像马鞍。

对于非凸函数,在局部极小值点或者鞍点,梯度接近与0,无法提供向哪个方向更新的信息,迭代就会停止,也可能并没有到达梯度恰好为0的位置,而是在这个点的旁边很近的地方来回震荡,陷入局部极小值区域,很难从这里逃脱出去,到达全局最小值的位置,因此,对于多层神经网络来说,使用梯度下降法,无法保证一定可以到达最小值点,这也是神经网络被诟病的原因之一。

我们只能够尽量改进训练方法,调整参数,优化算法,使其尽可能的收敛与全局最小值点。

通过上节课的学习,我们知道小批量梯度下降算法是训练大规模数据集的首选算法。

影响小批量梯度下降法的主要因素

这是,一元线性回归采用小批量梯度下降算法时的损失函数,
在这里插入图片描述
以及对应的参数更新迭代公式:
多层神经网络 —— 梯度下降法的优化_第14张图片
可以看出,影响小批量梯度下降法的主要因素有每次抽取的小批量样本的选择、批量中的样本数、学习率以及梯度。

下面就分别从上述几点入手,来改进和优化训练算法。

1、每次抽取的小批量样本的选择

在批量梯度下降法中,每次训练都使用整个样本集中的所有数据,因此,不存在样本这个不确定因素,而在小批量梯度下降法中,每次选择不同的小批量样本,损失函数是这个小批量中所有样本的残差总和,这些样本的属性值 xi 和 标签值 yi 也成为了损失函数中的自变量。也就是说,每一次迭代的梯度会受到抽样的影响,为了尽可能的减少样本对训练的影响,在每轮训练之前,最好打乱样本顺序,使其尽可能的均匀分布,然后再从中依次抽取小批量样本集。

这就好像我们在打扑克牌之前,总是要先洗牌一样,特别是有些数据集中的数据是自然排列的,连续的样本直接有着高度的相关性。

2、批量中的样本数

另外,小批量样本的数量,也就是批的数量,也会影响训练的效果。在一定的范围之内,批量中的样本数量越来越多,梯度方向约越准确,迭代次数越少。但是每次迭代所需要的时间也就越长。

因此,当批量中的样本增加到一定程度时,模型的性能会开始下降。如果小批量中,样本的数量等于整个数据集,
在这里插入图片描述
就是批量梯度下降法。

另一方面,批量中的样本数量越少,随机性也就越大,迭代次数越多。
在这里插入图片描述
我们在训练神经网络时,应该尽可能选择合适的批量大小,使得模型效率更高,更稳定,并且具有比较好的泛化能力。

在一些硬件系统中,使用特定大小的数组,可以充分利用处理器资源,进行并行计算。例如,在使用 GPU 时,通常使用 2 的幂数,
在这里插入图片描述
作为批量大小。

你可能感兴趣的:(笔记,神经网络,机器学习,深度学习)