第 3 章 深度学习与大模型基础
《人工智能学习笔记》系列第 4 篇,共 9 篇。
本章导读 这一章是一条进化链:感知机解决"能不能分",全连接解决"能不能拟合复杂函数",CNN 解决"图像怎么省着算",RNN/LSTM 解决"序列怎么记住前面",Transformer 解决"长距离依赖怎么并行算"。今天的大模型,就是这条链的终点站。
读完你应该能回答:① 单层感知机为什么连异或都做不了?② 卷积相比全连接省在哪、代价是什么?③ 注意力相比 RNN 的根本优势是什么?
本章骨架
| 小节 | 一句话核心 |
|---|---|
| 3.1 感知机 | 线性分类器;异或问题暴露了"没有隐藏层"的墙 |
| 3.2 全连接与训练 | 前向 → 损失 → 反向 → 更新;激活函数引入非线性,正则化防过拟合 |
| 3.3 CNN | 卷积核 = 特征提取器,权值共享 + 池化大幅降参数量 |
| 3.4 RNN / LSTM | 隐状态携带历史;LSTM 用门控和"传送带"缓解长依赖 |
| 3.5 Transformer | 全靠注意力,可并行、能建模长距离;大模型的骨架 |
| 3.6 大模型架构 | 编码器/解码器/编解码三种范式,与主流开源模型对号 |
| 3.7 实验 | 不借框架手写三层全连接,把反向传播亲手推一遍 |
这一章的线索是一条演进链:感知机 → 全连接网络 → 卷积网络 → 循环网络 → Transformer → 大模型。每一步都是在解决上一步暴露的短板,下面按这个逻辑展开。
3.1 感知机
先看传统机器学习卡在哪
传统流程:定义问题 → 收集数据 → 数据清洗 → 特征提取与特征选择 → 送入算法做识别/预测。
卡点在第三、四步。比如分苹果和桃子,人要自己想到"看形状、看颜色"这些特征;数据一复杂,谁也说不清该提哪些特征、哪些有用。深度学习的出发点就是把这一步交给机器自动完成。
感知机的结构
输入 x1,x2x_1, x_2x1,x2 各乘一个权重 w1,w2w_1, w_2w1,w2,加权求和后与阈值 θ\thetaθ 比较:
- 小于阈值 → 输出 −1-1−1
- 大于阈值 → 输出 +1+1+1
这就是一个二分类器。权重的直观理解:像电阻。电阻大,电流(这个特征的影响)通过的少;电阻小,通过的多。

用感知机模拟逻辑门
本节逻辑门改用 0/1 输出编码(将前述 −1 映射为 0)。取 w1=w2=0.5w_1 = w_2 = 0.5w1=w2=0.5、θ=0.7\theta = 0.7θ=0.7:
| x₁ | x₂ | Σxᵢwᵢ | 输出 |
|---|---|---|---|
| 0 | 0 | 0 | 0(不通) |
| 0 | 1 | 0.5 | 0 |
| 1 | 0 | 0.5 | 0 |
| 1 | 1 | 1.0 | 1 |
这正是与门。把输出取反得到与非门;阈值调小则得到或门。
异或问题:单层感知机的墙
异或要求"两个输入相同输出 0、不同输出 1",四个点在平面上呈对角分布,一条直线分不开——单层感知机只能做线性划分,做不到。
解法是把感知机堆叠起来:第一层并排两个感知机——与非门(s1 = ¬(x1∧x2))与或门(s2 = x1∨x2),第二层再用与门把两个中间结果合成 y = s1∧s2。代一遍就知道它对:00→(1,0)→0,01→(1,1)→1,10→(1,1)→1,11→(0,1)→0。这就是两层感知机,划分边界从一条直线变成了折线。

历史意义:当年感知机被证明连异或都做不了,深度学习进入停滞期;后来数学家把感知机组合起来,发现能产生非线性能力,才有了后面的发展。
非线性能力从哪来
两件事同时起作用:
- 层数增加(单层 → 中间加一层);

