Transformer 先容

打印 上一主题 下一主题

主题 1818|帖子 1818|积分 5454

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Transformer 先容

Transformer 是当代人工智能天生内容(AIGC)范畴,尤其是自然语言处置惩罚(NLP)和盘算机视觉(CV)中的核心模子架构。它由 Vaswani 等人在 2017 年论文《Attention is All You Need》中提出,彻底改变了深度学习的范式,驱动了 ChatGPT、BERT、DALL·E 等前沿应用的诞生。

一. Transformer 的背景与意义

在 Transformer 出现之前,NLP 任务主要依赖循环神经网络(RNN)及其变种(如 LSTM 和 GRU)。这些模子按序次处置惩罚数据,存在以下问题:


  • 盘算效率低:序列处置惩罚无法并行化,练习大规模数据耗时。
  • 长间隔依赖问题:RNN 难以捕获句子中远间隔单词之间的关系(如“本日天气很好,所以我决定……去公园”中的“天气”和“公园”)。
Transformer 引入了 注意力机制(Attention),完全摒弃了 RNN 的序列处置惩罚方式,依靠 自注意力(Self-Attention) 捕获序列中恣意两个位置的关系。这使得 Transformer:


  • 高效:支持并行盘算,适合 GPU/TPU 加速。
  • 强大:能捕获长间隔依赖,性能远超 RNN。
  • 通用:不但实用于 NLP,还扩展到图像、音频等多模态任务。

二. Transformer 的核心架构

Transformer 是一个基于编码器-解码器(Encoder-Decoder)结构的模子,常用于序列到序列(Seq2Seq)任务(如机器翻译)。它的架构可以分为以下几个关键部分:
2.1 输入嵌入(Input Embedding)



  • 作用:将输入的单词(或子词、token)转化为固定维度的向量。
  • 细节

    • 利用词嵌入(如 Word2Vec 或随机初始化的嵌入矩阵)。
    • 为了让模子区分单词的位置,加入位置编码(Positional Encoding),因为 Transformer 不像 RNN 那样有自然的序列序次。
    • 位置编码可以是固定的(如正弦/余弦函数)或可学习的参数。

2.2 编码器(Encoder)



  • 构成:由 N 层(通常 6 层或更多)相同的编码器模块堆叠而成,每一层包含:

    • 多头自注意力机制(Multi-Head Self-Attention)

      • 盘算输入序列中每个 token 与其他 token 的关系。
      • “多头”表现并行盘算多个注意力分布,捕获不同语义关系。

    • 前馈神经网络(Feed-Forward Neural Network, FFN)

      • 对每个 token 的表现进行非线性变换。
      • 通常是两层全连接网络,中间有激活函数(如 ReLU 或 GELU)。

    • 残差连接与层归一化(Add & Norm)

      • 每子层(自注意力和 FFN)后添加残差连接(输入与输出相加)。
      • 利用层归一化(Layer Normalization)稳定练习。


  • 作用:将输入序列编码为上下文相关的表现。
2.3 解码器(Decoder)



  • 构成:同样由 N 层解码器模块构成,每一层包含:

    • 掩码多头自注意力(Masked Multi-Head Self-Attention)

      • 为了防止“看到将来”,解码时只关注当前及之前的 token(常用于自回归天生)。

    • 多头注意力(Encoder-Decoder Attention)

      • 解码器关注编码器的输出,捕获输入与输出之间的关系。

    • 前馈神经网络(FFN)

      • 与编码器中的 FFN 类似。

    • 残差连接与层归一化

      • 同编码器,稳定练习。


  • 作用:根据编码器的输出和当前天生的内容,逐步天生目标序列。
2.4 输出层



  • 作用:将解码器的输出转化为终极预测(如单词概率分布)。
  • 细节

    • 利用线性层将解码器输出映射到词汇表巨细。
    • 应用 Softmax 函数得到每个 token 的概率。


