深入理解深度学习——注意力机制(Attention Mechanism):位置编码(Positional Encoding)

这篇具有很好参考价值的文章主要介绍了深入理解深度学习——注意力机制(Attention Mechanism):位置编码(Positional Encoding)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

分类目录:《深入理解深度学习》总目录

相关文章:
·注意力机制(AttentionMechanism):基础知识
·注意力机制(AttentionMechanism):注意力汇聚与Nadaraya-Watson核回归
·注意力机制(AttentionMechanism):注意力评分函数(AttentionScoringFunction)
·注意力机制(AttentionMechanism):Bahdanau注意力
·注意力机制(AttentionMechanism):多头注意力(MultiheadAttention)
·注意力机制(AttentionMechanism):自注意力(Self-attention)
·注意力机制(AttentionMechanism):位置编码(PositionalEncoding)


在处理词元序列时,循环神经网络是逐个的重复地处理词元的,而自注意力则因为并行计算而放弃了顺序操作。 为了使用序列的顺序信息,通过在输入表示中添加位置编码(Positional Encoding)来注入绝对的或相对的位置信息。 位置编码可以通过学习得到也可以直接固定得到。 接下来描述的是基于正弦函数和余弦函数的固定位置编码。

假设输入表示 X ∈ R n × d X\in R^{n\times d} XRn×d包含一个序列中 n n n个词元的 d d d维嵌入表示。 位置编码使用相同形状的位置嵌入矩阵 P ∈ R n × d P\in R^{n\times d} PRn×d输出 X + P X + P X+P, 矩阵第 i i i行、第 2 j 2j 2j列和 2 j + 1 2j+1 2j+1列上的元素为:
p pos , 2 i = sin ⁡ ( pos 1000 0 2 i d ) p pos , 2 i + 1 = cos ⁡ ( pos 1000 0 2 i d ) \begin{aligned} p_{\text{pos}, 2i} &= \sin(\frac{\text{pos}}{10000^{\frac{2i}{d}}}) \\ p_{\text{pos}, 2i + 1} &= \cos(\frac{\text{pos}}{10000^{\frac{2i}{d}}}) \\ \end{aligned} ppos,2ippos,2i+1=sin(10000d2ipos)=cos(10000d2ipos)

在位置嵌入矩阵 P P P中,行代表词元在序列中的位置,列代表位置编码的不同维度。从下面的例子中可以看到位置嵌入矩阵的第6列和第7列的频率高于第8列和第9列。 第6列和第7列之间的偏移量及第8列和第9列之间的偏移量正是由于正弦函数和余弦函数的交替。
深入理解深度学习——注意力机制(Attention Mechanism):位置编码(Positional Encoding)
可以看到,在位置编码中,当列数是偶数时,使用正弦函数;当列数是奇数时,则使用余弦函数。

绝对位置信息

为了明白沿着编码维度单调降低的频率与绝对位置信息的关系, 下面是 0 , 1 , ⋯   , 7 0, 1, \cdots, 7 0,1,,7的二进制表示形式。正如所看到的,每个数字、每两个数字和每四个数字上的比特值在第一个最低位、第二个最低位和第三个最低位上分别交替。

0的二进制是:000
1的二进制是:001
2的二进制是:010
3的二进制是:011
4的二进制是:100
5的二进制是:101
6的二进制是:110
7的二进制是:111

在二进制表示中,较高比特位的交替频率低于较低比特位, 与下面的热图所示相似,只是位置编码通过使用三角函数在编码维度上降低频率。 由于输出是浮点数,因此此类连续表示比二进制表示法更节省空间。
深入理解深度学习——注意力机制(Attention Mechanism):位置编码(Positional Encoding)

相对位置信息

除了捕获绝对位置信息之外,上述的位置编码还允许模型学习得到输入序列中相对位置信息。 这是因为对于任何确定的位置偏移 δ \delta δ,位置 i + δ i + \delta i+δ处的位置编码可以线性投影位置 i i i处的位置编码来表示。