- 非线性激活函数(把输出做阶跃变换:小于 0 取 −1-1−1,大于 0 取 +1+1+1)。
只加层不做非线性变换,多层依然等价于一层线性变换;只加激活不加深,也拟合不了复杂边界。
3.2 全连接神经网络及训练流程
从感知机到全连接
在两层感知机上继续扩展两个维度:输入/隐藏层神经元个数变多、层数变多。每条连接线上都有一个独立的权重。

权重记号 w143w^{43}_{1}w143:下标是层号(这组权重挂在哪一层),上标是连接的两端——前一层第 3 个单元 → 后一层第 4 个单元。所以 w143w^{43}_{1}w143 读作「第 1 层、从 3 号连到 4 号」。
每个神经元做的事:前一层所有输出加权求和 → 过激活函数 → 作为下一层的输入。
(这种全连接的、信息单向从输入流向输出的结构就是深度神经网络 DNN,也叫多层感知机 MLP;「深度」指隐藏层多,「全连接」指相邻两层任意两个神经元之间都有权重。)

层数越多,非线性越强,能拟合的数据越复杂。 理论上,只加宽不加深(单隐层 + 足够多节点)也能拟合任意复杂函数,但那样特征提取能力反而变弱,所以实践中是加深而不只是加宽。

四种常见激活函数
| 函数 | 形式 | 值域 | 特点 |
|---|---|---|---|
| 阶跃函数 | x > 0 → 1,x < 0 → −1 | {−1, 1} | 最原始,不连续、不可导 |
| Sigmoid | 1 / (1 + e^(−x)) | (0, 1) | 把任意值压到 0~1,两端导数趋 0 |
| tanh | — | (−1, 1) | 同上,值域对称 |
| ReLU(修正线性单元) | x > 0 取 x,否则取 0 | [0, +∞) | 当前主流 |
ReLU 为什么主流:正区间就是 y=xy=xy=x,求导恒为 1,计算极简——模型越大对算力越敏感,这一步省下的就是实打实的训练时间。

缺点是负区间梯度为 0(神经元"死掉"),所以有 Leaky ReLU 等改进版。
举个计算例子:输入 [0.5, -3] 过 ReLU 变成 [0.5, 0]——0.5 原样保留(线性区),-3 被压成 0(非线性发生在这里)。
训练:前向 → 损失 → 反向 → 更新
-
前向传播:数据逐层加权求和 + 激活,得到预测值。
-
算损失:预测与真实值的差距。两种常用:
- 均方误差 MSE:12(y−y^)2\frac{1}{2}(y - \hat{y})^221(y−y^)2,回归问题;
- 交叉熵:−∑ylogy^-\sum y \log \hat{y}−∑ylogy^,分类问题。
-
反向传播:用链式法则从最后一层往前求每个 www 的偏导。求 w1w_1w1 的梯度要把后面每一层的导数一路乘过来;层数多,就乘得多。
-
梯度下降更新:w新=w旧−η⋅∇Lw_{新} = w_{旧} - \eta \cdot \nabla Lw新=w旧−η⋅∇L。η\etaη 是学习率,通常取较小正值,需按优化器、损失尺度与曲率调整;没有普适的小于 1 上界。
三种梯度下降方式:全批量(所有数据算一个 loss 再更新一次)、随机 SGD(每来一条数据更新一次)、小批量 mini-batch(每次 5/10/20 条)。实践中小批量最常用。

