起点:一个神经元到底在算什么
整个深度学习的最小单元,就是加权求和 + 一个非线性挤压。它做的事情朴素到几乎不像"智能":把若干个输入各自乘一个系数,加起来,再塞进一个函数里。
三个零件各有分工:权重 w 是唯一"学出来"的东西,代表某个输入的重要程度;偏置 b 负责把结果整体平移;激活 σ 负责引入非线性——这一点最关键,下面单独说。
W₂(W₁x) = (W₂W₁)x——矩阵相乘还是矩阵。摞再多层,等价于一层线性变换,表达能力毫无增长。加了非线性挤压之后,网络才真正具备"用简单函数拼出任意复杂函数"的能力。大模型的深度之所以有意义,前提就在这里。把神经元摞起来:前馈神经网络
前馈网络(FNN / MLP)把这些单元分层排列,每一层的每个单元都接收上一层全部的输出,信息只朝一个方向流——这就是"前馈"两个字的含义:没有回路。
它解决了什么问题?单个神经元只能画一条直线(线性可分)。摞成多层之后,中间层会自动学出中间表示——识别人脸时,第一层学边缘,第二层学眼睛鼻子,第三层学整张脸。这个"自动构造特征"的能力,正是深度学习取代人工特征工程的根源。
大模型就是这个结构被推到极致:层数上百、每层宽度上万,参数量达到千亿级。
关键问题:这些参数是怎么变好的?
随机初始化的网络输出是一堆垃圾——因为那一刻所有 w 都是随机数。让垃圾变成智能的,是下面这个四步循环。这是理解后面所有概念的主干。
反向传播:它不"学习",它只负责求导
这里有个常见的误解需要纠正——反向传播本身不改变任何参数。它是一套高效的求导算法,回答的问题只有一个:如果我把某个权重调大一点点,损失会怎么变?这个变化率就是梯度。
它的数学内核是链式法则:因为网络是层层复合的函数,损失对第一层权重的导数,等于一路上各层导数的连乘。
如果不用反向传播,就得对每个参数单独做一次数值扰动来估算梯度——参数量千亿,这是绝对不可接受的。反向传播的妙处在于:一次从后往前的遍历,就能同时拿到全部参数的梯度,计算量与一次前向传播同量级。这也是为什么整个深度学习体系必须建立在"可微"之上。
梯度下降:真正动手改参数的那一步
拿到梯度之后,更新规则简单到只有一行:
其中 η 就是学习率。梯度指向"让损失变大"的方向,所以你朝反方向走一小步。如此反复,损失就降下来了。
这个步长小到什么程度、大到什么程度,是训练里最容易出事的地方。下面这个可以直接上手玩——拖动学习率滑块,点开始,看小球怎么滚:
初始权重是随机的,所以起点很高。拖动学习率再点开始,试试 0.05、0.2、1.0、2.0 分别会发生什么。
试完之后你会发现三种典型行为:步长合适时小球单调滑落;步长过小时方向没错但半天挪不动,训练慢到无法接受;步长过大时小球在谷底来回横跳甚至被甩飞,损失不降反升——这就是训练不收敛最常见的根因。
真实训练中,损失曲面不是这样低维的,而是千亿维、非凸、充满鞍点的。所以朴素梯度下降几乎不会被直接使用,生产环境用的是它的改进版(动量、自适应步长,也就是 Adam 这一类)。但无论怎么改进,"沿负梯度方向走"这个内核没有变。
序列建模的演进:RNN 与它的替代者
前面讲的结构有一个隐含前提:一次只看一个输入。但语言是有顺序的——我打你 和 你打我,词一模一样,意思相反。前馈网络天生看不到"上一个词",于是有了 RNN 这一支。
① 前馈网络:没有记忆
解决了非线性拟合、自动构造特征。
卡在哪语序信息完全丢失,"我爱你"和"你爱我"在它眼里是同一堆东西。
② RNN 循环神经网络:把上一步的结论带下来
解决了变长序列、上下文依赖,能处理任意长度的输入了。
卡在哪必须一个词一个词串行算,慢;序列一长,梯度在连乘中指数级衰减(梯度消失),几百步前的信息基本忘光。
③ LSTM / GRU:给记忆装上开关
解决了用一条"记忆通道"把梯度稳定地传下去,能记住几十到上百步的依赖。
卡在哪结构更复杂了,但本质仍是串行——GPU 上几万个核心有劲使不上,训练效率成为硬瓶颈。
④ 注意力 / Transformer:不再循环,全部同时看
解决了距离归零 + 完全并行。这才撑得起千亿参数吃万亿 token 的训练规模。
代价计算量随序列长度平方增长,于是又有了各种稀疏注意力、线性注意力来优化它。
落到大模型上:这些概念在哪一层
大模型并没有抛弃前面讲的东西,它只是换了组织方式。把神经元、前馈网络、反向传播、梯度下降放到 GPT 的一个 Transformer 层里,位置是这样的:
这张图也回答了一个高频疑问:为什么训练比推理贵得多?因为推理只需要走上面五步中的前四步(一次前向),而训练要把前向的中间结果全部留在显存里,再反向走一遍求梯度,再更新全部参数——显存和算力开销都是数倍。
一张表收尾
| 概念 | 是什么 | 解决什么问题 | 在大模型中的位置 |
|---|---|---|---|
| 神经元 | 加权求和 + 非线性激活 | 从输入里提取一个特征 | 所有层的基本单元 |
| 激活函数 | 非线性挤压 | 让多层网络不退化成单层线性变换 | 每个神经元之后 |
| 前馈网络 | 分层的神经元,逐层全连接 | 自动构造层次化特征,替代人工特征工程 | Transformer 层内的 FFN,约占 2/3 参数 |
| 反向传播 | 链式法则求导 | 一次回传拿到全部参数的梯度 | 仅在训练时执行,不改参数 |
| 梯度下降 | w ← w − η·∂L/∂W | 用梯度真正更新参数 | 仅在训练时执行,改的是数值 |
| RNN | 循环传递隐藏状态 | 建模序列与上下文 | 已被注意力取代,但概念仍在 |
| 注意力 | 任意位置两两直接相连 | 长距离依赖 + 完全并行 | Transformer 层内的核心 |
有两个容易混淆的点值得单独记一下:反向传播不改参数,它只算数;梯度下降不碰结构,它只挪数值。