三. 核心机制:注意力机制(Attention)

注意力机制是 Transformer 的灵魂,尤其是 自注意力(Self-Attention)。以下是它的原理和实现:
3.1 自注意力的盘算



  • 输入:一个序列的嵌入向量(如单词的向量表现)。
  • 步骤

    • 天生查询、键、值(Query, Key, Value)

      • 对每个 token 的向量,通过线性变换天生三个向量:Q(查询)、K(键)、V(值)。
      • 假设输入向量维度为 (d_{model}),则 Q、K、V 的维度通常也是 (d_{model})。

    • 盘算注意力分数

      • 通过点积盘算 Q 和 K 的相似度:                                                            Score                                        =                                        Q                                        ⋅                                                       K                                           T                                                                \text{Score} = Q \cdot K^T                                 Score=Q⋅KT。
      • 为了避免数值过大,缩放点积:                                                            Scaled Score                                        =                                                                       Q                                              ⋅                                                               K                                                 T                                                                                                           d                                                 k                                                                                               \text{Scaled Score} = \frac{Q \cdot K^T}{\sqrt{d_k}}                                 Scaled Score=dk​                         ​Q⋅KT​,其中                                                                            d                                           k                                                                d_k                                 dk​是 K 的维度。
      • 应用 Softmax 得到注意力权重:                                                            Attention Weights                                        =                                        Softmax                                        (                                        Scaled Score                                        )                                                  \text{Attention Weights} = \text{Softmax}(\text{Scaled Score})                                 Attention Weights=Softmax(Scaled Score)。

    • 加权求和

      • 用注意力权重对 V 进行加权求和:                                                            Attention                                        (                                        Q                                        ,                                        K                                        ,                                        V                                        )                                        =                                        Attention Weights                                        ⋅                                        V                                                  \text{Attention}(Q, K, V) = \text{Attention Weights} \cdot V                                 Attention(Q,K,V)=Attention Weights⋅V。


  • 输出:每个 token 的新表现,融合了整个序列的上下文信息。
3.2 多头注意力(Multi-Head Attention)



  • 原理

    • 将 Q、K、V 分成多个子空间(“头”),分别盘算自注意力。
    • 每个头关注不同的语义或关系(如语法、语义、位置)。
    • 末了将多头的输出拼接并通过线性变换整合。

  • 优势

    • 加强模子表达本领,捕获复杂依赖关系。
    • 类似卷积神经网络中的多通道。

3.3 掩码注意力(Masked Attention)



  • 用途:在解码器中防止模子看到将来的 token。
  • 实现:在盘算注意力分数时,将将来的位置置为负无穷(Softmax 后权重为 0)。

四. Transformer 的优势与局限

4.1 优势


  • 并行化:不像 RNN 按序处置惩罚,Transformer 可以一次性处置惩罚整个序列,练习速度快。
  • 长间隔依赖:自注意力机制能捕获恣意两个 token 之间的关系,适合长序列。
  • 模块化:编码器和解码器可单独利用,机动性高。
  • 通用性:实用于翻译、文本天生、图像处置惩罚(Vision Transformer)等任务。
4.2 局限


  • 盘算复杂度高

    • 自注意力机制的复杂度为                                                  O                                  (                                               n                                     2                                              )                                          O(n^2)                           O(n2),其中                                                  n                                          n                           n 是序列长度。
    • 对于超长序列(如文档或高分辨率图像),内存需求大。

  • 必要大量数据

    • Transformer 依赖大规模数据集和预练习(如 BERT、GPT)。

  • 缺乏显式序列信息

    • 完全依赖位置编码,某些任务可能不如 RNN 直观。


五. Transformer 的变体与应用

