在学习 Transformers 之前,打好神经网络和自然语言处理的基础至关重要。本文整理了需要掌握的核心前置知识,用通俗的例子帮你快速理解复杂概念,为后续学习铺平道路。
一、神经网络基础
1. 多层感知机(MLP):信息处理的流水线
多层感知机可以想象成一条多层级的信息处理流水线。比如我们要判断一个人是否适合某项运动,需要处理年龄、身高、体重等原始数据:
- 第一层(输入层):收集原始数据,就像前台接待员汇总信息
- 中间层(隐藏层):对数据做初步处理,比如计算 BMI 指数、评估关节负荷等
- 最后一层(输出层):综合所有分析,给出 “适合” 或 “不适合” 的结论
用 PyTorch 实现 MLP 时,核心是定义各层的神经元数量和连接方式:
import torch.nn as nn
#简单MLP:输入3个特征→10个中间处理器→1个输出结果
model = nn.Sequential(nn.Linear(3, 10), # 第一层:3→10nn.ReLU(), # 激活函数(增加非线性)nn.Linear(10, 1) # 输出层:10→1
)
训练过程就像给流水线 “调试参数”,通过大量数据让模型逐渐学会准确判断。
2. 反向传播:模型的 “错题订正” 机制
反向传播是神经网络学习的核心,原理类似我们订正作业的过程:
- 当模型预测结果(如 “适合运动”)与实际情况不符时,就像老师批改出了错题
- 从输出层往回计算每一层的 “责任”(误差),相当于从错误答案倒推哪一步计算出错
- 按比例调整各层参数(权重),让下次预测更准确
这个过程由 PyTorch 自动完成,我们只需定义损失函数(衡量错误程度),框架会帮我们完成从结果到原因的追溯和修正。
3. 循环神经网络(RNN)及其变体:处理序列数据的利器
RNN 专为处理 “序列数据” 设计,比如文本、时间序列等。它的核心特点是:当前的判断会受前面信息的影响。
普通 RNN:有记忆但会 "忘事"
就像我们读句子时,前面的内容会影响对后面的理解。例如:
"他昨天去了公园,____玩得很开心"
根据前文的 “他”,我们能推断空格处填 "他"
但普通 RNN 处理长文本时会 “健忘”—— 距离太远的信息会逐渐淡化,就像我们记不住上周三早餐吃了什么。
LSTM 和 GRU:带 “笔记本” 的 RNN
为解决健忘问题,LSTM(长短期记忆网络)和 GRU(门控循环单元)应运而生:
- 它们相当于给 RNN 加了个 “笔记本”,重要信息(如人名、时间)会被特意记录
- 需要时可以随时查阅,避免长序列中的关键信息丢失
推荐阅读《深度学习入门:基于 Python 的理论与实现》第 8 章,书中用生动的图示解释了 LSTM 的门控机制,比公式推导更容易理解。
二、词嵌入原理:让计算机 “读懂” 词语
Word2Vec:给词语拍 "集体照"
计算机只能处理数字,如何把 “苹果”" 香蕉 " 这样的词语转换成数字呢?
传统方法的局限
One-hot 编码(独热编码)就像给每个词发唯一身份证:
- 每个词是一个超长向量,只有对应位置为 1,其他全为 0
- 但 “苹果” 和 “香蕉” 的向量毫无关联,计算机无法知道它们都是水果
Word2Vec 的创新思路
Word2Vec 根据词语的 “朋友圈”(上下文)分配数字:
-
经常出现在类似语境中的词,向量会更相似(如 “国王” 和 “女王”)
-
就像拍集体照时,关系好的人会站得近,通过距离体现亲密程度
用 gensim 库实践时,你会发现有趣现象:
from gensim.models import Word2Vec
#训练模型(语料为大量文本)
model = Word2Vec(sentences=corpus, vector_size=100, window=5, min_count=1)
#查看词向量相似度
print(model.wv.similarity("苹果", "香蕉")) # 相似度较高
print(model.wv.similarity("苹果", "汽车")) # 相似度较低
这种特性让计算机能理解词语的 “语义关系”,为后续的文本分类、机器翻译等任务奠定基础。
总结
学习的多层感知机、反向传播、RNN/LSTM 和 Word2Vec,是理解 Transformers 的重要基石:
- MLP 是神经网络的基础结构
- 反向传播是模型学习的核心机制
- RNN 系列揭示了处理序列数据的思路
- Word2Vec 解决了词语的数字化难题
掌握这些知识后,我们就能更轻松地理解 Transformers 的创新点 —— 为什么注意力机制能超越 RNN,成为处理长文本的新宠。