梯度消失与梯度爆炸
链式法则是连乘,因子既包括激活函数导数,也包括权重。若沿途持续缩小梯度,深层连乘后可能趋于 0 → 梯度消失,参数几乎不更新;若持续放大,则可能出现梯度爆炸,使更新不稳定。
这也解释了 ReLU 的价值:正区间导数恒为 1,激活函数本身不额外缩放梯度,可缓解饱和激活造成的梯度消失;网络仍可能因权重连乘等因素发生梯度消失或爆炸。
优化器
- 动量(Momentum):结合历史动量修正方向,少走弯路;
- Adam:最常用,同时维护 mtm_tmt(一阶矩)和 vtv_tvt(二阶矩)两部分,方向准、收敛快,代价是占用显存/算力更多。
正则化:防过拟合
过拟合的典型症状:训练集损失一路下降,验证集损失先降后升。看到拐点就该停——这叫早停。
其他手段:
- L1 / L2 正则:在损失函数后加惩罚项,把参数约束在一个范围内;
- Dropout:训练时随机让一部分神经元失活,等于削弱拟合能力、留出余量,让模型"稍微含糊一点",反而对新数据更稳。
3.3 卷积神经网络(CNN)

全连接的问题
全连接层里,后一层每个神经元都受前一层所有神经元影响。放到图像上:一张图几百万像素,参数量爆炸;而且不符合直觉——认出一个朋友,往往只需要看身高、走姿、穿着几个特征,不需要把看到的每个像素都送进大脑。
卷积核就是特征提取器
卷积核(滤波器)是一个小矩阵,在图像上滑动,每次覆盖一块区域,对应位置逐元素相乘再求和,得到一个值;滑完一圈得到一张特征图。
卷积核的参数就是权重 www,图像像素值就是输入 xxx——和全连接层的乘加本质一样,只是局部连接 + 权重共享。

多层堆叠:浅层提颜色、边缘,深层提形状、物体部件。
多通道:彩色图是 RGB 三个通道,输入是三层。每个通道配一个卷积核(核数必须与输入通道数一致),三个核的结果相加得到一张特征图。
池化层
两种:最大池化(取区域内最大值,最常用)、平均池化。

两个作用:
- 降维:4×44\times44×4 的图,按 2×22\times22×2 池化变成 2×22\times22×2——边长各减半,元素数与后续计算量降到约 1/4;
- 平移不变性:鸟嘴这个特征原本在左上角,鸟动了一下跑到旁边,只要还在同一个池化窗口内,最大值仍然是同一个数,依然识别得出。
完整流程
卷积 → 池化 → 卷积 → 池化 → …… → 把特征图拉平成一维 → 接全连接层 → softmax 输出类别概率 → 反向传播优化参数。
3.4 循环神经网络(RNN)与 LSTM
为什么需要 RNN
CNN 处理的图像没有时序。文本有:“今天下雨了,出门要带___”——前面几个字直接影响后面该输出什么。RNN 就是为了把前一时刻的信息带进当前时刻的判断。
RNN 结构
ttt 时刻:输入 xtx_txt 乘 UUU 得到隐状态的一部分,再加上上一时刻传来的隐状态(乘 WWW),得到当前隐状态 hth_tht;hth_tht 一路乘 VVV 输出,一路继续往后传。
所以每个输出受两样东西影响:当前输入 + 历史记忆。

BPTT 与长依赖问题
RNN 的反向传播叫 BPTT(沿时间反向传播),梯度要沿两个方向回流:纵向(层间)和时间轴(前后时刻)。
序列一长(几百上千字),梯度沿时间连乘同样会消失——第 1000 个词的损失,传回第 1 个词时几乎为零。表现就是:前面的话对后面的影响越来越弱,模型记不住长距离依赖。
LSTM:加一条"传送带"
LSTM 在 RNN 的隐藏状态之外,额外维护一条细胞状态 CCC(图中绿线),像传送带一样携带重要信息;门控允许保留状态时,这条路径有助于缓解长距离梯度衰减,但不保证无损传递。
三个门(门 = sigmoid 输出 0~1 的概率,与数据相乘表示"保留多少"):
| 门 | 作用 | 计算 |
|---|---|---|
| 遗忘门 | 决定上一时刻的 C(t−1) 里哪些信息丢掉 | [h(t−1), x(t)] 拼接 → sigmoid → 与 C(t−1) 相乘 |
| 输入门 | 决定当前时刻哪些新信息写进 C | 拼接 → sigmoid 得选择权重;拼接 → tanh 得候选值;两者相乘后加到 CCC 上 |
| 输出门 | 决定当前时刻输出什么 | sigmoid 选择权重 × tanh(C(t)) → 得 h(t) 和输出 |
一句话:遗忘门管旧账,输入门管新账,输出门管报账。