这种投影的数学解释是,令 w j = 1 1000 0 2 j d w_j = \frac{1}{10000^{\frac{2j}{d}}} wj=10000d2j1, 对于任何确定的位置偏移 δ \delta δ,任何一对 ( p i , 2 j , p i , 2 j + 1 ) (p_{i, 2j}, p_{i, 2j + 1}) (pi,2j,pi,2j+1)都可以线性投影到 ( p i + δ , 2 j , p i + δ , 2 j + 1 ) (p_{i + \delta, 2j}, p_{i + \delta, 2j + 1}) (pi+δ,2j,pi+δ,2j+1)
深入理解深度学习——注意力机制(Attention Mechanism):位置编码(Positional Encoding)

位置编码的实例

还是以“I am good.(我很好。)”这句话为例。在RNN模型中,句子是逐字送入学习网络的。换言之,首先把“I”作为输入,接下来是“am”,以此类推。通过逐字地接受输入,学习网络就能完全理解整个句子。然而,Attention网络并不遵循递归循环的模式。因此,我们不是逐字地输入句子,而是将句子中的所有词并行地输入到神经网络中。并行输入有助于缩短训练时间,同时有利于学习长期依赖。不过,并行地将词送入Attention,将不保留词序。要理解一个句子,词序(词在句子中的位置)是很重要吗的,Attention也需要一些关于词序的信息,以便更好地理解句子。

对于给定的句子“I am good.”,我们首先计算每个单词在句子中的嵌入值。嵌入维度可以表示为 d model d_{\text{model}} dmodel。比如将嵌入维度 d model d_{\text{model}} dmodel设为4,那么输入矩阵的维度将是 [ 句子长度 × 嵌入维度 ] [\text{句子长度}\times\text{嵌入维度}] [句子长度×嵌入维度],也就是 [ 3 × 4 ] [3 \times 4] [3×4]

假设表示“I am good.”的输入矩阵 X X X如下图所示:深入理解深度学习——注意力机制(Attention Mechanism):位置编码(Positional Encoding)
如果把输入矩阵 X X X直接传给Attention ,那么模型是无法理解词序的。因此,需要添加一些表明词序(词的位置)的信息,以便神经网络能够理解句子的含义。所以,我们不能将输入矩阵直接传给Attention 。这里引入了一种叫作位置编码(Positional Encoding)的技术,以达到上述目的。顾名思义,位置编码是指词在句子中的位置(词序)的编码。

