神经网络学习记录(二):梯度下降与反向传播
前面我们得到了模型对各样本预测的损失值,接下来需要利用这些损失值进行优化和调整模型参数。优化的目标是尽可能降低损失值,从而提升模型的预测性能。为此,我们通过调整权重矩阵和偏置项来实现模型的优化,具体方法采用梯度下降法。
梯度下降法
- 通过++计算损失对权重和偏置项的梯度,沿着损失函数梯度下降的方向逐步更新参数++,直至找到最优解或损失值达到最低。
模型存在较大的损失实际为线性变换层的参数设置不恰当,故将问题转换为调整回归参数的问题,则这里采用MSE为损失值,公式如下:


其中可以看到计算了关于(W,b)的损失函数,从而将问题转换为二元函数的最小化问题,在数学上直接求偏导再令为0后判断即可,而利用程序则是通过分别求出关于W、b的梯度的负数来反映对于一个变量W或者b而言的最大增长的反方向,即为最快下降的方向,下降到损失函数的最小值处即满足要求,可以利用如下公式计算(单隐藏层网络):


计算得到的平均梯度取负后,参数—点需要进行“移动”,即沿着损失减少的方向朝下一个位置前进,这一过程对应于参数的更新。具体来说,更新的过程就是将当前参数值加上计算出的负梯度值。为了控制每次移动的幅度,我们引入一个超参数(α),即学习率,用于调节在梯度方向上移动的步长,若学习率过大,可能导致参数越过最优解;若学习率过小,收敛速度会变慢同时容易陷入局部最优解。通过合理地调整学习率,模型能够实现更稳定和精确的参数更新,确保以合适的速度接近损失函数的最小值。通过如下的公式实现参数更新:


[η = α]
上述梯度计算与更新是对于单个参数而言的,能够稳定优化充分利用数据但是当数据量大的时候计算的开销很大不利于数据的应用,从而出现下述另外的3中权衡取舍的方法:


结合重复迭代过程则能够批量的处理减少损失,通过上述的流程即可让模型自行的优化参数减少损失,体现为模型能够较好的识别到在各类别间有明显区分力的区域,从而提高明显的预测识别效果。

反向传播过程
-
反向传播是神经网络模型训练中的关键步骤,主要用于++计算损失函数对权重和偏置项的梯度,并通过这些梯度不断优化模型参数++。它是梯度下降法在神经网络中的实现。
-
反向传播的核心是链式法则。在神经网络中,每一层的输出作为下一层的输入,因此损失函数的++梯度需要一层一层地从输出层传递回去++。这种逐层计算梯度的方式称为反向传播。

可以看到反向传播的一个基本过程,每一层的梯度计算涉及该层的局部梯度与上游传递过来的梯度的逐层相乘,当前输入层的值为原本的值减去该梯度,具体计算如下图:

这表明改变(x)或(y)的值对(f)的变化影响是相同的(均为-4),而改变(z)的值对(f)的变化影响为3。这种变化过程遵循链式法则:首先根据梯度信息调整(z)的值(减去3),然后再对(x)和(y)的值进行调整(加上4)。在实际应用中,还需要结合学习率的大小来控制每次参数更新的步长,确保模型更新过程稳定且收敛效果良好。
反向传播的关键是链式法则,即在网络的每一层计算局部梯度,并将这些局部梯度沿路径依次相乘,最终得到损失函数对各参数的总梯度,如果输出值是多个输入的函数组合,那么总梯度是沿路径累积的梯度乘积。更加形象的梯度传播过程如下图:



·
可以看到能够将一层的多步运算看为一个整体来考虑梯度的反向传播,常常在激活函数的时候整体考虑。
在反向传播过程中,常见的数学运算(如加法、乘法、最大值、指数运算等)可以抽象为符号单元(functional units)。由于这些运算的梯度计算是确定且可复用的,我们可以在网络的不同部分对相同的符号单元直接照搬梯度传播规则,实现反复运算。这种做法简化了复杂网络的梯度计算,使得梯度传播更加高效。


在该图中,红色为反向传播的梯度值,绿色为该节点处的值。其中红色的1表示反向传播到乘法节点时,上游传递的初始梯度为 1。这是因为在深度学习中,反向传播从损失函数开始,++损失函数的梯度通常被初始化为1++(对自身求偏导)。
这意味着:
- 反向传播从最右侧开始时,损失函数的初始梯度值是 1。
- 该初始梯度向左传播,乘法门和加法门会根据各自的运算规则继续传递和更新梯度。
总结
正向传播负责将输入数据逐层传递到输出层,得到模型的预测结果;反向传播则利用链式法则,将损失的梯度逐层向后传递,计算各层参数的更新方向,并通过梯度下降法更新权重和偏置项。这种协同工作保证了神经网络能够不断优化,提高预测的准确性和泛化能力。通过符号单元的复用与梯度的高效计算,整个网络的训练过程变得更加简单且易于实现。
至此,我们已经能够利用前面计算得到的损失值来求解相应参数的梯度变化,并通过这些梯度进一步优化模型参数,以减少损失。与此同时,我们总结了一些常见的符号单元及其梯度传播规则,这些符号化的单元不仅简化了计算过程,还提升了反向传播的效率,使神经网络的构建和训练更加便捷高效。
接下来,我们具体探讨正向传播和反向传播在神经网络中的实现,并逐层(详细而不是对于单个神经元)分析各部分的工作原理和作用。
更多推荐
所有评论(0)