【翻译】A Survey of Transformers -- Transformers综述

本文概述了复旦大学邱锡鹏团队Transformer的变体(X-formers),探讨了其在模型效率提升、结构改进、预训练策略和广泛应用上的进展,为理解与实践Transformer提供系统指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇文章翻译自复旦大学邱锡鹏团队的 Transformers 综述。
文章链接:A Survey of Transformers

Abstract

Transformers在许多领域都取得了取得的成功,如:NLP、CV和语音处理,自然吸引了学术界和工业界的很大兴趣。到目前为止,已经有许多Transformers的变体(也就是 X-formers)被提出来,然而仍然缺乏对这些变体的系统的、全面的文献解读。这篇综述中,我们提出对X-formers 全面的评述。我们首先介绍了Vanilla Transformer,然后对X-formers 进行划分,接下来从结构、预训练和应用三个方面介绍了不同的X-formers,最后描绘了未来发展方向。

Introduction

X-formers从三个方面丰富了Vanilla Transformer:

  • 模型效率:应用Transformer的一个关键挑战是在self-Attention时计算和内存的限制,导致的处理长文本时的低效率。一些改进方法包括:lightweight attention (e.g. sparse attention variants) and Divide-and-conquer methods ((e.g., recurrent and hierarchical mechanism)
  • 模型泛化:因为Transformer结构比较灵活,针对输入数据的固有偏差上几乎没有假设,因此在处理小规模数据时比较困难。改进的方法包括:引入结构化偏置、正则化、在大规模数据上预训练。
  • 模型应用:工作的主线旨在将Transformer应用在下游任务上。

BackGround

Vanilla Transformer

在这里插入图片描述

Transformers 划分

Attention

其它魔改

网络结构变体

预训练Transformers

Transformers应用

CONCLUSION AND FUTURE DIRECTIONS

### Transformer 架构综述 #### 2.1 Transformer架构的核心组成 Transformer是一种基于自注意力机制的模型,摒弃了传统的循环神经网络(RNN)和卷积神经网络(CNN),从而能够并行处理数据[^1]。该架构由编码器(encoder)和解码器(decoder)两部分构成。 - **编码器**:负责接收输入序列,并通过多层堆叠的方式提取特征。每一层都包含了两个子层——一个多头自注意力机制(multi-head self-attention mechanism) 和一个前馈神经网络(feed-forward neural network)。 - **解码器**:用于生成目标序列,在每一步都会考虑之前位置的信息以及来自编码器端的内容表示。同样地,它也是由多个相同的层组成的,其中除了上述提到的两种子层外还增加了一个额外的“encoder-decoder attention”层来关注源侧信息。 #### 应用场景 ##### 自然语言处理(NLP) 在自然语言处理方面,Transformers已经被证明非常有效,尤其是在机器翻译、文本摘要等任务上取得了显著成果。这些进步得益于其强大的建模能力可以捕捉到远距离依赖关系而无需像LSTM那样逐词顺序扫描整个句子。 ##### 计算机视觉(CV) 对于计算机视觉领域而言,尽管最初设计是为了应对NLP问题,但现在也被广泛应用于图像分类、物体检测等领域。例如,Dosovitskiy等人研究发现当把图片分割成patch后再送入transformer进行训练时可以获得很好的效果[^2]。 ##### 音频处理 此外,在语音识别和其他涉及时间序列数据分析的任务中也有着不错的表现。这是因为音频信号本质上也是一种连续的时间序列数据形式,所以采用类似的策略即能取得良好成效。 ##### 跨模态学习 最后值得一提的是跨模态学习的应用案例,比如BART(Bidirectional and AutoRegressive Transformers)就是一个典型的例子,它可以实现双向编码的同时具备一定的预测功能,适用于多种下游任务如问答系统构建等[^3]。 ```python import torch.nn as nn class Transformer(nn.Module): def __init__(self, d_model=512, nhead=8, num_encoder_layers=6, num_decoder_layers=6, dim_feedforward=2048, dropout=0.1): super().__init__() # 定义编码器和解码器 encoder_layer = nn.TransformerEncoderLayer(d_model=d_model, nhead=nhead, dim_feedforward=dim_feedforward, dropout=dropout) decoder_layer = nn.TransformerDecoderLayer(d_model=d_model, nhead=nhead, dim_feedforward=dim_feedforward, dropout=dropout) self.transformer = nn.Transformer(d_model=d_model, nhead=nhead, num_encoder_layers=num_encoder_layers, num_decoder_layers=num_decoder_layers).cuda() def forward(self, src, tgt): output = self.transformer(src.cuda(), tgt.cuda()) return output ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NLP_wendi

谢谢您的支持。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值