我们都知道,神经网络是先将模型参数的调整问题转换为一个求某个损失函数的极小值问题,然后通过梯度下降算法让参数选择合适的值使得该损失函数取得极小值。那么为什么梯度下降算法可以完成这个任务呢?
假设一个模型的损失函数为C(θ),其中θ 是模型待确定的参数,它包含各层的权值矩阵Wi,各层的偏置向量bi等等。那么如何取得一个合适的θ′,使得C(θ′)小于任何的C(θ)?
OK.
假设C(θ) 关于θ 的函数图像为:

假设,我们通过某种随机方式选中一个起点θ0,我们现在来看如何基于这个起点一步步地寻找到极小值点。根据泰勒公式,C(θ)在θ0处的一阶展开为:
C(θ)≈C′(θ0)∗(θ−θ0)+C(θ0)
其中θ 是θ0领域的某个点。
我们的目标是为了使得C(θ)更小,于是我们需要采取某种策略,在θ0的基础上构造出另外一个点θ1,使得C(θ1)<=C(θ0)。
因为:C(θ1)≈C′(θ0)∗(θ1−θ0))+C(θ0)
所以:C(θ1)−C(θ0)=C′(θ0)∗(θ1−θ0)+C(θ0)−C(θ0)=C′(θ0)∗(θ1−θ0)
为了C(θ1)<=C(θ0),那么就得有:C′(θ0)∗(θ1−θ0)<=0
那么我们如何构造一个θ1满足上面的不等式呢?
一种很容易的想到的构造方式为:−kC′(θ0)2<=0,于是我们主要想办法使得(θ1−θ0)=−kC′(θ0)就可以啦,
此时,θ1=θ0−kC′(θ0)
OK,这就找到某种策略,在基于θ0的基础上构造出另外一个点θ1=θ0−kC′(θ0),使得目标函数的值更小。
这个就是梯度下降算法的原理,而这个k就是所谓的学习速率,一般我们把k写成η。
而且 从这个原理中,我们可以知道θ1需要是θ0领域中的某个点,因此ηC′(θ0)不能太大,否则近似等式不成立。