【文本分类】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

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

相关文章
|
机器学习/深度学习 人工智能 缓存
极长序列、极快速度:面向新一代高效大语言模型的LASP序列并行
【4月更文挑战第26天】研究人员提出LASP,一种针对线性注意力机制的序列并行方法,解决了处理超长序列时GPU内存限制的问题。LASP利用点对点通信和内核融合优化,降低通信开销,提高GPU集群执行效率。在128个A100 GPU上,LASP能处理4096K长度的序列,比现有方法快8倍。虽然面临P2P通信需求高、环境适应性和特定机制依赖的挑战,但LASP为大型语言模型的效率和性能提供了新思路。[链接](https://arxiv.org/abs/2404.02882)
299 6
|
11月前
|
安全 物联网 物联网安全
制定统一的物联网技术标准和规范的难点有哪些?
制定统一的物联网技术标准和规范的难点有哪些?
399 58
|
11月前
|
人工智能 关系型数据库 分布式数据库
拥抱Data+AI|“全球第一”雅迪如何实现智能营销?DMS+PolarDB注入数据新活力
针对雅迪“云销通App”的需求与痛点,本文将介绍阿里云瑶池数据库DMS+PolarDB for AI提供的一站式Data+AI解决方案,助力销售人员高效用数,全面提升销售管理效率。
|
数据采集 人工智能 安全
数据治理的实践与挑战:大型案例解析
在当今数字化时代,数据已成为企业运营和决策的核心资源。然而,随着数据量的爆炸性增长和数据来源的多样化,数据治理成为了企业面临的重要挑战之一。本文将通过几个大型案例,探讨数据治理的实践、成效以及面临的挑战。
1525 4
数据治理的实践与挑战:大型案例解析
|
监控 微服务 Python
微服务的故障恢复与弹性设计
【8月更文第29天】在微服务架构中,由于服务间的相互依赖,任何单点故障都可能导致整个系统崩溃。因此,设计具备高可用性和弹性的微服务系统至关重要。本文将探讨如何通过重试机制、断路器和超时设置等策略来增强系统的容错能力和恢复能力。
509 1
|
7月前
|
人工智能 JSON 自然语言处理
31.3K star!开源免费本地AI神器,一键部署多模态大模型!
LocalAI 是一款革命性的开源AI框架,专为本地化部署设计。它完美复现了OpenAI的API接口,支持运行各类开源大模型(如LLaMA3、Phi-2、Stable Diffusion等),无需GPU即可在普通电脑上实现:
379 0
|
8月前
|
机器学习/深度学习 计算机视觉
YOLOv11改进策略【模型轻量化】| GhostNetV2:利用远距离注意力增强廉价操作
YOLOv11改进策略【模型轻量化】| GhostNetV2:利用远距离注意力增强廉价操作
233 12
YOLOv11改进策略【模型轻量化】| GhostNetV2:利用远距离注意力增强廉价操作
|
7月前
|
数据可视化 数据挖掘 atlas
地图不只是导航:DataV Atlas 揭示地理数据的深层价值
地图不只是导航:DataV Atlas 揭示地理数据的深层价值
151 2
|
9月前
|
数据管理 数据库 数据安全/隐私保护
Django—同一项目不同app使用不同数据库
在Django项目中实现不同app使用不同数据库的配置,可以通过配置多数据库、创建数据库路由和配置路由来实现。通过这种方法,可以有效地将数据隔离到不同的数据库,提高数据管理的灵活性和系统的可扩展性。希望本文能为开发者在Django项目中使用多数据库提供清晰的指导。
180 4
|
11月前
|
vr&ar 网络架构
配置BGP的基本功能
本文介绍了在AR1、AR2、AR3和AR4路由器之间配置BGP协议的过程。具体包括:在AR1和AR2之间建立EBGP连接,在AR2、AR3和AR4之间建立IBGP全连接,配置IP地址,发布AR1的LoopBack1端口,引入直连路由,并通过ping测试验证网络连通性。
配置BGP的基本功能