Transformer 的提出催生了众多变体,广泛应用于 AIGC 范畴:
5.1 NLP 范畴的变体



  • BERT(Bidirectional Encoder Representations from Transformers)

    • 仅利用编码器,双向建模,适公道解任务(如文本分类、问答)。
    • 通过掩码语言模子(MLM)预练习。

  • GPT(Generative Pre-trained Transformer)

    • 仅利用解码器,单向自回归天生,适合文本天生任务。
    • GPT-3、ChatGPT 等是其代表。

  • T5(Text-to-Text Transfer Transformer)

    • 将全部 NLP 任务统一为文本到文本的格式,编码器-解码器结构。

5.2 视觉范畴的变体



  • Vision Transformer (ViT)

    • 将图像切分为小块(patch),像 token 一样输入 Transformer。
    • 在图像分类、目标检测等范畴表现出色。

  • Swin Transformer

    • 引入分层结构和局部注意力,优化盘算效率,适合高分辨率图像。

5.3 多模态范畴



  • CLIP:结合 Transformer 处置惩罚图像和文本,实现跨模态任务。
  • DALL·E:基于 Transformer 天生图像,广泛用于 AIGC 图像天生。
5.4 其他范畴



  • AlphaCode:用于代码天生。
  • Speech Transformer:语音识别和合成。

六. Transformer 在 AIGC 中的作用

在 AIGC(人工智能天生内容)范畴,Transformer 是核心技术:


  • 文本天生:ChatGPT、Grok 等通过 Transformer 天生自然语言对话。
  • 图像天生:DALL·E、Stable Diffusion 的埋伏空间建模依赖 Transformer 变体。
  • 多模态天生:Sora(视频天生)等模子结合 Transformer 处置惩罚多模态数据。
  • 个性化内容:推荐体系、创意写作、广告天生等都利用 Transformer 的强大建模本领。

七. Transformer 架构的深入剖析

为了更深入理解 Transformer,我们进一步拆解其核心组件,结合数学原理和代码实现。
7.1 输入处置惩罚:嵌入与位置编码



  • 词嵌入(Word Embedding)

    • 输入的 token 被映射为                                                               d                                                   m                                        o                                        d                                        e                                        l                                                                   d_{model}                           dmodel​-维向量(常见值如 512 或 768)。
    • 嵌入矩阵                                                   E                                  ∈                                               R                                                   ∣                                        V                                        ∣                                        ×                                                       d                                                           m                                              o                                              d                                              e                                              l                                                                                                E \in \mathbb{R}^{|V| \times d_{model}}                           E∈R∣V∣×dmodel​(其中                                                   ∣                                  V                                  ∣                                          |V|                           ∣V∣ 是词汇表巨细)通过练习学习。

  • 位置编码(Positional Encoding)

    • Transformer 没有 RNN 的序列性,必须显式注入位置信息。
    • 原始论文利用固定正弦/余弦函数:
                                                         P                                  E                                  (                                  p                                  o                                  s                                  ,                                  2                                  i                                  )                                  =                                  sin                                  ⁡                                               (                                                                  p                                           o                                           s                                                                     1000                                                           0                                                               2                                                 i                                                 /                                                                   d                                                                       m                                                       o                                                       d                                                       e                                                       l                                                                                                                                  )                                              ,                                             P                                  E                                  (                                  p                                  o                                  s                                  ,                                  2                                  i                                  +                                  1                                  )                                  =                                  cos                                  ⁡                                               (                                                                  p                                           o                                           s                                                                     1000                                                           0                                                               2                                                 i                                                 /                                                                   d                                                                       m                                                       o                                                       d                                                       e                                                       l                                                                                                                                  )                                                      PE(pos, 2i) = \sin\left(\frac{pos}{10000^{2i / d_{model}}}\right), \quad PE(pos, 2i+1) = \cos\left(\frac{pos}{10000^{2i / d_{model}}}\right)                           PE(pos,2i)=sin(100002i/dmodel​pos​),PE(pos,2i+1)=cos(100002i/dmodel​pos​)
      其中                                                  p                                  o                                  s                                          pos                           pos 是 token 的位置,                                                  i                                          i                           i是维度索引。
    • 优点:固定函数支持恣意长序列,周期性便于捕获相对位置。
    • 当代模子(如 RoPE)利用可学习的动态位置编码。

