1. ERNIE模型架构解析
ERNIE(Enhanced Representation through kNowledge IntEgration)是百度推出的基于Transformer架构的预训练语言模型。与BERT类似,它采用了Encoder-only结构,专注于文本语义表示的学习和提取。让我们深入拆解其核心组件:
1.1 输入表示层
输入文本首先经过Embedding层处理,这里包含三个关键步骤:
-
Token Embedding:将每个词转换为固定维度的向量表示。ERNIE使用WordPiece分词器,将句子拆分为子词单元(subword),有效解决未登录词问题。例如"playing"可能被拆分为"play"和"##ing"。
-
Position Embedding:由于Transformer本身不具备序列顺序感知能力,需要显式添加位置编码。ERNIE采用可学习的位置嵌入(而非原始Transformer的正弦函数),公式表示为:
$$PE(pos,2i) = \sin(pos/10000^{2i/d_{model}})$$
$$PE(pos,2i+1) = \cos(pos/10000^{2i/d_{model}})$$ -
Segment Embedding:对于句子对任务(如问答),添加段落标记区分不同句子。这三个嵌入相加形成最终的输入表示。
实际项目中,输入句子需先经过预处理:分词→添加[CLS]和[SEP]特殊标记→转换为token ID序列。例如:"深度学习很有趣" → ["[CLS]", "深", "度", "学", "习", "很", "有", "趣", "[SEP]"] → [101, 1234, 5678, 9012, 3456, 7890, 123, 456, 102]
1.2 Transformer编码层堆栈
ERNIE-base采用12层Transformer编码器,每层包含两个核心子层:
1.2.1 多头注意力机制
标准的Scaled Dot-Product Attention计算过程:
$$Attention(Q,K,V) = softmax(\frac{QK^T}{\sqrt{d_k}})V$$
其中:
- $Q$ (Query), $K$ (Key), $V$ (Value) 是通过线性变换从输入得到的矩阵
- $\sqrt{d_k}$ 是缩放因子,防止点积结果过大导致softmax梯度消失
多头注意力(Multi-Head Attention)将这个过程并行执行h次(ERNIE通常h=12),然后将结果拼接:
$$MultiHead(Q,K,V) = Concat(head_1,...,head_h)W^O$$
$$whe
