·阅读摘要:
  本文于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位置编码

[4.1] 编码器

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

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


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

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

[4.2] 解码器

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

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

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

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

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


   qqqkkkvvv都是个一维向量,但是由于我们可以批量计算,多个qqqkkkvvv合并构成二维向量QQQKKKVVV。此模型公式为:

Attention(Q,K,V)=softmax(QKTdk)VAttention(Q, K, V) = softmax(\frac{QK^T}{\sqrt{d_k}})VAttention(Q,K,V)=softmax(dk

QKT)V

   自注意力(self-Attention)

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

   多头注意力(Multi-Head Attention)

   把输入映射成h个低维的向量,然后经过按比例点积注意力(Scaled Dot-Product Attention) 层后,再聚合成高维的向量。其中“映射”的操作,靠Linear神经网络完成,这样就拥有了可学习的参数。模型如下:

MultiHead(Q,K,V)=Concat(head1,...,headh)WOwhereheadi=Attention(QWiQ,KWiK,VWiV)MultiHead(Q, K, V) = Concat(head_1, ...,head_h)W^O\\ where head_i= Attention(QW^Q_i, KW^K_i, VW^V_i)MultiHead(Q,K,V)=Concat(head1,...,headh)WOwhereheadi=Attention(QWiQ,KWiK,VWiV)

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

[4.4] Feed Foward层

   与RNN模型作对比,如下:

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

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

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

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

PE(pos,2i)=sin(pos/100002i/dmodel)PE(pos,2i+1)=cos(pos/100002i/dmodel)PE(pos,2i)=sin(pos/10000^{2i/d_{model}})\\ PE(pos,2i+1)=cos(pos/10000^{2i/d_{model}})PE(pos,2i)=sin(pos/100002i/dmodel)PE(pos,2i+1)=cos(pos/100002i/dmodel)
   其中,pos为单词的Index,也就是seq_len中的索引,i为embedding_dim词向量的索引,d是embedding_dim值。

  PE(pos)PE(pos)PE(pos)的图像类似于:

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

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

【文本分类】Attention Is All You Need相关推荐

  1. pytorch实现文本分类_使用变形金刚进行文本分类(Pytorch实现)

    pytorch实现文本分类 'Attention Is All You Need' "注意力就是你所需要的" New deep learning models are introd ...

  2. 用深度学习(CNN RNN Attention)解决大规模文本分类问题 - 综述和实践

    https://zhuanlan.zhihu.com/p/25928551 近来在同时做一个应用深度学习解决淘宝商品的类目预测问题的项目,恰好硕士毕业时论文题目便是文本分类问题,趁此机会总结下文本分类 ...

  3. [Python人工智能] 二十八.Keras深度学习中文文本分类万字总结(CNN、TextCNN、LSTM、BiLSTM、BiLSTM+Attention)

    从本专栏开始,作者正式研究Python深度学习.神经网络及人工智能相关知识.前一篇文章分享了BiLSTM-CRF模型搭建及训练.预测,最终实现医学命名实体识别实验.这篇文章将详细讲解Keras实现经典 ...

  4. [深度学习] 自然语言处理 --- 基于Attention机制的Bi-LSTM文本分类

    Peng Zhou等发表在ACL2016的一篇论文<Attention-Based Bidirectional Long Short-Term Memory Networks for Relat ...

  5. 《Hierarchical Attention Network for Document Classification》—— 用于文本分类的层次注意力网络

    目录 <Hierarchical Attention Network for Document Classification>-- 用于文本分类的层次注意力网络 1.文本分类 1.1 文本 ...

  6. python attention机制_[深度应用]·Keras实现Self-Attention文本分类(机器如何读懂人心)...

    [深度应用]·Keras实现Self-Attention文本分类(机器如何读懂人心) 笔者在[深度概念]·Attention机制概念学习笔记博文中,讲解了Attention机制的概念与技术细节,本篇内 ...

  7. 文本分类 之 有Attention的词向量平均模型 Word Average Model with Attention

    这是一个文本分类的系列专题,将采用不同的方法有简单到复杂实现文本分类. 使用Stanford sentiment treebank 电影评论数据集 (Socher et al. 2013). 数据集可 ...

  8. 文本分类模型第二弹:HAN(Hierarchy Attention Network)

    一.前言 本文是文本分类的第二篇,来介绍一下微软在2016年发表的论文<Hierarchical Attention Networks for Document Classification&g ...

  9. 一文综述经典的深度文本分类方法

    作者 |  何从庆 转载自AI算法之心(ID:AIHeartForYou) 笔者整理最近几年比较经典的深度文本分类方法,希望帮助小伙伴们了解深度学习在文本分类中的应用. Convolutional N ...

最新文章

  1. oracle临时表性能,oracle临时表-优化查询速度
  2. SpringBoot中使用Thymeleaf常用功能(二):测试Thymeleaf条件判断
  3. mysql路由器配置文件_如何安装并配置mysql 5.7.13解压缩版?
  4. python使用openpyxl操作excel总结
  5. [算法] 麻将序数牌组合方案
  6. 二叉树的遍历-递归与非递归 - 海子
  7. 【C语言】计算N名同学的某门功课的平均成绩
  8. 记录:zlog交叉编译出aarch64的libzlog.a
  9. Less-8(盲注--布尔盲注)
  10. AM5728核心板出厂测试笔记
  11. MySQL面试题——in是否使用【索引】
  12. 第一篇 消防法及相关法律法规与消防职业道德
  13. QT 程序异常结束,crashed
  14. 本科毕业设计(论文)外文翻译基本规范
  15. 数据结构—图及其应用(交通问题,实现最短路径、最短时间、最少费用查询)
  16. 51单片机简易秒表的设计(含源代码、编译过的 HEX 文件以及仿真图)
  17. ROS学习(3)——仿真平台搭建
  18. Python数据类型(史上最全~不谈)
  19. 引爆互联网文娱产业,华为云打响5G开局之战
  20. 基于ODX的工程诊断仪 — DDS

热门文章

  1. Nat. Med. | 人工智能临床研究新指南
  2. spell_picture二次升级版
  3. python输入字符串转换为公式_将python字符串转化成长表达式的函数eval实例
  4. 在线作图|2分钟绘制一张箱线图
  5. 高影响力期刊iMeta扬帆起航!第一篇文章已上线!
  6. Nature:如何在学术报告中讲述一个引人入胜的故事!
  7. 南京医科大学陈连民组招收博硕士研究生(肠道微生物与心血管代谢健康方向)...
  8. Water Research:南科大夏雨+唐圆圆-台风对深圳沿海微塑料和微塑圈的影响
  9. SBB:南土所褚海燕组-pH主导土壤中固氮群落的共存与装配
  10. QIIME 2教程. 12数据筛选Filtering data(2020.11)