RNN 能做哪些任务
| 类型 | 例子 |
|---|---|
| 一对一 | 单个词的极性判定(进一个、出一个) |
| 一对多 | 看图说话(图像生成文本) |
| 多对一 | 一句话判断情感 |
| 多对多 | 机器翻译、整句词性标注(逐词输出、与输入等长) |
seq2seq:编码器-解码器
seq2seq 是输入一个序列、输出另一个序列(如中译英)的范式。这里的经典 RNN 编解码实现把源序列压成一个固定长度的中间向量 CCC,再从起始符逐词生成,直到终止符。

这种经典 RNN 实现有两个局限:
- CCC 长度固定——长源句的信息容易受压缩瓶颈限制;
- 递归串行——训练时各位置也依赖前一隐状态;自回归推理还需逐词生成。
Transformer 用注意力绕开单一定长向量瓶颈,并让编码与 teacher-forcing 训练的位置计算并行;标准自回归生成仍有逐 token 依赖。
3.5 Transformer
注意力机制
人看一张图,其实全都看到了,但注意力集中在少数关键区域。换成权重语言:每个像素都进视觉神经,但重点区域的权重高、周边的低。
计算三步:
- Query(查询) 与每个 Key(键) 做相似度打分(点积);
- 分数过 softmax 归一化成 0~1 的权重;
- 用权重对 Value(值) 加权求和。

一个好记的类比是去图书馆找书:Query = 我想看漫威;Key = 每本书的编码/分类;Value = 书的内容。查出来动漫、电影类的书权重高,二战史料的权重低,最后拿到的信息主要来自前两者。
优点:参数量小、矩阵运算可整体并行、能自动弱化无关信息。

Transformer 的骨架
2017 年谷歌《Attention Is All You Need》提出。依然是编码器-解码器结构,核心替换是多头自注意力。

| 普通(交叉)注意力 | 自注意力 | |
|---|---|---|
| Q 来自 | 解码器 | 同一句话自身 |
| K/V 来自 | 编码器 | 同一句话自身 |
| 作用 | 目标与源之间的对齐 | 句内词与词的关联 |
自注意力的经典例子:句子里的 “it” 到底指谁?把 “it” 当成 Q,与句中每个词算注意力分数,发现与 “animal” 分数最高——模型就

"理解"了指代关系。
多头:并行做多组 Q/K/V,每组关注不同的关系(语法、指代、语义……),最后拼接。
原始 Transformer 先在输入嵌入上加入位置编码(补充顺序信息);编码器每层依次是多头自注意力 → 残差连接 + LayerNorm → 前馈全连接网络 → 残差连接 + LayerNorm。解码器多一层交叉注意力(Q 来自解码器、K/V 来自编码器)。
为什么 Transformer 统治了大模型
- 并行性好:编码与 teacher-forcing 训练可并行计算序列位置,不像 RNN 依赖递归隐状态;标准自回归生成仍逐 token 进行;
- 能处理长序列:任意两个位置直接算注意力,距离不再是障碍;
- 可堆叠:今天的 GPT、BERT,都是 Transformer 的变体或若干层的堆叠。
3.6 大模型基础架构
Transformer 之后,主流大模型分成三条路线:
| 模型 | 取 Transformer 的哪一半 | 训练方式 | 擅长 |
|---|---|---|---|
| GPT 系列 | 只用解码器(带掩码的自注意力) | 单向:预测下一个词 | 文本生成、对话 |
| BERT(2018.10) | 只用编码器 | 双向:遮住中间词,用前后文预测 | 问答、分类、翻译理解 |
| LLaMA 等 | 解码器路线 | 单向 | 生成,细节上做了改造 |
GPT 的"大力出奇迹":把一个解码器块当作基本单元,堆 12 层(GPT-1)→ 后来几十上百层、参数量翻十几倍到近百倍。参数一多,能力就涌现出来——这条路线被验证走通了。
**MoE(混合专家,Mixture of Experts)**是另一条工程思路:
- 常见大语言模型的稀疏 MoE 在各 MoE 层放若干个前馈(FFN)专家,分工由训练形成,不保证对应写作、代码、数学等预设领域;
- 各层的门控网络按每个 token 的隐状态给专家打分,而非先给整条请求分类;
- 选少数 top-k 专家计算,再将输出加权合并;其余专家不处理该 token。
结果是:参数总量极大,但推理时只激活一小部分——能力强,推理成本还可控。

