在自然语言处理(NLP)领域,词表示的优化和Transformer架构的出现是两大关键里程碑。前者解决了"如何让机器理解词语语义"的基础问题,后者则凭借高效的全局信息捕捉能力,成为当前主流NLP模型的核心框架。本文将系统梳理从稀疏词表示到动态词表示的演进路径,再聚焦Transformer的核心机制与编码器流程,为NLP入门学习提供清晰脉络。
一、NLP词表示:从稀疏孤立到动态关联的跨越
词表示是NLP的"地基"------它将人类语言中的词语转化为机器可计算的向量,其质量直接决定后续模型的效果。从发展历程来看,词表示主要经历了三个关键阶段,核心痛点从"高维稀疏"逐步走向"动态适配"。
1. 初代方案:独热编码(One-Hot Encoding)------稀疏且无语义
独热编码是最基础的词表示方法,原理简单:为词汇表中的每个词分配一个唯一的索引,用"1"标记当前词的索引位置,其余位置全为"0"。
-
核心问题:
-
高维稀疏:若词汇量为10000,每个词向量维度就是10000,其中仅1个"1"、9999个"0",计算效率极低;
-
无语义关联:"cat"([1,0,...,0])和"dog"([0,1,...,0])的向量点积为0,无法体现两者同属"动物"的语义关联。
-
适用场景:仅用于简单的文本分类、关键词匹配等场景,无法支撑复杂语义理解任务。
2. 进阶方案:Word2Vec------分布式静态表示
为解决独热编码的缺陷,Word2Vec通过分布式表示将词向量维度压缩到几百维(如200维、300维),并让语义相近的词向量距离更近(如"cat"和"dog"向量相似度高)。
-
核心模型:
-
CBOW(Continuous Bag of Words):通过"上下文词"预测"中心词",训练速度快,适合高频词;
-
Skip-gram:通过"中心词"预测"上下文词",对低频词的表示更精准,泛化能力更强。
-
仍存缺陷:
-
静态向量:同一词在不同语境下向量完全相同(如"苹果"在"吃苹果"和"苹果手机"中向量一致),无法解决一词多义;
-
忽略词序:"猫追狗"和"狗追猫"的词向量组合无差异,丢失了关键的句法逻辑信息。
3. 突破方案:ELMo------动态上下文表示
ELMo(Embeddings from Language Models)首次引入双向上下文信息,让词向量随语境动态变化,彻底解决了一词多义问题。
-
核心逻辑:
-
基于双向LSTM(Long Short-Term Memory)训练语言模型,同时学习"从左到右"和"从右到左"的上下文特征;
-
对同一词,根据其所在句子(如"河边旁的银行"vs"中央银行")输出不同的向量,实现"语境适配"。
-
不足与局限:
-
依赖LSTM:循环结构导致无法并行计算,训练时长显著增加;
-
深层堆叠难:LSTM层数过深时易出现梯度消失,难以捕捉更长程的上下文依赖。
二、Transformer核心:自注意力机制与编码器流程
ELMo的局限催生了Transformer的诞生。Transformer完全抛弃循环结构,以自注意力机制为核心,实现了"并行计算+长程依赖捕捉"的双重突破,成为当前BERT、GPT等大模型的基础架构。
1. 核心创新:自注意力机制(Self-Attention)
自注意力机制是Transformer的"灵魂",它通过Query-Key-Value(QKV)机制,直接计算序列中每个词与其他所有词的关联度(注意力权重),无需像RNN那样按顺序迭代。
-
三大优势:
-
并行计算:所有词的注意力权重可同时计算,效率远超RNN;
-
长程依赖:任意两个词(无论距离多远)可直接建立关联,无需通过中间词传递;
-
可解释性:注意力权重可可视化,能直观看到模型"关注了哪些词"(如分析"他爱打篮球"时,"他"的权重会向"爱""打篮球"倾斜)。
2. 关键补充:位置编码(Positional Encoding)
自注意力本身不包含词序信息("猫追狗"和"狗追猫"的关联计算逻辑一致),因此需要在词嵌入后叠加位置编码------通过正弦/余弦函数生成位置特征,让模型感知词的顺序差异,弥补自注意力在词序捕捉上的不足。
3. 核心组件:多头自注意力与前馈网络
多头自注意力(Multi-Head Attention):将自注意力的QKV拆分为多个"子空间"(如8个),每个子空间独立计算注意力,再将结果拼接、线性变换。其价值在于"多视角捕捉关联",比如有的子空间关注语法搭配,有的关注语义逻辑,让特征表达更全面。
- 前馈网络(FFN):紧跟在注意力层之后,对每个词向量单独执行"维度扩张→非线性激活→维度还原"(如512维→2048维→512维)。核心作用是强化局部特征------注意力负责"全局关联",FFN则通过非线性变换,让单个词的语义细节更精准,弥补注意力的线性局限。
4. Transformer编码器流程
编码器是Transformer"理解输入语义"的核心模块,通常由6层相同结构堆叠而成,完整流程如下:
-
输入预处理:对文本进行词嵌入转换,叠加位置编码,得到包含词语义和顺序信息的基础向量;
-
多头自注意力层:将基础向量送入多头自注意力层,从多个子空间计算词与词的全局关联,输出融合多视角信息的向量;
-
残差连接与层归一化:将多头自注意力的输出与"原始基础向量"相加(残差连接,避免梯度消失),通过层归一化(Layer Norm)统一特征分布,稳定训练过程;
-
前馈网络层:将归一化后的向量送入前馈网络,通过非线性变换强化每个词的局部语义特征;
-
多层堆叠:重复执行"多头自注意力→残差归一化→前馈网络→残差归一化"流程,堆叠6层后输出包含完整全局语义的特征向量,为后续任务(如分类、翻译)提供支持。
解码器流程 以机器翻译为例,先对目标序列进行词嵌入和位置编码;然后通过掩码多头自注意力层保证生成的序列自左向右;再通过交叉注意力层关注输入序列的全局特征;之后经过前馈网络和残差归一化;最后通过线性层和Softmax输出单词概率,采用自回归方式迭代生成完整序列。