深圳Yolo 视觉
深圳
立即加入
词汇表

Transformer

了解Transformer 如何通过segment递归和远距离上下文处理等创新技术彻底改变序列建模。

Transformer 或Transformer Long "是一种复杂的 神经网络架构,旨在解决 人工智能(AI)领域最持久的挑战之一 人工智能(AI)中最持久的挑战之一:处理 超过固定长度的数据序列。由来自 Google AI)和卡内基梅隆大学(Carnegie Mellon University)的研究人员共同开发的。 架构改进了最初的 Transformer的基础上进行了改进。 引入了一种新颖的递归机制。这一创新允许模型在不同的 数据段的信息,大大扩展了其有效的 上下文窗口,而不会产生通常与处理长输入相关的大量计算 通常与处理长输入相关的大量计算开销。

改进序列建模

要了解Transformer 的意义,不妨先看看其前身的局限性。标准 转换器以固定大小的块(段)独立处理数据。这导致了 "上下文 碎片化",即模型从一个segment 移动到下一个segment 时就会遗忘信息。 Transformer 借鉴了递归神经网络(Recurrent Neural Networks)的概念,将segment recurrence)融入其中,从而克服了这一问题。 这一概念借鉴了递归神经网络(RNN),但 这一概念借鉴自循环神经网络(RNN),但应用于 Transformers 的可并行框架中。

该架构主要依靠两项技术贡献:

  • 分段级递归:模型会缓存前一segment 的隐藏状态(内存),并将其作为当前segment 的扩展上下文重复使用。 作为当前segment的扩展上下文。这样,信息就能在 深度学习层,使模型能够 建立比标准变形器长数百倍的依赖关系模型。
  • 相对位置编码:在标准模型中,标记被指定为绝对坐标(例如,位置 1、位置 2)、 位置 1、位置 2)。但是,在重复使用内存段时,绝对定位会造成混乱(因为新内存段的第一个标记与旧内存段的第一个标记看起来完全相同)。 标记看起来与旧存储segment 的第一个标记完全相同)。Transformer 通过以下方式解决了这一问题 将标记间的相对距离编码在 注意机制,确保模型 能理解序列的顺序,而不受segment 边界的影响。

实际应用

Transformer 能够保持长期记忆,这对于需要大量上下文的任务来说非常重要。

  • 长格式文本生成在自然语言处理(NLP 在自然语言处理 (NLP) 中,保持叙述的一致性是一件非常困难的事情。Transformer 擅长 为创意写作生成文本,例如 在生成小说或剧本时,模型必须记住第一章中介绍的人物,以便在第十章中做出合乎逻辑的决定。 在这种情况下,模型必须记住第一章中介绍的人物,才能在第十章中做出合乎逻辑的决定。
  • 金融时间序列分析:金融市场是一个长数据序列,其中 数月前的历史趋势会影响当前价格。Transformer 可用于 时间序列分析预测模型来预测股票 通过分析价格历史中的长期依赖关系来预测股票走势。 窗口。
  • 基因组序列分析:在生物信息学中,DNA 链实际上是极长的序列 的字符序列。研究人员使用Transformer 等架构来分析基因序列,以进行 模式识别和 异常检测,帮助医学研究和药物发现。

实施理念

虽然Ultralytics 主要侧重于 计算机视觉 (CV) YOLO11等模型,但了解 Transformer 对高级 ML 工程非常有用。以下内容 PyTorch代码段演示了在前向传递过程中传递 "内存 "张量以保留上下文的概念。 "内存 "tensor 概念。

import torch


def forward_pass_with_memory(input_segment, memory=None):
    """Conceptual demonstration of passing memory (cached states) simulating the Transformer-XL recurrence mechanism.
    """
    # If memory exists from the previous segment, concatenate it
    if memory is not None:
        # Combine memory with current input along the sequence dimension
        context = torch.cat([memory, input_segment], dim=1)
    else:
        context = input_segment

    # Simulation of processing (in a real model, this goes through layers)
    output = context * 0.5  # Dummy operation

    # Detach current output to create memory for the NEXT segment
    # This prevents gradient backpropagation into the deep history
    new_memory = output.detach()

    return output, new_memory


# Run a dummy example
segment1 = torch.randn(1, 10)  # Batch size 1, sequence length 10
output1, mems = forward_pass_with_memory(segment1)
print(f"Memory cached shape: {mems.shape}")

Transformer 与相关架构的比较

将Transformer 与类似术语区分开来,有助于明确其具体用途:

  • 标准Transformer对比标准 标准模型会在每个segment结束后重置其状态,并将其 "内存 "限制在segment 长度内(如 512 个 token)、 512 个标记)。Transformer 将内存前移,理论上允许无限回溯上下文、 仅受内存资源限制。
  • BERT BERT 设计用于 自然语言理解 (NLU) 使用双向注意力(同时查看过去和未来的单词),但不适合生成。 Transformer 是一种自回归模型,这意味着它能按顺序生成数据,因此更适合创建内容。 内容。
  • Longformer 的比较:Longformer 长序列,采用稀疏关注模式(一次只关注几个单词),以降低计算成本。 成本。相比之下,Transformer 使用的是递归法。Longformer 通常更适合一次性阅读大量文件,而 Transformer-XL 则更适合一次性阅读大量文件。 而Transformer 则更适合流式数据或逐步生成长序列。

对于处理序列数据的研究人员和开发人员来说,研究 Transformer 研究论文,可以更深入地了解 内存管理 大型语言模型 (LLM) 的高效内存管理有了更深入的了解。高效 内存使用的原则也适用于优化视觉模型,以便在边缘设备上使用 图形处理器

加入Ultralytics 社区

加入人工智能的未来。与全球创新者联系、协作和共同成长

立即加入