章末的判断题(附答案):
- 不属于深度学习神经网络的是……(前三项属于,最后一项不属于)
- CNN 中激活函数是必备的(对,它提供非线性)
- CNN 比 RNN 更适合图像识别(对)
- “Transformer 与 seq2seq 特性类似”(不能据此笼统判错)——原始 Transformer 本就是 seq2seq 编解码器;相较 RNN 实现,其编码与训练位置计算可并行,但标准自回归生成仍依赖已生成输出。
3.7 实验:不借框架,手写三层全连接网络
- 任务:MNIST 手写数字识别(6 万训练 + 1 万测试,28×28 灰度图);
- 约束:除 numpy、matplotlib 外不用任何深度学习框架,纯粹看清神经网络在代码层面到底做了什么;
- 环境:本地笔记本即可(Win10 + 近几代 i5),不需要服务器。
代码流程与理论一一对应:
- 读数据:像素归一化到 0~1、标签转 one-hot、每张图像 flatten 成一维特征向量,批量输入保留样本轴(本实验按整图向量建模,并非全连接层只接受一维张量);
- 建模型:网络结构写在单独文件里;
- 超参数初始化;
- 前向传播 → 算损失 → 求梯度 → 更新参数;
- 反复迭代,直到训练/验证指标达标。
观察重点:训练损失持续下降,但验证准确率开始回落,是过拟合的信号(见 3.2 的“正则化:防过拟合”);测试集留作最终独立评价。
本章学习要点
- 感知机的本质:加权求和 + 与阈值比较 → 二分类;可模拟与门、或门、与非门。
- 异或问题:线性不可分,单层感知机解决不了,堆叠成多层才行。
- 非线性能力来自两件事同时成立:增加层数 + 使用非线性激活函数。
- ReLU 为何主流:正区间 y=xy=xy=x、导数恒为 1,计算简单,可缓解饱和激活造成的梯度消失,但不保证整个网络梯度稳定。
- 损失函数选型:回归用 MSE,分类用交叉熵。
- 反向传播 = 链式法则,梯度沿层连乘 → 层数过深会梯度消失/爆炸。
- 过拟合判据:训练集损失降、验证集损失升;对策:早停、L1/L2、Dropout。
- 卷积核 = 特征提取器;池化两大作用:降维 + 平移不变性;最常用最大池化。
- RNN 的 BPTT 沿时间连乘 → 易出现长序列梯度消失,难记远距离依赖;LSTM 靠细胞状态 + 遗忘门/输入门/输出门缓解。
- 经典 RNN seq2seq 的局限:单一定长中间向量有压缩瓶颈,递归隐状态限制训练并行;自回归逐词推理并非它独有。
- Transformer 三件套:自注意力、多头、位置编码;优势是并行 + 长距离。
- GPT 用解码器、BERT 用编码器;MoE 用门控网络路由到少数专家,参数大而推理省。
更多推荐



所有评论(0)