位置编码矩阵 P P P的维度与输入矩阵 X X X的维度相同。在将输入矩阵直接传给Attention 之前,我们将使其包含位置编码。我们只需将位置编码矩阵 P P P添加到输入矩阵 X X X中,再将其作为输入送入神经网络,如下图所示。这样一来,输入矩阵不仅有词的嵌入值,还有词在句子中的位置信息。
深入理解深度学习——注意力机制(Attention Mechanism):位置编码(Positional Encoding)
我们知道“I”位于句子的第0位,“am”在第1位,“good”在第2位。代入 i i i值,我们得到如下结果,其中第一行为“I”的位置编码,第二行为“am”的位置编码,第三行为“good”的位置编码:
[ sin ⁡ ( 0 1000 0 0 4 ) = sin ⁡ ( 0 ) cos ⁡ ( 0 1000 0 0 4 ) ) = cos ⁡ ( 0 ) sin ⁡ ( 0 1000 0 2 4 ) = sin ⁡ ( 0 ) cos ⁡ ( 0 1000 0 2 4 ) ) = cos ⁡ ( 0 ) sin ⁡ ( 1 1000 0 0 4 ) = sin ⁡ ( 1 ) cos ⁡ ( 1 1000 0 0 4 ) ) = cos ⁡ ( 1 ) sin ⁡ ( 1 1000 0 2 4 ) = sin ⁡ ( 1 100 ) cos ⁡ ( 1 1000 0 2 4 ) ) = cos ⁡ ( 1 100 ) sin ⁡ ( 2 1000 0 0 4 ) = sin ⁡ ( 2 ) cos ⁡ ( 2 1000 0 0 4 ) ) = cos ⁡ ( 2 ) sin ⁡ ( 2 1000 0 2 4 ) = sin ⁡ ( 1 50 ) cos ⁡ ( 2 1000 0 2 4 ) ) = cos ⁡ ( 1 50 ) ] \begin{bmatrix} \sin(\frac{0}{10000^\frac{0}{4}})=\sin(0) & \cos(\frac{0}{10000^\frac{0}{4}}))=\cos(0) & \sin(\frac{0}{10000^\frac{2}{4}})=\sin(0) & \cos(\frac{0}{10000^\frac{2}{4}}))=\cos(0)\\ \sin(\frac{1}{10000^\frac{0}{4}})=\sin(1) & \cos(\frac{1}{10000^\frac{0}{4}}))=\cos(1) & \sin(\frac{1}{10000^\frac{2}{4}})=\sin(\frac{1}{100})& \cos(\frac{1}{10000^\frac{2}{4}}))=\cos(\frac{1}{100})\\ \sin(\frac{2}{10000^\frac{0}{4}})=\sin(2) & \cos(\frac{2}{10000^\frac{0}{4}}))=\cos(2) & \sin(\frac{2}{10000^\frac{2}{4}})=\sin(\frac{1}{50})& \cos(\frac{2}{10000^\frac{2}{4}}))=\cos(\frac{1}{50})\\ \end{bmatrix} sin(10000400)=sin(0)sin(10000401)=sin(1)sin(10000402)=sin(2)cos(10000400))=cos(0)cos(10000401))=cos(1)cos(10000402))=cos(2)sin(10000420)=sin(0)sin(10000421)=sin(1001)sin(10000422)=sin(501)cos(10000420))=cos(0)cos(10000421))=cos(1001)cos(10000422))=cos(501)

最终的位置编码矩阵 P P P如下:
P = [ 0 1 0 1 0.841 0.54 0.01 0.99 0.909 − 0.416 0.02 0.99 ] P = \begin{bmatrix} 0 & 1 & 0 & 1\\ 0.841 & 0.54 & 0.01 & 0.99\\ 0.909 & -0.416 & 0.02 & 0.99\\ \end{bmatrix} P= 00.8410.90910.540.41600.010.0210.990.99

只需将输入矩阵 X X X与计算得到的位置编码矩阵 P P P进行逐元素相加,并将得出的结果作为输入矩阵送入编码器中。让我们回顾一下编码器架构。下图是一个编码器模块,从中我们可以看到,在将输入矩阵送入编码器之前,首先要将位置编码加入输入矩阵中,再将其作为输入送入编码器。
深入理解深度学习——注意力机制(Attention Mechanism):位置编码(Positional Encoding)

参考文献:
[1] Lecun Y, Bengio Y, Hinton G. Deep learning[J]. Nature, 2015
[2] Aston Zhang, Zack C. Lipton, Mu Li, Alex J. Smola. Dive Into Deep Learning[J]. arXiv preprint arXiv:2106.11342, 2021.文章来源地址https://www.toymoban.com/news/detail-478877.html

