一、神经网络就像小学生
想象一个刚学算术的小学生,老师每天布置练习题,学生根据例题尝试解题,老师批改后指出错误。神经网络的学习过程与此相似:
- 输入层:相当于练习题(如数字图片)
- 输出层:学生的答案(如识别数字是"3")
- 损失函数:老师的批改(计算错误程度)
- 反向传播:学生根据错误调整计算步骤的过程
二、前向传播:先做一遍练习题
假设我们要识别数字"3",神经网络的处理过程如下:
示例:
1输入层数据:[0.5, 0.8] # 像素值
2权重参数:w1=0.3, w2=0.6, 偏置b=0.1
3
4# 隐藏层计算
5h = (0.5*0.3) + (0.8*0.6) + 0.1 = 0.73
6激活值 = 1/(1+e^(-0.73)) ≈ 0.675 # Sigmoid函数
7
8# 输出层计算
9最终输出 = 0.675*0.4 + 0.2 = 0.47 # 假设目标值是0.8
10误差 = (0.8-0.47)^2 / 2 = 0.0545
11
此时网络认为图片有47%概率是"3",但正确答案应该是80%1
三、反向传播:老师批改作业
反向传播就像老师用红笔标注错误步骤:
1. 计算总误差(老师打分)
使用均方误差公式:
总误差 = Σ(预测值 - 真实值)^2 / 2
2. 逆向追溯责任(找错误根源)
通过链式法则逐层计算各参数的责任比例:
预览
以输出层权重w5为例:
1误差对w5的梯度 = (预测值-真实值) * 激活输出 * 激活导数
2 = (0.47-0.8) * 0.675 * 0.675*(1-0.675) ≈ -0.033
3
3. 调整参数(学生改正错误)
按梯度方向调整参数:
1新w5 = 原w5 - 学习率*梯度
2 = 0.4 - 0.1*(-0.033) = 0.4033
3
参数调整幅度就像调音量:误差越大,调整幅度越大
四、生活中的反向传播
假设你调整咖啡配方:
- 第一次:3g糖→太苦(误差大)
- 反向分析:糖量影响最大
- 第二次:5g糖→稍好(误差减小)
- 继续调整奶量、咖啡粉...
经过多次调整,最终找到最佳配方——这就是神经网络的学习过程!
五、优化学习效率的三个技巧
- 学习率:就像调整步伐大小
-
- 太大容易错过最佳点(0.1是常用初始值)
- 动量:像下坡时的惯性
-
- 避免在局部最优处卡住
- 批量训练:像同时批改多份作业
-
- 更稳定地找到调整方向
六、核心公式总结
步骤 | 关键公式 | 类比 |
前向传播 | a = σ(w*x + b) | 做练习题 |
损失计算 | L = ½Σ(y_true - y_pred)^2 | 计算错题数 |
反向传播 | ∂L/∂w = ∂L/∂a * ∂a/∂z * ∂z/∂w | 分析错误原因 |
参数更新 | w_new = w_old - η*∂L/∂w | 调整学习方法 |
参考资料
- 反向传播手推公式示例
- 链式法则图解
- 动量优化原理
- 神经网络参数更新可视化
- 5分钟-通俗易懂 - 神经网络 反向传播算法(手算)_哔哩哔哩_bilibili