大数跨境

梯度算法和 BP 前馈神经网络详细入门介绍

梯度算法和 BP 前馈神经网络详细入门介绍 萤火虫AI文化沙龙
2026-11-02
3
导读:训练神经网络,本质上是在调整一堆参数,让某个“损失”尽可能小。怎么知道该把参数往哪边拧?答案几乎总是:顺着梯度指出的最陡方向走一小步——这就是梯度法。反向传播(Backpropagation,BP)则

梯度算法和 BP 前馈神经网络详细入门介绍  

罗光宣

训练神经网络,本质上是在调整一堆参数,让某个“损失”尽可能小。怎么知道该把参数往哪边拧?答案几乎总是:顺着梯度指出的最陡方向走一小步——这就是梯度法。反向传播(Backpropagation,BP)则是把这条思路高效地用在多层前馈网络上的一套计算技术。

本文先用看得见的曲面和等高线讲清梯度下降,再说局部极小与学习率等常见坑,最后落到典型前馈网络的公式推导和一个可以手算的数值例子。


1. 找极值:我们在优化什么?

设实值函数  。若在某点附近,函数值都不比这里更小,就称该点为局部极小;若在整个定义域上都最小,则是全局极小。机器学习里的   往往是网络权重,  则是损失函数。

一维时,极值点附近导数为  :

多维时,换成梯度为零:

直接解方程往往很难,尤其当   由神经网络复合而成时。于是改用迭代:从初始点出发,一步步往“更低”的地方挪。


2. 梯度是什么?为什么能指路?

对多元函数  ,梯度是偏导数组成的向量:

它有两个关键性质:

  1. 方向:梯度指向函数值上升最快的方向;因此   指向下降最快的方向。
  2. 大小:  越大,该处坡度越陡。

所以最朴素的梯度下降更新公式是:

其中   叫学习率(步长):太大容易迈过谷底甚至发散,太小则爬得很慢。


3. 一维例子:沿切线往下走

取

这是开口向上的抛物线,唯一极小在  , 。导数为

从   出发,取  ,迭代

若干步后会明显靠近  。



可以把每一步想成:在当前点看切线斜率,顺着“下坡”挪一点。对凸的二次函数,合适学习率下会稳定收敛到唯一极小。


4. 二维例子:曲面、等高线与下降轨迹

再看碗状函数

偏导为

全局极小在  ,函数值为  。从   出发做梯度下降,轨迹会沿山坡滑向碗底。



把同一函数画成等高线(函数值相同的点连成的曲线),再叠上负梯度箭头和迭代路径,几何意义更直观:路径大致垂直于等高线,朝数值更低的区域前进。



灰箭头表示   的方向。可以看到:椭圆等高线意味着两个方向“陡峭程度”不同,  方向曲率更大,下降时会先在陡的方向上收敛得更快——这也是后续“动量法、自适应学习率”等方法想进一步改进的地方。


5. 可能存在的问题

5.1 多个局部极小

真实损失面很少像完美的碗。下面这种“多洼地”曲面更接近神经网络损失的 Rough 形态:




从不同起点做梯度下降,可能掉进不同的局部洼地,最终损失并不相同。




启示很实际:

  • 初始化很重要;
  • 一次训练得到的未必是全局最优;
  • 可用多次随机初始化、或更强的优化器(动量、Adam 等)缓解,但无法在一般非凸问题上保证全局最优。

对深度网络,后来的研究表明:高维空间里“坏的局部极小”往往不如想象中致命,鞍点、平坦区域有时更碍事;但对入门理解而言,“会卡在局部极小”仍是必须建立的直觉。

5.2 学习率过大或过小

仍用  ,同一起点、不同  :




  • 偏小:稳步靠近,但步数多;
  • 适中:又快又稳;
  • 过大:在谷底两侧来回振荡,甚至发散。

实践中常用学习率衰减、或 Adam 这类自适应方法,让早期步子大、后期细调。

5.3 其他常见现象(知道名字即可)

现象
直观理解
鞍点
某些方向上坡、某些方向下坡,梯度接近  ,前进变慢
平坦区
梯度很小,更新几乎不动
病态曲率
有的方向极陡、有的极缓,普通 GD 之字形前进

6. 从“调一个函数”到“训练一张网络”

把网络所有权重和偏置拼成参数向量  。给定训练样本  ,网络输出  ,常用平方损失

(分类也可用交叉熵,推导结构类似)。批量数据上再对样本取平均。训练目标是