代码示例:位置编码实现
  1. import torch
  2. import torch.nn as nn
  3. import math
  4. class PositionalEncoding(nn.Module):
  5.     def __init__(self, d_model, max_len=5000):
  6.         super().__init__()
  7.         pe = torch.zeros(max_len, d_model)
  8.         position = torch.arange(0, max_len, dtype=torch.float).unsqueeze(1)
  9.         div_term = torch.exp(torch.arange(0, d_model, 2).float() * (-math.log(10000.0) / d_model))
  10.         pe[:, 0::2] = torch.sin(position * div_term)
  11.         pe[:, 1::2] = torch.cos(position * div_term)
  12.         pe = pe.unsqueeze(0)  # Shape: (1, max_len, d_model)
  13.         self.register_buffer('pe', pe)
  14.     def forward(self, x):
  15.         # x: (batch_size, seq_len, d_model)
  16.         return x + self.pe[:, :x.size(1), :]
复制代码
7.2 编码器:多头自注意力与前馈网络



  • 多头自注意力(Multi-Head Self-Attention)

    • 每个头独立盘算注意力,公式为:
                                                         Attention                                  (                                  Q                                  ,                                  K                                  ,                                  V                                  )                                  =                                  softmax                                               (                                                                  Q                                                           K                                              T                                                                                                    d                                              k                                                                               )                                              V                                          \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V                           Attention(Q,K,V)=softmax(dk​                        ​QKT​)V
    • 多头机制:

      • 输入向量分割为                                                             h                                                  h                                 h 个子空间(                                                            h                                                  h                                 h 通常为 8 或 12)。
      • 每个头的                                                                            Q                                           h                                                      ,                                                       K                                           h                                                      ,                                                       V                                           h                                                      ∈                                                       R                                                                            d                                                                   m                                                    o                                                    d                                                    e                                                    l                                                                               /                                              h                                                                               Q_h, K_h, V_h \in \mathbb{R}^{d_{model}/h}                                 Qh​,Kh​,Vh​∈Rdmodel​/h。
      • 终极输出拼接并通过线性层:
        [
        \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \dots, \text{head}_h)W^O
        ]

    • 缩放点积(Scaled Dot-Product)避免数值过大,                                                                             d                                        k                                                                   \sqrt{d_k}                           dk​               ​ 是键向量的维度。

  • 前馈网络(FFN)

    • 每层编码器对每个 token 独立应用:
                                                         FFN                                  (                                  x                                  )                                  =                                  ReLU                                  (                                  x                                               W                                     1                                              +                                               b                                     1                                              )                                               W                                     2                                              +                                               b                                     2                                                      \text{FFN}(x) = \text{ReLU}(xW_1 + b_1)W_2 + b_2                           FFN(x)=ReLU(xW1​+b1​)W2​+b2​
    •                                                                W                                     1                                              ∈                                               R                                                                  d                                                           m                                              o                                              d                                              e                                              l                                                                     ×                                                       d                                                           f                                              f                                                                                                W_1 \in \mathbb{R}^{d_{model} \times d_{ff}}                           W1​∈Rdmodel​×dff​,                                                               W                                     2                                              ∈                                               R                                                                  d                                                           f                                              f                                                                     ×                                                       d                                                           m                                              o                                              d                                              e                                              l                                                                                                W_2 \in \mathbb{R}^{d_{ff} \times d_{model}}                           W2​∈Rdff​×dmodel​,                                                               d                                                   f                                        f                                                                   d_{ff}                           dff​ 通常是                                                               d                                     model                                                      d_{\text{model}}                           dmodel​ 的 4 倍(如 2048)。

  • 残差连接与层归一化

    • 残差连接:                                                  x                                  +                                  Sublayer                                  (                                  x                                  )                                          x + \text{Sublayer}(x)                           x+Sublayer(x)。
    • 层归一化:
                                                         LayerNorm                                  (                                  x                                  )                                  =                                                             x                                        −                                        μ                                                                                               σ                                              2                                                          +                                           ϵ                                                                         ⋅                                  γ                                  +                                  β                                          \text{LayerNorm}(x) = \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} \cdot \gamma + \beta                           LayerNorm(x)=σ2+ϵ                       ​x−μ​⋅γ+β
      其中                                                  μ                                  ,                                  σ                                          \mu, \sigma                           μ,σ 是均值和方差,                                                  γ                                  ,                                  β                                          \gamma, \beta                           γ,β 是可学习参数。

