【文本分类】Attention Is All You Need

简介: 【文本分类】Attention Is All You Need

·阅读摘要:

 本文于2017年6月发布,属于Transformer模型的开山之作,地位不言而喻。Transformer是继于MLP、RNN、CNN模型的又一大模型,且解决了RNN应用于长输入乏力的情况,随后提出的BERT、GPT都是基于Transformer。本文主要基于机器翻译任务来讲述Transformer,近年的论文证明其在图像、文本、音频、视频都可广泛应用。

·参考文献:

 [1] Attention Is All You Need

 论文链接:https://arxiv.org/abs/1706.03762

在文本分类领域中,主要使用Transformer模型的Encoder模型。Decoder属于生成模型,我们不用,但是也要认真拜读。

[0] 阅读本论文需要前置知识:


  编码器-解码器(encoder-decoder) ⭐对于理解这篇文章非常重要

  注意力机制(Attention) ⭐深入理解,会为神经网络任务提供一个思路

  多层感知机(MLP)

  残差连接(residual connection) ⭐为神经网络任务提供一个优化方法

  LN与BN ⭐不同的正则化策略

  位置编码(positional encoding) ⭐为文本编码提供新思路

  由于本篇文章为论文阅读笔记,前置知识的介绍写在另外一篇博客:神经网络】MLP 编码器-解码器 注意力机制 残差连接


[1] 摘要


  比较好的序列转换模型都是基于CNN或RNN,然后使用注意力机制连接编码器和解码器。此论文提出了一种只使用注意力机制的简单模型,取名叫做Transformer,实验表明此模型的实验效果与泛化能力都很好。

【注一】:序列转换叫做Sequence-to-Sequence,机器翻译就是典型的S2S任务。

[2] 引言


  1、RNN是前一个状态的输出放到下一个状态的输入中,序列性妨碍训练中的 并行 ,尤其是当序列越长的时候。

  2、之后注意力机制开始被使用,在不考虑输入或输出序列距离的情况下对相关性进行建模,但都是结合RNN来做的。

  3、Transformer,避免递归,完全依赖注意力机制来绘制输入和输出之间的相关性,支持并行训练。

【注二】:叙述逻辑环环相扣。主要说Transformer的并行能力。

[3] 相关工作


 使用CNN想要关联起来较远位置的输入需要“卷”很多步,需要线性复杂度或者对数复杂度,Transformer可以在O ( 1 ) O(1)O(1)内关联两个任意位置的输入之间的相关性。

 代价是降低了分辨率,Transformer使用了多头注意力(Multi-Head Attention)抵消了这一影响。

【注三】分辨率可理解为CNN的卷积核,Transformer类比到卷积层上就是卷积核的宽度为序列长度,这样丢失了精度,Transformer使用Multi-Head Attention(类比到CNN的多通道)弥补。

[4] 模型结构


  论文提出的Transformer模型组合使用了:编码器-解码器结构注意力机制点积注意力机制多头注意力机制自注意力机制)、前馈神经网络嵌入层softmax位置编码

c57cfb848f2242449cdf827e04eedfb2.png

[4.1] 编码器

  上图中,左边由N个层堆叠起来构成编码器。每个层有2个子层。

  第一个子层是多头自注意力(Multi-Head Attention)层。随后使用了残差连接(residual connection)层正则化(Layer Normalization)

image.png

  第二个子层是MLP层。随后使用了残差连接(residual connection)层正则化(Layer Normalization)

image.png

【注四】Layer Normalization与Batch Normalization不一样,下图源自李沐大神的视频。对于embedding层的三维输出(batch、seq、feature),Layer Normalization是黄色笔画的横着切,这样会把一个句子作为一个单位进行均值为0、方差为1的操作;比Batch Normalization蓝色笔画的效果要好。

image.png

[4.2] 解码器

  解码器比编码器多了一个mask multi-head attention层。这是因为解码器需要有自回归性,解码器的输出是一个一个输出的,每次的输出要作为输入再进入解码器。这一层就是为了实现这一功能,让第t个时刻的输出只看前t-1个时刻的输入。

image.png

【注五】这里不理解。输出既然是一个一个产生,那么在t时刻输出再作为输入,直接拿过来用就好了,即使想用t+1时刻后的数据,应当还未生成啊?

