🏠 返回首页

Deep Learning Fundamentals

从一颗神经元到千亿参数
神经网络与训练机制的完整链路

神经网络、前馈网络、反向传播、梯度下降——它们不是四门独立的课,而是同一条链上的四个环节。这份材料按依赖顺序把它们串起来,并标出每一个概念在大模型里的确切位置。

7 组动画图示 1 个可交互演示 阅读约 18 分钟 离线可用
01

起点:一个神经元到底在算什么

整个深度学习的最小单元,就是加权求和 + 一个非线性挤压。它做的事情朴素到几乎不像"智能":把若干个输入各自乘一个系数,加起来,再塞进一个函数里。

单个神经元的计算过程 三个输入分别乘以权重后汇总,加上偏置,再经过激活函数得到输出。 w₁ w₂ w₃ x₁ x₂ x₃ Σ ×w + b 激活函数 ReLU / GELU 输出 a
图 1 三个输入各自乘以权重后汇聚求和,加上偏置,经过激活函数得到输出。动画中的光点即信息流的传播方向。
y = σ( w₁x₁ + w₂x₂ + w₃x₃ + b )

三个零件各有分工:权重 w 是唯一"学出来"的东西,代表某个输入的重要程度;偏置 b 负责把结果整体平移;激活 σ 负责引入非线性——这一点最关键,下面单独说。

激活函数为什么不能省? 假如没有 σ,那么"两层网络"展开就是 W₂(W₁x) = (W₂W₁)x——矩阵相乘还是矩阵。摞再多层,等价于一层线性变换,表达能力毫无增长。加了非线性挤压之后,网络才真正具备"用简单函数拼出任意复杂函数"的能力。大模型的深度之所以有意义,前提就在这里。
02

把神经元摞起来:前馈神经网络

前馈网络(FNN / MLP)把这些单元分层排列,每一层的每个单元都接收上一层全部的输出,信息只朝一个方向流——这就是"前馈"两个字的含义:没有回路。

前馈神经网络的前向传播 输入层的信号逐层向右传播,每一层都做加权求和与激活,最终得到输出。 输入层 隐藏层 1 隐藏层 2 输出层
图 2 信号从左至右逐层推进,每一层都对上层全部输出做加权求和与激活。动画的亮起顺序即前向传播的时间顺序。

它解决了什么问题?单个神经元只能画一条直线(线性可分)。摞成多层之后,中间层会自动学出中间表示——识别人脸时,第一层学边缘,第二层学眼睛鼻子,第三层学整张脸。这个"自动构造特征"的能力,正是深度学习取代人工特征工程的根源。

大模型就是这个结构被推到极致:层数上百、每层宽度上万,参数量达到千亿级。

03

关键问题:这些参数是怎么变好的?

随机初始化的网络输出是一堆垃圾——因为那一刻所有 w 都是随机数。让垃圾变成智能的,是下面这个四步循环。这是理解后面所有概念的主干。

神经网络的训练循环 数据经前向传播得到预测,计算损失后用反向传播求梯度,再用梯度下降更新参数,如此循环。 输入数据 一个 batch 前向传播 逐层算出预测 计算损失 预测 vs 真值 反向传播 链式法则求梯度 更新参数 沿梯度反方向走 重复数万到数百万步:每走完一圈,参数就朝"损失更小"的方向挪一点
图 3 训练的全部内容就是这个循环。前两步是"看和判断",后两步才是"学习和改变"。
一句话记住分工: 前向传播负责"算答案",损失函数负责"打分",反向传播负责"算出每个参数该往哪调",梯度下降负责"真的去调"。四者缺一不可,但只有后两者改变模型。
04

反向传播:它不"学习",它只负责求导

这里有个常见的误解需要纠正——反向传播本身不改变任何参数。它是一套高效的求导算法,回答的问题只有一个:如果我把某个权重调大一点点,损失会怎么变?这个变化率就是梯度

它的数学内核是链式法则:因为网络是层层复合的函数,损失对第一层权重的导数,等于一路上各层导数的连乘。

反向传播中的梯度回流 梯度从损失层出发,逐层向左回传,每一层都据此算出自己权重的梯度。 输入层 隐藏层 1 隐藏层 2 输出层 损失 L 链式法则:梯度从损失层逐层回传,每一层顺手算出自己权重的 ∂L/∂W 这一步只算数,不改参数
图 4 梯度从最右侧的损失出发,向左逐层回流。注意动画方向与前向传播完全相反。

如果不用反向传播,就得对每个参数单独做一次数值扰动来估算梯度——参数量千亿,这是绝对不可接受的。反向传播的妙处在于:一次从后往前的遍历,就能同时拿到全部参数的梯度,计算量与一次前向传播同量级。这也是为什么整个深度学习体系必须建立在"可微"之上。

常见误解: 很多人以为"反向传播就是在训练模型"。准确说,反向传播是训练循环里的第三步,它输出的是梯度这个中间结果;真正改动数值的是下一步。
05

梯度下降:真正动手改参数的那一步

拿到梯度之后,更新规则简单到只有一行:

w ← w − η · ∂L/∂W

其中 η 就是学习率。梯度指向"让损失变大"的方向,所以你朝反方向走一小步。如此反复,损失就降下来了。

这个步长小到什么程度、大到什么程度,是训练里最容易出事的地方。下面这个可以直接上手玩——拖动学习率滑块,点开始,看小球怎么滚:

参数 w 从曲线左侧高点出发,沿损失曲线滚向最低点。
迭代步数
0
当前参数 w
-1.50
当前损失 L
11.17
损失值随步数变化;学习率过大时曲线会直冲顶部。

初始权重是随机的,所以起点很高。拖动学习率再点开始,试试 0.05、0.2、1.0、2.0 分别会发生什么。

