极简的神经网络反向传播例子
我之前一直没搞清楚,神经网络为什么要求导?反向传播又是什么?于是到现在深究回来……
本质就是拟合一个未知函数。
高中的数理统计就学过最小二乘法这种回归方法(ŷ 代表自己的预测y,这个表达要记住),这个有点类似。
假设你有一个线性函数y=ax(下面a用w代替,weigh权重的意思),而目标函数是y=2x,求导(是对loss 损失函数求导!)的目的就是利用导函数中的斜率(预测值比真值大了斜率是正,就要减去变小,反之小了斜率负的,也减去则变大),来调整a的权重。
我们来举一个特别简单的例子:只有1个输入、1个权重、1个输出的神经网络,帮你彻底理解:
🧠 神经网络结构(超简版)
我们要学的是:
用一个参数
w
去逼近函数y = 2x
我们拿一组训练数据:
输入
x = 1
,希望输出y = 2
我们的模型就是:(损失函数自己定,有能力衡量预测值和真值之间差距的函数就行,这里用的是二阶中心矩——方差)
预测值:ŷ = w * x
损失函数:L = (ŷ - y)^2
第一步:前向传播(计算预测和损失)
假设初始权重
w = 0.5
输入
x = 1
那么预测值:ŷ = 0.5 × 1 = 0.5
实际标签:y = 2
损失:L = (0.5 - 2)^2 = 2.25
第二步:反向传播(计算梯度)
我们要对 损失函数L 对 参数w 求导,看看w
该怎么改。
损失函数展开:
L = (w*x - y)^2
对w求导:
dL/dw = 2 * (w*x - y) * x
代入数字得到具体x的导数(梯度):
dL/dw = 2 * (0.5*1 - 2) * 1 = 2 * (-1.5) = -3
第三步:更新权重(学习)
用最简单的梯度下降更新公式:(这部分得到的是调整斜率变化的偏移量,是减)
w = w - 学习率 * 梯度
假设学习率 lr = 0.1
:
w = 0.5 - 0.1 * (-3) = 0.5 + 0.3= 0.8
🧪 下一次训练:
新的权重 w = 0.8
-
预测值变成 ŷ = 0.8 × 1 = 0.8
-
距离真实值
2
更近了 -
损失变小了!
这就是“通过反向传播 + 求导”,让网络“学到信息”的过程。
✅ 总结:
步骤 | 做了什么 |
---|---|
前向传播 | 用当前参数做出预测 |
计算损失 | 看预测错了多少 |
反向传播 | 求导,看参数该怎么改 |
更新参数 | 用梯度下降法调整参数 |
这里是最简单的一个例子,靠着AI辅助生成创作的,权作抛砖引玉。