为什么在神经网络里面使用梯度下降法对模型的权值矩阵进行调整

我们都知道,神经网络是先将模型参数的调整问题转换为一个求某个损失函数的极小值问题,然后通过梯度下降算法让参数选择合适的值使得该损失函数取得极小值。那么为什么梯度下降算法可以完成这个任务呢?

假设一个模型的损失函数为C(θ)C(\theta),其中θ\theta 是模型待确定的参数,它包含各层的权值矩阵WiW^{i},各层的偏置向量bib^{i}等等。那么如何取得一个合适的θ\theta^{'},使得C(θ)C(\theta^{'})小于任何的C(θ)C(\theta)

OK.
假设C(θ)C(\theta) 关于θ\theta 的函数图像为:
为什么在神经网络里面使用梯度下降法对模型的权值矩阵进行调整
假设,我们通过某种随机方式选中一个起点θ0\theta_{0},我们现在来看如何基于这个起点一步步地寻找到极小值点。根据泰勒公式,C(θ)C(\theta)θ0\theta_{0}处的一阶展开为:
C(θ)C(θ0)(θθ0)+C(θ0)C(\theta)\approx C'(\theta_{0})*(\theta -\theta_{0})+C(\theta_{0})
其中θ\thetaθ0\theta_{0}领域的某个点。
我们的目标是为了使得C(θ)C(\theta)更小,于是我们需要采取某种策略,在θ0\theta_{0}的基础上构造出另外一个点θ1\theta_{1},使得C(θ1)<=C(θ0)C(\theta_{1})<=C(\theta_{0})
因为:C(θ1)C(θ0)(θ1θ0))+C(θ0)C(\theta_{1}) \approx C'(\theta_{0})*(\theta_{1}-\theta_{0}))+C(\theta_{0})
所以:C(θ1)C(θ0)=C(θ0)(θ1θ0)+C(θ0)C(θ0)=C(θ0)(θ1θ0)C(\theta_{1})-C(\theta_{0})=C'(\theta_{0})*(\theta_{1}-\theta_{0})+C(\theta_{0})-C(\theta_{0})=C'(\theta_{0})*(\theta_{1} -\theta_{0})
为了C(θ1)<=C(θ0)C(\theta_{1})<=C(\theta_{0}),那么就得有:C(θ0)(θ1θ0)<=0C'(\theta_{0})*(\theta_{1} -\theta_{0})<=0
那么我们如何构造一个θ1\theta_{1}满足上面的不等式呢?
一种很容易的想到的构造方式为:kC(θ0)2<=0-kC'(\theta_{0})^{2} <=0,于是我们主要想办法使得(θ1θ0)=kC(θ0)\theta_{1}-\theta_{0})=-kC'(\theta_{0})就可以啦,
此时,θ1=θ0kC(θ0)\theta_{1}=\theta_{0}-kC'(\theta_{0})
OK,这就找到某种策略,在基于θ0\theta_{0}的基础上构造出另外一个点θ1=θ0kC(θ0)\theta_{1}=\theta_{0}-kC'(\theta_{0}),使得目标函数的值更小。
这个就是梯度下降算法的原理,而这个k就是所谓的学习速率,一般我们把k写成η\eta

而且 从这个原理中,我们可以知道θ1\theta_{1}需要是θ0\theta_{0}领域中的某个点,因此ηC(θ0)\eta C'(\theta_{0})不能太大,否则近似等式不成立。