图 5 横轴是参数 w,纵轴是损失 L,曲线就是这片简化的"损失地形"。小球是被优化的参数,橙色轨迹是它走过的路径。

试完之后你会发现三种典型行为:步长合适时小球单调滑落;步长过小时方向没错但半天挪不动,训练慢到无法接受;步长过大时小球在谷底来回横跳甚至被甩飞,损失不降反升——这就是训练不收敛最常见的根因。

真实训练中,损失曲面不是这样低维的,而是千亿维、非凸、充满鞍点的。所以朴素梯度下降几乎不会被直接使用,生产环境用的是它的改进版(动量、自适应步长,也就是 Adam 这一类)。但无论怎么改进,"沿负梯度方向走"这个内核没有变。

06

序列建模的演进:RNN 与它的替代者

前面讲的结构有一个隐含前提:一次只看一个输入。但语言是有顺序的——我打你你打我,词一模一样,意思相反。前馈网络天生看不到"上一个词",于是有了 RNN 这一支。

① 前馈网络:没有记忆

三个互不相干的向量,彼此没有顺序关系

解决了非线性拟合、自动构造特征。

卡在哪语序信息完全丢失,"我爱你"和"你爱我"在它眼里是同一堆东西。

② RNN 循环神经网络:把上一步的结论带下来

RNN 的循环结构 每一步的隐藏状态传给下一步,同一组权重被反复使用。 h₁ h₂ h₃ 同一组权重被反复使用:每一步都把"到目前为止记住了什么"传给下一步

解决了变长序列、上下文依赖,能处理任意长度的输入了。

卡在哪必须一个词一个词串行算,慢;序列一长,梯度在连乘中指数级衰减(梯度消失),几百步前的信息基本忘光。

③ LSTM / GRU:给记忆装上开关

遗忘门输入门输出门 决定哪些信息该留下、哪些该丢掉

解决了用一条"记忆通道"把梯度稳定地传下去,能记住几十到上百步的依赖。

卡在哪结构更复杂了,但本质仍是串行——GPU 上几万个核心有劲使不上,训练效率成为硬瓶颈。

④ 注意力 / Transformer:不再循环,全部同时看

注意力机制的全局连接 序列中每个位置与其它所有位置直接建立连接,没有中间步骤。 任意两个位置一步直连,不必沿着链条一步步传 —— 长距离依赖不再是问题

解决了距离归零 + 完全并行。这才撑得起千亿参数吃万亿 token 的训练规模。

代价计算量随序列长度平方增长,于是又有了各种稀疏注意力、线性注意力来优化它。

● ○ ○ ○
图 6 点击"下一步"逐步查看四个阶段。注意每一代的胜负手:②③ 解决的是"能不能记住",④ 解决的是"能不能并行"。
关键判断: 注意力打败 RNN,靠的不是效果更好,而是能并行。不能并行,就吃不下万亿 token 的数据量,也就没有"大"模型这回事。这是理解大模型技术选型的一条主线。
07

落到大模型上:这些概念在哪一层

大模型并没有抛弃前面讲的东西,它只是换了组织方式。把神经元、前馈网络、反向传播、梯度下降放到 GPT 的一个 Transformer 层里,位置是这样的:

各概念在 Transformer 中的位置 从输入 token 到输出概率的完整链路,标出前馈网络、反向传播与梯度下降所处的位置。 输入:一串 token,例如「大 模型 很 强」 词嵌入 + 位置编码:把词变成向量,并标出先后顺序 Transformer 层 × N(GPT 里 N 可以到 100 多层) 多头注意力:让任意两个位置直接交换信息 一步跨过任意距离,而且完全并行 —— 这是 RNN 做不到的 前馈神经网络:对每个位置各自做深加工 升维 → 激活 → 降维;大模型约 2/3 的参数都堆在这里 输出层:给出下一个 token 的概率分布 训练时才走这一步:反向传播求梯度 → 梯度下降更新以上全部参数 推理时(你问它问题的时候)不会执行,模型只沿着箭头往前跑
图 7 注意力替换掉的是"层里怎么连",而神经元、前馈网络、反向传播、梯度下降一个都没变。

这张图也回答了一个高频疑问:为什么训练比推理贵得多?因为推理只需要走上面五步中的前四步(一次前向),而训练要把前向的中间结果全部留在显存里,再反向走一遍求梯度,再更新全部参数——显存和算力开销都是数倍。

08

一张表收尾

概念是什么解决什么问题在大模型中的位置
神经元加权求和 + 非线性激活从输入里提取一个特征所有层的基本单元
激活函数非线性挤压让多层网络不退化成单层线性变换每个神经元之后
前馈网络分层的神经元,逐层全连接自动构造层次化特征,替代人工特征工程Transformer 层内的 FFN,约占 2/3 参数
反向传播链式法则求导一次回传拿到全部参数的梯度仅在训练时执行,不改参数
梯度下降w ← w − η·∂L/∂W用梯度真正更新参数仅在训练时执行,改的是数值
RNN循环传递隐藏状态建模序列与上下文已被注意力取代,但概念仍在
注意力任意位置两两直接相连长距离依赖 + 完全并行Transformer 层内的核心
整体串联: 神经元是最小计算单元 → 前馈网络把它摞成有层次的结构 → 反向传播算出每个参数该往哪调 → 梯度下降真的去调 → 四者组成训练循环跑上几百万次。RNN 是"如何处理序列"这一支的早期方案,它引入了记忆但受限于串行与梯度消失,最终被注意力机制取代。

有两个容易混淆的点值得单独记一下:反向传播不改参数,它只算数;梯度下降不碰结构,它只挪数值。