神经网络本质上是一系列线性变换与非线性激活函数的组合。通过多层“套娃”,这个结构能够表达极其复杂的非线性函数。我们的核心目标,就是找到网络中的权重(W)和偏置(B)参数,使得这个复杂的函数能够很好地拟合我们手中的真实数据。
那么,如何计算出这些W和B呢?我们从一个更简单的问题开始探索。
第一步:定义“好”的标准——损失函数
什么样的W和B是好的?答案很直接:能使模型预测结果尽可能接近真实数据的那一组参数就是好的。

直观上,我们可以比较预测直线与真实数据点的垂直距离。设真实值为 ,预测值为
,那么这个差值(误差)就是
。

为了评估整体拟合效果,我们自然想到将所有数据点的误差加起来,用它来反映模型与数据的整体差异。这个衡量误差的函数,我们称之为损失函数(Loss Function)。
然而,绝对值在数学优化中并不“友好”(需要分类讨论,不够平滑)。因此,我们通常进行两项改造:
- 使用平方来代替绝对值,这样既平滑了函数,又放大了大误差的影响。
- 根据样本数量
求平均,以消除数据量多寡的影响。
于是,我们得到了最常用的损失函数之一——均方误差(Mean Squared Error, MSE):
从参数视角看,损失函数 就是关于
和
的函数。我们的目标转变为:找到一组
和
,使得损失函数
的值最小。
和
怎么求解呢?自然就是用我们初中就学过的让其导数等于零,求极值点。
第二步:从简单案例看求解思路——线性回归
考虑最简单的情况:用一个线性函数 来拟合数据。这就是线性回归。
假设我们有4个样本点:(1,1), (2,2), (3,3), (4,4)。为了更简单,我们令偏置 ,模型简化为
。
将数据代入均方误差公式并展开:
看!损失函数化简后,变成了一个简单的关于 的二次函数(抛物线)。我们初中学过的知识派上用场了:对
求导,并令导数等于零,即可找到函数的最小值点。
令其等于零:
解得 ,代回模型得
,这正是最拟合我们数据的直线。在这个例子中,损失函数的图像是一条开口向上的抛物线,我们通过求导找到了它的最低点(极小值)。
如果考虑完整的线性模型 ,那么损失函数
就是一个关于两个变量的二元函数。它的图像像一个三维空间中的“碗”。求解最小值需要让每个参数的偏导数都等于零。
偏导数是什么?很简单:对
求偏导时,把
当成常数,像一元函数一样求导即可。几何上,这相当于固定
看
方向上的变化率。
通过解由偏导数为零构成的方程组,我们就能找到最优的 和
。对于线性回归,这是一个可以一步到位求出解析解(精确解)的过程。

第三步:神经网络的挑战与迭代解法——梯度下降
神经网络是一个复杂的非线性函数,其对应的损失函数更是复杂无比,我们几乎无法像解线性回归那样,通过令导数等于零来直接求出最小值点(解析解)。
怎么办?人们的办法简单而有效:一点点试。
假设初始参数 ,算出损失
。
- 尝试将
加1变成6,发现损失降为9。说明这个调整方向正确。
- 尝试将
加1变成6,发现损失升为11。说明这个调整方向错误,下次应调小
。
如此循环,每次都根据参数调整对损失的影响,将参数向使损失减小的方向调整一点点,直到损失足够小。
如何精确知道“调整的方向和幅度”?答案就是偏导数。
-
表示
微小变化时,
的变化率。
-
表示
微小变化时,
的变化率。
我们应该让参数朝着其偏导数的反方向更新(因为导数方向是函数值增长最快的方向)。同时,用一个称为学习率(Learning Rate) 的系数 来控制每次更新的步长。
由此得到梯度下降的参数更新公式:
所有参数的偏导数组成的向量 就叫做梯度(Gradient)。沿着梯度反方向下降,寻找损失函数最小值的过程,即为梯度下降法。
第四步:复杂网络中的梯度计算——链式法则与反向传播
关键问题来了:在复杂的神经网络中,损失函数对某一参数(例如第一层的 )的偏导数
如何计算?
虽然整体函数复杂,但神经网络层与层之间的关系是清晰的。以一个极简网络为例:输入 → 隐藏层
→ 输出
→ 损失
。
我们想求 。可以这样思考:
-
变化一点,如何影响
?(即
)
-
变化一点,如何影响
?(即
)
-
变化一点,如何影响
?(即
)
根据微积分中的链式法则,这三者的乘积就是我们要的偏导数:
这个过程可以形象地理解为“误差的反向传播”:我们从最终的损失 开始,从右向左,利用链式法则,将梯度一层层回传,直到第一层。

-
前向传播:输入
,逐层计算,得到输出
和损失
。
-
反向传播:利用链式法则,从损失
开始,反向计算损失对所有参数的梯度。
结合梯度下降,一次完整的训练迭代就是:
- 前向传播计算当前损失。
- 反向传播计算所有参数的梯度。
- 用梯度下降法更新所有参数。
神经网络通过多轮这样的迭代,参数被一点点调整,损失函数逐渐减小,最终逼近我们想要的那个能拟合数据的复杂函数。

总结回顾
-
目标:找到拟合数据的参数
和
。
- 量化目标:定义损失函数,并将目标转化为最小化损失函数。
- 简单模型的解法:在线性回归中,可通过令(偏)导数为零直接求得解析解。
- 复杂模型的解法:对于神经网络,无法直接求解,转而采用梯度下降法进行迭代优化。
- 梯度的计算:利用链式法则,通过反向传播算法,高效计算网络中所有参数的梯度。