当前位置: 首页 > news >正文

Transformer:现代自然语言处理的革命性架构

1. 引言

Transformer模型彻底改变了自然语言处理领域,它摒弃了传统的循环神经网络(RNN)结构,完全基于自注意力机制构建。这种架构在机器翻译、文本生成等任务中表现出色,成为当今NLP模型的基石。

2. Seq2Seq模型与Encoder-Decoder架构

传统的序列到序列(Seq2Seq)模型基于Encoder-Decoder架构:

  • Encoder将输入序列编码为固定长度的上下文向量
  • Decoder基于该向量生成目标序列
    在这里插入图片描述

传统RNN-based模型的瓶颈在于:
lim ⁡ L → ∞ ∂ h t ∂ h t − L ⏟ 长距离依赖 ≈ 0 \underset{\text{长距离依赖}}{\underbrace{\lim_{L \to \infty} \frac{\partial h_t}{\partial h_{t-L}}}} \approx 0 长距离依赖 LlimhtLht0
其中 L L L表示时间步距离,导致梯度消失问题。

3. Transformer整体架构

Transformer创新性地采用堆叠的自注意力层
在这里插入图片描述

4. Embedding层与位置编码

4.1 词嵌入

将离散词汇映射为连续向量空间:
E ∈ R V × d model \mathbf{E} \in \mathbb{R}^{V \times d_{\text{model}}} ERV×dmodel
其中 V V V是词汇表大小, d model d_{\text{model}} dmodel是嵌入维度。

4.2 位置编码

由于Transformer不含时序结构,需显式注入位置信息:
P E ( p o s , 2 i ) = sin ⁡ ( p o s 10000 2 i / d model ) P E ( p o s , 2 i + 1 ) = cos ⁡ ( p o s 10000 2 i / d model ) \begin{aligned} PE_{(pos,2i)} &= \sin\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) \\ PE_{(pos,2i+1)} &= \cos\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) \end{aligned} PE(pos,2i)PE(pos,2i+1)=sin(100002i/dmodelpos)=cos(100002i/dmodelpos)
其中 p o s pos pos是位置索引, i i i是维度索引。

5. Encoder结构

每个Encoder层包含两个核心子层:

5.1 多头自注意力

将输入拆分为 h h h个头并行处理:
MultiHead ( Q , K , V ) = Concat ( head 1 , … , head h ) W O \text{MultiHead}(Q,K,V) = \text{Concat}(\text{head}_1,\dots,\text{head}_h)W^O MultiHead(Q,K,V)=Concat(head1,,headh)WO
其中每个头计算:
head i = Attention ( Q W i Q , K W i K , V W i V ) \text{head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V) headi=Attention(QWiQ,KWiK,VWiV)

5.2 前馈神经网络

位置全连接层提供非线性变换:
FFN ( x ) = max ⁡ ( 0 , x W 1 + b 1 ) W 2 + b 2 \text{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2 FFN(x)=max(0,xW1+b1)W2+b2

5.3 层归一化与残差连接

每个子层都采用残差连接层归一化
LayerNorm ( x + Sublayer ( x ) ) \text{LayerNorm}(x + \text{Sublayer}(x)) LayerNorm(x+Sublayer(x))
这解决了深层网络的梯度消失问题:
∂ L ∂ x ≈ ∂ L ∂ ( Sublayer ( x ) ) ⋅ 1 \frac{\partial \mathcal{L}}{\partial x} \approx \frac{\partial \mathcal{L}}{\partial (\text{Sublayer}(x))} \cdot 1 xL(Sublayer(x))L1

6. Decoder结构

Decoder在Encoder基础上增加:

  1. 掩码多头注意力:防止位置关注后续信息
  2. Encoder-Decoder注意力:融合源语言信息

掩码机制确保位置 i i i只能关注 j ≤ i j \leq i ji
Mask ( Q , K ) = { Q K T / d k if  j ≤ i − ∞ otherwise \text{Mask}(Q,K) = \begin{cases} QK^T/\sqrt{d_k} & \text{if } j \leq i \\ -\infty & \text{otherwise} \end{cases} Mask(Q,K)={QKT/dk if jiotherwise

7. 搭建Transformer关键组件

7.1 注意力计算核心

def scaled_dot_product_attention(Q, K, V, mask=None):d_k = Q.size(-1)scores = torch.matmul(Q, K.transpose(-2,-1)) / math.sqrt(d_k)if mask is not None:scores = scores.masked_fill(mask == 0, -1e9)attn = F.softmax(scores, dim=-1)return torch.matmul(attn, V)

7.2 层归一化实现

class LayerNorm(nn.Module):def __init__(self, features, eps=1e-6):super().__init__()self.gamma = nn.Parameter(torch.ones(features))self.beta = nn.Parameter(torch.zeros(features))self.eps = epsdef forward(self, x):mean = x.mean(-1, keepdim=True)std = x.std(-1, keepdim=True)return self.gamma * (x - mean) / (std + self.eps) + self.beta

8. 总结

Transformer通过以下创新解决了传统序列模型的局限:

  1. 完全注意力机制:捕获长距离依赖
  2. 并行计算结构:大幅提升训练效率
  3. 残差连接+层归一化:支持深层网络训练
  4. 位置编码:保留序列顺序信息

其架构公式可概括为:
Transformer ( X ) = Decoder ( Encoder ( Embedding ( X ) + PE ) ) \text{Transformer}(X) = \text{Decoder}(\text{Encoder}(\text{Embedding}(X) + \text{PE})) Transformer(X)=Decoder(Encoder(Embedding(X)+PE))

Transformer已成为BERT、GPT等革命性模型的基础,持续推动NLP领域的发展。

相关文章:

  • Java大厂面试攻略:Spring Boot与微服务架构深度剖析
  • yolov11转ncnn
  • 人人都是音乐家?腾讯开源音乐生成大模型SongGeneration
  • [论文阅读] 人工智能 + 软件工程 |
  • ARCGIS国土超级工具集1.6更新说明
  • 面向互联网大厂Java岗位面试:Spring Boot与微服务架构的深入探讨
  • Filecoin系列 - IPLD 技术分析
  • 吐槽之前后端合作开发
  • 李宏毅2025《机器学习》第三讲-AI的脑科学
  • “荔枝使”的难题怎么破:A*运输路径算法编程实践
  • Nginx+tomcat集群
  • AI Gateway 介绍
  • 【Node】最佳Node.js后端开发模板推荐
  • 分组交换比报文交换的传输时延更低
  • AWS-SAA 第二部份:安全性和权限管理
  • Docker学习笔记:DockerFile
  • 服务发现与动态负载均衡的结合
  • Typora文档另存与图片迁移的一种思路
  • nginx代理与tomcat动静分离
  • app专项测试命令如何写?
  • 怎么用phpcmf做网站/搜索引擎营销的特征
  • 3m网站源码/朋友圈广告怎么投放
  • wordpress登陆页面模板下载/个人做seo怎么赚钱
  • 网站怎么做关键词/免费建站平台
  • 为什么广州政府网站做的不好/企业做个网站多少钱
  • 做网站服务好/模板免费下载网站