到了这里,关于深入理解深度学习——注意力机制(Attention Mechanism):位置编码(Positional Encoding)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深入理解Transformer,兼谈MHSA(多头自注意力)、Cross-Attention(交叉注意力)、LayerNorm、FFN、位置编码

    Transformer其实不是完全的Self-Attention(SA,自注意力)结构,还带有Cross-Attention(CA,交叉注意力)、残差连接、LayerNorm、类似1维卷积的Position-wise Feed-Forward Networks(FFN)、MLP和Positional Encoding(位置编码)等 本文涵盖Transformer所采用的MHSA(多头自注意力)、LayerNorm、FFN、位置编

    2024年04月12日
    浏览(65)
  • 深入理解深度学习——Transformer:解码器(Decoder)的多头注意力层(Multi-headAttention)

    分类目录:《深入理解深度学习》总目录 相关文章: ·注意力机制(Attention Mechanism):基础知识 ·注意力机制(Attention Mechanism):注意力汇聚与Nadaraya-Watson核回归 ·注意力机制(Attention Mechanism):注意力评分函数(Attention Scoring Function) ·注意力机制(Attention Mechanism):

    2024年02月09日
    浏览(41)
  • NLP 学习笔记十-simple RNN+attention(注意力机制)

    感兴趣的伙伴,看这个笔记,最好从头开始看哈,而且我的笔记,其实不面向零基础,最好有过一些实践经历的来看最好。 紧接上一回,我们谈到seq2seq模型解决用于机器翻译的问题。其中seq其实是采用lstm作为自己的基础记忆网络实现的,当然也可以用RNN实现实现seq2seq模型。

    2024年02月09日
    浏览(61)
  • 【深度学习注意力机制系列】—— ECANet注意力机制(附pytorch实现)

    ECANet(Efficient Channel Attention Network) 是一种 用于图像处理任务的神经网络架构,它在保持高效性的同时,有效地捕捉图像中的通道间关系,从而提升了特征表示的能力 。ECANet通过引入通道注意力机制,以及在卷积层中嵌入该机制,取得了优越的性能。本文将对ECANet的核心思

    2024年02月13日
    浏览(49)
  • 【深度学习注意力机制系列】—— SCSE注意力机制(附pytorch实现)

    SCSE注意力模块 (来自论文[1803.02579] Concurrent Spatial and Channel Squeeze Excitation in Fully Convolutional Networks (arxiv.org))。其对SE注意力模块进行了改进,提出了 cSE、sSE、scSE 三个模块变体,这些模块可以 增强有意义的特征,抑制无用特征 。今天我们就分别讲解一下这三个注意力模块。

    2024年02月13日
    浏览(56)
  • 【深度学习注意力机制系列】—— CBAM注意力机制(附pytorch实现)

    CBAM(Convolutional Block Attention Module) 是一种用于增强卷积神经网络(CNN)性能的注意力机制模块。它由Sanghyun Woo等人在2018年的论文[1807.06521] CBAM: Convolutional Block Attention Module (arxiv.org)中提出。CBAM的主要目标是 通过在CNN中引入通道注意力和空间注意力 来提高模型的感知能力,从

    2024年02月13日
    浏览(40)
  • 【深度学习注意力机制系列】—— SKNet注意力机制(附pytorch实现)

    SKNet(Selective Kernel Network) 是一种用于图像分类和目标检测任务的深度神经网络架构,其核心创新是 引入了选择性的多尺度卷积核(Selective Kernel)以及一种新颖的注意力机制 ,从而在不增加网络复杂性的情况下提升了特征提取的能力。SKNet的设计旨在 解决多尺度信息融合的

    2024年02月13日
    浏览(52)
  • 【深度学习注意力机制系列】—— SENet注意力机制(附pytorch实现)

    深度学习中的注意力机制(Attention Mechanism)是一种模仿人类视觉和认知系统的方法,它允许神经网络在处理输入数据时集中注意力于相关的部分。通过引入注意力机制,神经网络能够自动地学习并选择性地关注输入中的重要信息,提高模型的性能和泛化能力。 卷积神经网络

    2024年02月14日
    浏览(40)
  • 【深度学习】注意力机制

    注意力机制(Attention Mechanism)是一种在计算机科学和机器学习中常用的技术,可以使模型在处理序列数据时更加准确和有效。在传统的神经网络中,每个神经元的输出只依赖于前一层的所有神经元的输出,而在注意力机制中,每个神经元的输出不仅仅取决于前一层的所有神经

    2024年02月02日
    浏览(41)
  • 注意力机制-CA注意力-Coordinate attention

    CA(Coordinate attention for efficient mobile network design)发表在CVPR2021,帮助轻量级网络涨点、即插即用。 CA注意力机制的优势: 1、不仅考虑了通道信息,还考虑了方向相关的位置信息。 2、足够的灵活和轻量,能够简单的插入到轻量级网络的核心模块中。 提出不足 1、SE注意力中只

    2024年02月02日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包