这正是前面的梯度下降:算出  ,再

问题在于:网络是一层层复合函数,参数成千上万,若对每个权重都用数值差分估梯度,慢得不可接受。反向传播用链式法则,一次前向、一次反向,就能得到全部参数的梯度,且计算量与前向同阶。


7. 典型前馈网络长什么样?

最常见的是多层感知器(MLP):信息只从输入流向输出,没有反馈环路,故称前馈。


以一层隐层为例,记号如下。

隐层(第   个神经元):

输出层(第   个神经元):

其中   是激活函数。经典 BP 常用 Sigmoid

今天的深度网络多用 ReLU,但BP 的骨架不变:前向算激活,反向用链式法则传误差。


链式法则的抽象形式:



网络不过是把这条链拉得更长、分支更多。


8. BP 的梯度推导(单输出,便于看清结构)

设单输出、平方损失  ,输出  ,

8.1 输出层

先对输出净输入求导。因为

定义输出层误差信号

于是输出权重与偏置的梯度为

8.2 隐层(误差回传)

 依赖  ,而  ,故

再乘上激活导数,得到隐层误差信号

若有多个输出,只需把   换成对各输出求和  。

隐层权重梯度:

8.3 参数更新(经典 BP)

这就是 1980 年代广为人知的误差反向传播算法:
前向算   → 反向算各层   → 用   拼出所有   → 梯度下降更新。


9. 一个可以手算的数值例子(2–2–1)

网络结构与初始权重如下图。



取输入  ,目标  ,学习率  ,激活为 Sigmoid。

9.1 前向传播

隐层净输入与激活:

输出:

当前输出偏小,损失为正,后面更新应推动   增大。

9.2 反向传播

输出误差:

输出层梯度:

隐层误差:

隐层梯度(注意  ):

9.3 更新一步

例如输出权重:

 变大,会增大  ,从而增大  ,与“目标是  、当前只有  ”的需求一致。其余参数同理更新。多轮扫描全部训练样本后,损失会逐渐下降。


10. 经典 BP 算法流程(小结)

对每个训练轮次(epoch),通常按样本或小批量重复:

  1. 初始化权重(小随机数),选定  、激活函数与损失。
  2. 前向传播:逐层计算  ,得到输出   与损失  。
  3. 反向传播: 
    • 用损失对输出层求  ;
    • 对  ,用   与   回传得到  。
  4. 求梯度: (批量时再对样本平均)。
  5. 更新: (偏置同理)。
  6. 重复直到损失足够小或达到最大迭代次数。

用 2–2–1 网络学习逻辑 AND,损失曲线与学成后的输出如下(演示用,非调参最优):


BP 训练损失下降与 AND 任务输出

可以看到:梯度下降在参数空间里一步步把损失“推”下去;BP 只是高效提供每一步所需的梯度。


11. 和前文图像的对应关系

梯度法里的概念
在 BP 网络里对应什么
参数 
全部权重与偏置
目标函数 
损失函数 
曲面 / 等高线
损失随权重变化的高维“地形”(图中只能画低维切片)
下降轨迹
训练过程中权重的演化路径
局部极小
不同初始化可能收敛到不同解、训练停滞
学习率 
BP 更新步长,过大振荡、过小过慢
解析梯度
由链式法则经反向传播算出

12. 要点回顾

  • 梯度指向最陡上升方向,梯度下降沿相反方向迭代求极小。
  • 用曲面与等高线可以看见轨迹如何滑向谷底;存在多个局部极小时,起点不同,终点可能不同。
  • 学习率控制步长,是最基本也最敏感的超参数之一。
  • 前馈网络把输入经加权、激活层层传到输出;训练即最小化损失。
  • BP = 前向算损失 + 反向用链式法则算全体梯度 + 梯度更新;核心公式是各层误差   的回传。
  • 手算 2–2–1 例子,是为了把“公式”落到“数字”,建立可靠直觉。

把“在曲面上往下走”和“误差从输出往回传”这两幅图在脑子里叠在一起,梯度算法与 BP 网络的入门图景就立住了。之后再学 Softmax、交叉熵、卷积网络或 Adam,都只是在同一骨架上更换损失、结构或更新规则。

【声明】内容源于网络
0
0
萤火虫AI文化沙龙
一个关于AI及其文化有味道的沙龙
内容 289
粉丝 0
萤火虫AI文化沙龙 一个关于AI及其文化有味道的沙龙
总阅读7.2k
粉丝0
内容289