一文读懂「Attention is All You Need」| 附代码实现

前言

2017 年中,有两篇类似同时也是笔者非常欣赏的论文,分别是 FaceBook 的Convolutional Sequence to Sequence Learning和 Google 的Attention is All You Need,它们都算是 Seq2Seq 上的创新,本质上来说,都是抛弃了 RNN 结构来做 Seq2Seq 任务。

在本篇文章中,笔者将对Attention is All You Need做一点简单的分析。当然,这两篇论文本身就比较火,因此网上已经有很多解读了(不过很多解读都是直接翻译论文的,鲜有自己的理解),因此这里尽可能多自己的文字,尽量不重复网上各位大佬已经说过的内容。

序列编码

深度学习做 NLP 的方法,基本上都是先将句子分词,然后每个词转化为对应的词向量序列。这样一来,每个句子都对应的是一个矩阵 X=(x1,x2,…,xt),其中 xi 都代表着第 i 个词的词向量(行向量),维度为 d 维,故

。这样的话,问题就变成了编码这些序列了。


第一个基本的思路是 RNN 层,RNN 的方案很简单,递归式进行:

不管是已经被广泛使用的 LSTM、GRU 还是最近的 SRU,都并未脱离这个递归框架。RNN 结构本身比较简单,也很适合序列建模,但 RNN 的明显缺点之一就是无法并行,因此速度较慢,这是递归的天然缺陷。

另外我个人觉得RNN 无法很好地学习到全局的结构信息,因为它本质是一个马尔科夫决策过程

第二个思路是 CNN 层,其实 CNN 的方案也是很自然的,窗口式遍历,比如尺寸为 3 的卷积,就是:

在 FaceBook 的论文中,纯粹使用卷积也完成了 Seq2Seq 的学习,是卷积的一个精致且极致的使用案例,热衷卷积的读者必须得好好读读这篇文论。

CNN 方便并行,而且容易捕捉到一些全局的结构信息,笔者本身是比较偏爱 CNN 的,在目前的工作或竞赛模型中,我都已经尽量用 CNN 来代替已有的 RNN 模型了,并形成了自己的一套使用经验,这部分我们以后再谈。

Google的大作提供了第三个思路:纯 Attention,单靠注意力就可以。

阅读原文

Transformer是一种基于注意力机制(Attention Mechanism)的深度学习模型架构,最初由Vaswani等人在论文《Attention is All You Need》中提出。它彻底改变了自然语言处理领域的传统做法,并成为许多先进模型的基础框架。 ### Transformer的核心思想 传统的序列建模方法如RNN、LSTM存在训练速度慢、难以并行化的问题。而Transformer通过自注意力机制(Self-Attention),能够在一次前向传播过程中捕捉到输入序列的所有位置之间的依赖关系,从而解决了这些问题。 #### 主要组成部分包括: 1. **编码器(Encoder)** 编码器负责将输入序列转换成高维表示向量。每个编码层包含两个子模块:一个多头注意力机制(Multi-head Attention)和一个全连接网络(Feed Forward Network)。这两个子模块之间采用残差连接和归一化操作。 2. **解码器(Decoder)** 解码器接收来自编码器的信息以及自身的先前输出预测结果,逐步生成目标序列。其结构类似于编码器,但也加入了“掩码多头注意力”以防止当前位置看到未来的标记信息。 3. **自注意力机制(Self-Attention / Multi-head Attention)** 自注意力允许模型关注句子中的不同部分,在计算某个词的上下文时表示时赋予其他单词不同程度的重要性权重值。这种机制使得长距离依赖更容易被捕获。 4. **Positional Encoding (位置嵌入)** 因为Transformer抛弃了递归形式的设计,默认无法感知输入数据的位置顺序关系,所以引入了固定模式的位置编码来增加时间维度上的特征表达能力。 --- ### 为什么Transformers很重要? - 它们极大地提高了机器翻译等任务的质量; - 提供了一个高效的学习框架可以扩展至非常大的规模; - 成为了预训练通用语言表征的重要工具,例如BERT、GPT系列皆以此为基础构建而成;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值