代码示例:多头自注意力
  1. class MultiHeadAttention(nn.Module):
  2.     def __init__(self, d_model, num_heads):
  3.         super().__init__()
  4.         assert d_model % num_heads == 0
  5.         self.d_k = d_model // num_heads
  6.         self.num_heads = num_heads
  7.         self.q_linear = nn.Linear(d_model, d_model)
  8.         self.k_linear = nn.Linear(d_model, d_model)
  9.         self.v_linear = nn.Linear(d_model, d_model)
  10.         self.out_linear = nn.Linear(d_model, d_model)
  11.     def forward(self, q, k, v, mask=None):
  12.         batch_size = q.size(0)
  13.         # Linear transformations and split into heads
  14.         q = self.q_linear(q).view(batch_size, -1, self.num_heads, self.d_k).transpose(1, 2)
  15.         k = self.k_linear(k).view(batch_size, -1, self.num_heads, self.d_k).transpose(1, 2)
  16.         v = self.v_linear(v).view(batch_size, -1, self.num_heads, self.d_k).transpose(1, 2)
  17.         # Scaled dot-product attention
  18.         scores = torch.matmul(q, k.transpose(-2, -1)) / math.sqrt(self.d_k)
  19.         if mask is not None:
  20.             scores = scores.masked_fill(mask == 0, -1e9)
  21.         attn = torch.softmax(scores, dim=-1)
  22.         context = torch.matmul(attn, v)
  23.         # Concatenate heads and project
  24.         context = context.transpose(1, 2).contiguous().view(batch_size, -1, self.num_heads * self.d_k)
  25.         return self.out_linear(context)
