Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 第6章:Transformer与注意力机制

第6章:Transformer与注意力机制

Transformer模型详解

1. 模型架构概述

Transformer模型由Vaswani等人在2017年提出(《Attention Is All You Need》),其核心特点包括:

  • 完全基于注意力机制:摒弃了传统的循环和卷积结构
  • 编码器-解码器架构:由N个相同层堆叠而成(通常N=6)
  • 并行化处理:显著提升训练效率

2. 核心组件

2.1 多头注意力机制(Multi-Head Attention)

# 伪代码示例
class MultiHeadAttention:
    def __init__(self, d_model, num_heads):
        self.W_q = Linear(d_model, d_model)  # 查询矩阵
        self.W_k = Linear(d_model, d_model)  # 键矩阵
        self.W_v = Linear(d_model, d_model)  # 值矩阵
        self.softmax = Softmax(dim=-1)
  • 计算过程:
    1. 将输入拆分为多个头(通常8-16个)
    2. 分别计算缩放点积注意力:

      Attention(Q,K,V)=softmax(QKTdk)VAttention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}})V Attention(Q,K,V)=softmax(dk​​QKT​)V

2.2 位置编码(Positional Encoding)

PE(pos,2i)=sin(pos/100002i/dmodel)PE_{(pos,2i)} = sin(pos/10000^{2i/d_{model}}) PE(pos,2i)​=sin(pos/100002i/dmodel​)

PE(pos,2i+1)=cos(pos/100002i/dmodel)PE_{(pos,2i+1)} = cos(pos/10000^{2i/d_{model}}) PE(pos,2i+1)​=cos(pos/100002i/dmodel​)

  • 解决序列顺序信息缺失问题
  • 可学习或固定正弦/余弦函数

2.3 前馈网络(Feed Forward Network)

两层全连接网络+ReLU激活:

FFN(x)=max(0,xW1+b1)W2+b2FFN(x) = max(0, xW_1 + b_1)W_2 + b_2 FFN(x)=max(0,xW1​+b1​)W2​+b2​

3. 关键技术细节

3.1 残差连接与层归一化

  • 每个子层后执行:LayerNorm(x + Sublayer(x))
  • 缓解梯度消失问题

3.2 掩码机制

  • 编码器:处理可变长度输入
  • 解码器:防止未来信息泄露(因果掩码)

4. 与RNN的对比优势

特性TransformerRNN
并行性完全并行序列处理
长程依赖直接建模梯度消失风险
计算复杂度O(n²·d)O(n·d²)

5. 实现示例(PyTorch关键部分)

class TransformerLayer(nn.Module):
    def __init__(self, d_model, num_heads):
        self.self_attn = MultiHeadAttention(d_model, num_heads)
        self.ffn = PositionwiseFFN(d_model)
        self.norm1 = LayerNorm(d_model)
        self.norm2 = LayerNorm(d_model)
        
    def forward(self, x, mask):
        attn_out = self.self_attn(x, x, x, mask)
        x = self.norm1(x + attn_out)
        ffn_out = self.ffn(x)
        return self.norm2(x + ffn_out)

6. 模型变体

  • 参数共享:ALBERT的跨层参数共享
  • 稀疏注意力:Longformer的局部+全局注意力
  • 内存优化:Reformer的LSH注意力

关键洞见:Transformer的成功本质在于通过注意力机制建立了输入元素间的全连接动态权重网络,这种架构特别适合建模长距离依赖关系。

Last Updated:: 5/20/25, 7:33 PM