[4.3] 注意力层【按比例点积注意力、自注意力、多头注意力】

   按比例点积注意力(Scaled Dot-Product Attention)

   这是Transformer模型中,实现注意力机制的基础模型,模型图如下:

image.png

image.png

自注意力(self-Attention)

  非常好理解,就是自己算和自己的相关性,表现为Q,K,V都等于文本的embedding向量。

多头注意力(Multi-Head Attention)

   把输入映射成h个低维的向量,然后经过按比例点积注意力(Scaled Dot-Product

Attention) 层后,再聚合成高维的向量。其中“映射”的操作,靠Linear神经网络完成,这样就拥有了可学习的参数。模型如下:

image.png

image.png

多头注意力可以类比到卷积神经网络的多通道。

[4.4] Feed Foward层

   与RNN模型作对比,如下:

image.png

   在RNN中,MLP是用来抽取句子的特征的,RNN需要前面时刻的输出,作为现在时刻的输入,具有序列性。

   在Transformer中,MLP是对每个词(token / word)进行分别提取。因为词向量经过多头注意力层之后,每个词的向量已经对全局信息进行了抓取。

[4.5] 位置编码(positional encoding)层

  到目前为止,模型对文本的序列性还没有提取。文章提出了一种简单的方法:

image.png

   其中,pos为单词的Index,也就是seq_len中的索引,i为embedding_dim词向量的索引,d是embedding_dim值。

image.png

image.png

  算出对应的位置编码后,我们直接加上原来的embedding层向量即可

image.png

   文中提到使用了学习过的位置嵌入,发现与使用正弦余弦函数效果几乎相同。

相关文章
|
5天前
|
机器学习/深度学习 自然语言处理 数据处理
论文《Attention is All You Need》
论文《Attention is All You Need》
27 1
|
5天前
|
机器学习/深度学习 数据可视化 TensorFlow
[transformer]论文实现:Attention Is All You Need(上)
[transformer]论文实现:Attention Is All You Need(上)
18 2
|
5天前
|
机器学习/深度学习 并行计算 数据可视化
[transformer]论文实现:Attention Is All You Need(下)
[transformer]论文实现:Attention Is All You Need(下)
23 2
|
10月前
|
机器学习/深度学习 自然语言处理 安全
Bert on ABSA、ASGCN、GAN、Sentic GCN…你都掌握了吗?一文总结情感分析必备经典模型(1)
Bert on ABSA、ASGCN、GAN、Sentic GCN…你都掌握了吗?一文总结情感分析必备经典模型
109 0
|
10月前
|
机器学习/深度学习 自然语言处理 数据挖掘
Bert on ABSA、ASGCN、GAN、Sentic GCN…你都掌握了吗?一文总结情感分析必备经典模型(2)
Bert on ABSA、ASGCN、GAN、Sentic GCN…你都掌握了吗?一文总结情感分析必备经典模型
177 1
|
12月前
|
机器学习/深度学习 人工智能 搜索推荐
Attention-lvcsr、Residual LSTM…你都掌握了吗?一文总结语音识别必备经典模型(3)
Attention-lvcsr、Residual LSTM…你都掌握了吗?一文总结语音识别必备经典模型
111 0
|
12月前
|
机器学习/深度学习 算法 语音技术
Attention-lvcsr、Residual LSTM…你都掌握了吗?一文总结语音识别必备经典模型(2)
Attention-lvcsr、Residual LSTM…你都掌握了吗?一文总结语音识别必备经典模型
177 0
|
12月前
|
机器学习/深度学习 自然语言处理 PyTorch
Attention-lvcsr、Residual LSTM…你都掌握了吗?一文总结语音识别必备经典模型(1)
Attention-lvcsr、Residual LSTM…你都掌握了吗?一文总结语音识别必备经典模型
156 0
|
机器学习/深度学习 数据采集 人工智能
基于TextCNN实现文本分类
本文参考Yoon Kim的论文"Convolutional Neural Networks for Sentence Classification",实现TextCNN卷积神经网络进行文本分类。
161 0
基于TextCNN实现文本分类
|
机器学习/深度学习 自然语言处理 算法
TextRCNN、TextCNN、RNN…你都掌握了吗?一文总结文本分类必备经典模型(一)
TextRCNN、TextCNN、RNN…你都掌握了吗?一文总结文本分类必备经典模型(一)
232 0

相关实验场景

更多