复制代码
7.3 解码器:掩码注意力与交织注意力



  • 掩码自注意力

    • 确保天生第                                                   t                                          t                           t个 token 时,只关注前                                                   t                                  −                                  1                                          t-1                           t−1 个 token。
    • 通过上三角掩码实现:
                                                                      mask                                                   i                                        ,                                        j                                                           =                                               {                                                                                                                     1                                                    ,                                                                                                                                              if                                                     j                                                    ≤                                                    i                                                                                                                                                                        0                                                    ,                                                                                                                            otherwise                                                                                                                \text{mask}_{i,j} = \begin{cases} 1, & \text{if } j \leq i \\ 0, & \text{otherwise} \end{cases}                           maski,j​={1,0,​if j≤iotherwise​

  • 交织注意力(Encoder-Decoder Attention)

    • 解码器的                                                   Q                                          Q                           Q来自解码器自身,                                                  K                                  ,                                  V                                          K, V                           K,V 来自编码器输出。
    • 允许解码器关注输入序列的上下文。

  • FFN 和归一化:与编码器划一。
代码示例:Simple Transformer Model
  1. class Transformer(nn.Module):
  2.     def __init__(self, d_model, num_heads, num_layers, d_ff):
  3.         super().__init__()
  4.         self.encoder_layers = nn.ModuleList([
  5.             nn.ModuleDict({
  6.                 'mha': MultiHeadAttention(d_model, num_heads),
  7.                 'ffn': nn.Sequential(nn.Linear(d_model, d_ff), nn.ReLU(), nn.Linear(d_ff, d_model)),
  8.                 'norm1': nn.LayerNorm(d_model),
  9.                 'norm2': nn.LayerNorm(d_model)
  10.             }) for _ in range(num_layers)
  11.         ])
  12.         self.pos_encoder = PositionalEncoding(d_model)
  13.     def forward(self, src, mask=None):
  14.         src = self.pos_encoder(src)
  15.         for layer in self.encoder_layers:
  16.             attn_output = layer['mha'](src, src, src, mask)
  17.             src = layer['norm1'](src + attn_output)
  18.             ffn_output = layer['ffn'](src)
  19.             src = layer['norm2'](src + ffn_output)
  20.         return src
复制代码

八. 数学与优化细节

8.1 注意力机制的数学推导



  • 点积注意力

    • 假设输入                                                   X                                  ∈                                               R                                                   n                                        ×                                                       d                                                           m                                              o                                              d                                              e                                              l                                                                                                X \in \mathbb{R}^{n \times d_{model}}                           X∈Rn×dmodel​,其中 (n) 是序列长度。
    • 通过线性变换天生:
                                                         Q                                  =                                  X                                               W                                     Q                                              ,                                             K                                  =                                  X                                               W                                     K                                              ,                                             V                                  =                                  X                                               W                                     V                                                      Q = XW_Q, \quad K = XW_K, \quad V = XW_V                           Q=XWQ​,K=XWK​,V=XWV​
      其中                                                                W                                     Q                                              ,                                               W                                     K                                              ,                                               W                                     V                                              ∈                                               R                                                                  d                                           model                                                      ×                                                       d                                           k                                                                                 W_Q, W_K, W_V \in \mathbb{R}^{d_{\text{model}} \times d_k}                           WQ​,WK​,WV​∈Rdmodel​×dk​。
    • 注意力分数:
                                                         A                                  =                                  softmax                                               (                                                                  Q                                                           K                                              T                                                                                                    d                                              k                                                                               )                                              ∈                                               R                                                   n                                        ×                                        n                                                                   A = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) \in \mathbb{R}^{n \times n}                           A=softmax(dk​                        ​QKT​)∈Rn×n
    • 输出:
                                                         Z                                  =                                  A                                  V                                  ∈                                               R                                                   n                                        ×                                                       d                                           v                                                                                 Z = AV \in \mathbb{R}^{n \times d_v}                           Z=AV∈Rn×dv​

  • 多头扩展

    • 每个头盘算:
                                                                      head                                     i                                              =                                  Attention                                  (                                  X                                               W                                                   Q                                        i                                                           ,                                  X                                               W                                                   K                                        i                                                           ,                                  X                                               W                                                   V                                        i                                                           )                                          \text{head}_i = \text{Attention}(XW_{Q_i}, XW_{K_i}, XW_{V_i})                           headi​=Attention(XWQi​​,XWKi​​,XWVi​​)
    • 拼接:
                                                         Z                                  =                                  Concat                                  (                                               head                                     1                                              ,                                  …                                  ,                                               head                                     h                                              )                                               W                                     O                                                      Z = \text{Concat}(\text{head}_1, \dots, \text{head}_h)W_O                           Z=Concat(head1​,…,headh​)WO​

8.2 盘算复杂度



  • 自注意力:                                        O                            (                                       n                               2                                      ⋅                                       d                               model                                      )                                  O(n^2 \cdot d_{\text{model}})                     O(n2⋅dmodel​),因盘算                                        Q                                       K                               T                                            QK^T                     QKT必要                                         n                            ×                            n                                  n \times n                     n×n 次操纵。
  • 前馈神经网络(FFN):                                        O                            (                            n                            ⋅                                       d                               model                                      ⋅                                       d                                           f                                  f                                                 )                                  O(n \cdot d_{\text{model}} \cdot d_{ff})                     O(n⋅dmodel​⋅dff​),对每个 token 独立盘算。
  • 优化方向:

    • 希罕注意力(比方,Longformer):将                                                                n                                     2                                                      n^2                           n2 的复杂度降低到                                                   O                                  (                                  n                                  ⋅                                  k                                  )                                          O(n \cdot k)                           O(n⋅k)。
    • 线性注意力(比方,Performer):利用核方法进行近似,将复杂度降低到                                                  O                                  (                                  n                                  )                                          O(n)                           O(n)。
    • FlashAttention:优化 GPU 内存访问,加快练习速度。

8.3 练习与正则化



  • Dropout:应用于注意力权重和前馈神经网络(通常为 0.1)以防止过拟合。
  • 学习率预热:最初线性增加学习率,以使大型模子的练习更加稳定。
  • 标签平滑:避免预测时过分自信,进步模子的泛化本领。

九. 人工智能天生内容(AIGC)中的 Transformer:优化与扩展

在人工智能天生内容(AIGC)范畴,Transformer 已进行了大量优化,以处置惩罚天生任务:
9.1 预练习与微调



  • 预练习

    • BERT:掩码语言模子(MLM)预测随机掩码的标记。
    • GPT:自回归语言模子预测下一个标记。
    • T5:具有多样化预练习任务的统一文本到文本框架。

  • 微调

    • 针对特定任务(比方,对话、翻译)调整参数。
    • 当代方法,如低秩适应(LoRA)微调低秩矩阵,节省盘算资源。

9.2 高效的 Transformer



  • LLaMA(Meta AI):为研究目的进行了优化练习。
  • Mistral:专家肴杂(MoE)结构动态选择子网络,降低推理本钱。
  • FlashAttention-2:基于硬件的优化最小化内存利用。
9.3 多模态 Transformer



  • CLIP:联合练习图像和文本的 Transformer,用于跨模态任务。
  • DALL·E 3:将 Transformer 与扩散模子相结合,用于高质量图像天生。
  • Sora:扩展 Transformer 用于视频天生,处置惩罚时间序列。
代码示例:简单的文本天生(基于解码器)
  1. class SimpleDecoder(nn.Module):
  2.     def __init__(self, vocab_size, d_model, num_heads, num_layers):
  3.         super().__init__()
  4.         self.embedding = nn.Embedding(vocab_size, d_model)
  5.         self.transformer = Transformer(d_model, num_heads, num_layers, d_ff=2048)
  6.         self.output_layer = nn.Linear(d_model, vocab_size)
  7.     def forward(self, tgt, mask=None):
  8.         x = self.embedding(tgt)
  9.         x = self.transformer(x, mask)
  10.         return self.output_layer(x)
  11. # 用法示例
  12. vocab_size, d_model, num_heads, num_layers = 10000, 512, 8, 6
  13. model = SimpleDecoder(vocab_size, d_model, num_heads, num_layers)
  14. input_ids = torch.randint(0, vocab_size, (1, 10))  # 模拟输入
  15. logits = model(input_ids)
复制代码

十. 高级应用与挑战

10.1 人工智能天生内容(AIGC)中的挑战



  • 天生划一性:在长文本或图像中保持逻辑连贯性。
  • 盘算本钱:大型模子(比方,GPT-4)必要数十亿个参数,使得推理本钱高昂。
  • 伦理问题:天生的内容可能涉及版权、偏差或错误信息。
10.2 优化方向



  • 模子压缩:知识蒸馏(比方,DistilBERT)或量化(比方,INT8 推理)。
  • 肴杂架构:将 Transformer 与卷积神经网络(CNNs)相结合(比方,ConvNeXt)以进步效率。
  • 自适应盘算:动态调整盘算(比方,提前退出机制)。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

兜兜零元

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表