学习Transformer前言(Self Attention Multi head self attention)

这篇具有很好参考价值的文章主要介绍了学习Transformer前言(Self Attention Multi head self attention)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

一直在做项目,也比较懒没有挤出时间去学习新的东西,感觉停滞很久了,好长一段时间都没有新的知识输入,早就需要就去学习transformer了,因此先来学习注意力机制,本文为个人的一个笔记总结。主要是基于李宏毅老师的一个课程视频笔记,论文原文,加上B站UP主的霹雳吧啦Wz的视频。

二、理论

2.1模型的输入类别

self-attention和CNN不同,这是另外一种网络结构,与CNN不同,网络输入不再是一个向量,而是一个向量序列,而且输入的向量序列长度是不定的。举例,在文字处理时,我们需要输入一个句子判断它的每一个单词的词性,如果我们输入this is a cat, 可以使用onehot向量来表示每一个单词,可以把这个onehot向量维度设为超大的一个向量,这样onehot编码就能表示所有的向量了,但是这样编码是会带来很大的问题,因为这样编码相当于假设所有的词汇之间是没有任何关系的,这显然是不合理的,因为dog和cat和明显都是动物,它们之间是有关联的。

学习Transformer前言(Self Attention Multi head self attention)

为了解决上面的问题,研究者提出word embedding的方法,这种编码方式就将单词之间的联系考虑了进去。

学习Transformer前言(Self Attention Multi head self attention)

其他可能需要多个向量作为向量序列作为输入的情况,例如:语音的输入编码,分子结构,图网络等。

2.2模型的输出类别

有三种情况,第一种每一个向量都有一个对应一个输出,输入和输出数量一样多,也称为sequence labeling,第二种整个输入向量只有一个输出,最后一种就是输出个数是不定的。

学习Transformer前言(Self Attention Multi head self attention)

2.3如何更好的考虑到模型输入?

本文基于第一种输出,例如假如我们还是按照以前的做法来进行输出,每一个向量分别输入到全连接层得到对应的结果。看似也能解决问题,但是这其实会存在一些问题,例如如果我们是在做一个词性判断的任务,输入一个句子, I saw a saw,很显然这两个位置的词的词性显然不相同,如果还是采用上面的方式来输入网络,理论上两个saw得到的结果是一样的,因此直接分别输入全连接层得到结果是不合理的,如何改进?很容易就想到我们应该考虑到上下文的关系。也就是在输入每一个向量时候,考虑到其他的向量,这样就包含了上下文的关系

学习Transformer前言(Self Attention Multi head self attention)

那么如何考虑上下文的关系?

学习Transformer前言(Self Attention Multi head self attention)

有一种做法就是考虑前后相邻的一个窗口的信息,但是这也存在问题,如何设置这个窗口的长度,有人可能会想提出直接设置窗口长度为最大的向量序列的长度,这会导致全连接层的参数巨大,而且还需要我们去统计向量序列的最长长度。因此这不是很好的方法,因此我们引入的了self-attention

2.4.self-attention的提出

在这里我们引入了self-attention的模块来处理每一个向量,每一个经过self-attention模块的向量都包含了整个向量序列的信息。而且self-attation和卷积一样可以重复使用,可以在经过self-attention处理再继续添加self-attention模块。事实上,虽然self-attention在很多paper已经提出,但提到self-attention往往想到的是transformer,而transformer第一次提出是在Attention is all you need这篇paper。

学习Transformer前言(Self Attention Multi head self attention)

2.5.self-attention模块

具体来看经过self-attention处理的向量都会考虑到之前输入的整个向量序列的信息。举例来看也就是b1是由a1, a2, a3,a4经过某种操作得到的。

学习Transformer前言(Self Attention Multi head self attention)

那么这种操作是什么?

有很多种操作,本文主要是dot-product,前面提到我们需要考虑到整个向量序列的信息,也就是需要知道每两个向量之间的联系,我们可以用α来衡量这两个向量之间的关系。因此dot-product就是输入两个需要计算关系的向量,得到他们的关系。

那么如何操作?

在dot-product中,我们对于输入的两个向量分别乘以𝑊𝑞和𝑊𝑘分别得到q和k,再将q和k做点积得到α(原论文会除以根号d,d为向量的长度,除以根号d的原因主要是为了防止点乘后数值过大,导致softmax处理后梯度很小)

学习Transformer前言(Self Attention Multi head self attention)

则在整个向量序列计算时就会有如下表:

1

2

学习Transformer前言(Self Attention Multi head self attention)

学习Transformer前言(Self Attention Multi head self attention)

分析:其实可以看到对于一整个self-attention的计算中b1的计算,我们需要先分别计算a1, a2, a3, a4与a1的attention scores也即α,然后经过softmax处理来归一化(softmax处理不是必须的,也可以使用其他的方法),然后我们在分别得到v1, v4,这样最终得到的b1相当于将各个部分乘以权重得到的值。

以上为理论的做法,只计算了单独一个b1,下面主要考虑加入矩阵的思想来得到所有的经过self-attention的值

2.6.self-attention的矩阵表示

1

2

学习Transformer前言(Self Attention Multi head self attention)

学习Transformer前言(Self Attention Multi head self attention)

3

4

学习Transformer前言(Self Attention Multi head self attention)

学习Transformer前言(Self Attention Multi head self attention)

分析:

这样看来self-attention其实就是一系列的矩阵乘法,看似复杂,其实真正未知的只有𝑊𝑞 和𝑊𝑘以及𝑊𝑣,这三个矩阵参数需要学习。

2.7多头注意力Multi-head-attention

本质上在self-attention中,我们使用的是单个q,k去寻找两个向量之间的关系,但是当关系有多种时,我们应该去使用多个q,和多个K来计算他们的多个相关性。

例如:当计算两个attention时有,有如下步骤

1

2

学习Transformer前言(Self Attention Multi head self attention)

学习Transformer前言(Self Attention Multi head self attention)

3

4

学习Transformer前言(Self Attention Multi head self attention)

三、self-attention与CNN以及RNN的对比

3.1.self attention 与 CNN

由于self-attention考虑的是一整个图像的讯息,而CNN考虑到的是感受野里面的讯息,所以我们可以说CNN是简化版的self-attention,self-attention是更复杂的CNN

学习Transformer前言(Self Attention Multi head self attention)

由于CNN是更简单的模型,因此CNN相比self attention更适合在小的数据量上进行训练,而self attention 更适合在大的数据量上训练,下面这张表显示了在不同的数据量卷积模型和注意力机制的模型效果。在数据量更大的时候,看到self attention 的效果是好于CNN的。

学习Transformer前言(Self Attention Multi head self attention)

3.2.self attention 与RNN

与RNN相比,self attention有两个明显的优势,一个就是self-attention可以平行化处理,而RNN必须等前面的处理完才能继续处理。另外一个优势就是RNN更难考虑真个向量序列的信息,不同的向量之间存在远近的关系,而self attention更容易考虑整个向量序列的向量之间的关系,因为不同的向量之间是“等距的”。

学习Transformer前言(Self Attention Multi head self attention)

四、学习视频与论文地址

李宏毅老师视频地址:第四节 2021 - 自注意力机制(Self-attention)(上)_哔哩哔哩_bilibili

论文原文地址:Attention is all you need

B站up主视频地址:Transformer中Self-Attention以及Multi-Head Attention详解_哔哩哔哩_bilibili文章来源地址https://www.toymoban.com/news/detail-433875.html

到了这里,关于学习Transformer前言(Self Attention Multi head self attention)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • transformer模型,文本生成任务。 self-attention结构

    transformer模型,文本生成任务。 self-attention结构

    大家好,好久不见,终于又有机会来学习深度学习了, 这次我们通过全球人工智能大赛算法挑战赛的赛道一来学习。 2023全球人工智能技术创新大赛 - 算法挑战赛 赛道一的任务是  通过医疗图像的文字描述来生成医生的诊断描述。 这是一个典型的文本生成任务, 因此transf

    2023年04月09日
    浏览(12)
  • NLP入门:word2vec & self-attention & transformer & diffusion的技术演变

    NLP入门:word2vec & self-attention & transformer & diffusion的技术演变

    这一段时间大模型的相关进展如火如荼,吸引了很多人的目光;本文从nlp领域入门的角度来总结相关的技术路线演变路线。 1、introduction 自然语言处理(Natural Language Processing),简称NLP,是通过统计学、数学模型、机器学习等相关技术研究人类语言的特征,对其进行数学的表

    2024年02月11日
    浏览(13)
  • 深度学习 - 51.推荐场景下的 Attention And Multi-Head Attention 简单实现 By Keras

    深度学习 - 51.推荐场景下的 Attention And Multi-Head Attention 简单实现 By Keras

    目录 一.引言 二.计算流程 1.Attention 结构 2.Multi-Head Attention 结构 三.计算实现 1.Item、序列样本生成 2.OwnAttention Layer 实现 2.1 init 初始化 2.2 build 参数构建 2.3 call 逻辑调用 3.OwnAttention Layer 测试 四.总结 Attention And Multi-Head Attention 一文中我们简单介绍了 Attention 与 Multi-Head Attenti

    2024年02月07日
    浏览(14)
  • Self-Attention && Cross-Attention

    Self-Attention && Cross-Attention

    transformer的细节到底是怎么样的?Transformer 连环18问! 4.1  从功能角度,Transformer Encoder的核心作用是提取特征,也有使用Transformer Decoder来提取特征。例如,一个人学习跳舞,Encoder是看别人是如何跳舞的,Decoder是将学习到的经验和记忆,展现出来 4.2  从结构角度,如图5所示

    2024年02月16日
    浏览(12)
  • 李宏毅-机器学习hw4-self-attention结构-辨别600个speaker的身份

    李宏毅-机器学习hw4-self-attention结构-辨别600个speaker的身份

    一、慢慢分析+学习pytorch中的各个模块的参数含义、使用方法、功能: 1.encoder编码器中的nhead参数: self.encoder_layer = nn.TransformerEncoderLayer( d_model=d_model, dim_feedforward=256, nhead=2) 所以说,这个nhead的意思,就是有window窗口的大小,也就是一个b由几个a得到 2.tensor.permute改变维度的用

    2024年02月09日
    浏览(16)
  • 深入理解深度学习——注意力机制(Attention Mechanism):带掩码的多头注意力(Masked Multi-head Attention)

    深入理解深度学习——注意力机制(Attention Mechanism):带掩码的多头注意力(Masked Multi-head Attention)

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

    2024年02月09日
    浏览(11)
  • Self-Attention机制的计算详解

    Self-Attention机制的计算详解

    ​ Attention注意力的核心目标就是从众多信息中选择出对当前任务目标更关键的信息,将注意力放在上面。 ​ 本质思想就是【从大量信息中】【有选择的筛选出】【少量重要信息】并【聚焦到这些重要信息上】,【忽略大多不重要的信息】。聚焦的过程体现在【权重系数】的

    2024年02月10日
    浏览(13)
  • 层层剖析,让你彻底搞懂Self-Attention、MultiHead-Attention和Masked-Attention的机制和原理

    层层剖析,让你彻底搞懂Self-Attention、MultiHead-Attention和Masked-Attention的机制和原理

    本文基于李宏毅老师对 Self-Attention 的讲解,进行理解和补充,并结合Pytorch代码,最终目的是使得自己和各位读者更好的理解 Self-Attention 李宏毅Self-Attention链接: https://www.youtube.com/watch?v=hYdO9CscNes PPT链接见视频下方 通过本文的阅读,你可以获得以下知识: 什么是Self-Attention,为

    2024年02月02日
    浏览(12)
  • self-attention为什么要除以根号d_k

    self-attention的公式为 a t t e n t i o n ( Q , K , V ) = S o f t m a x ( Q K d k ) V attention(Q,K,V)=Softmax( frac{QK}{sqrt{d_{k}}})V a tt e n t i o n ( Q , K , V ) = S o f t ma x ( d k ​ ​ Q K ​ ) V 个人理解,除以 d k sqrt{d_{k}} d k ​ ​ 的原因有两点: d k d_{k} d k ​ 是词向量/隐藏层的维度 1、首先要除以一个数

    2023年04月10日
    浏览(8)
  • transfomer中Multi-Head Attention的源码实现

    transfomer中Multi-Head Attention的源码实现

    本专栏主要是深度学习/自动驾驶相关的源码实现,获取全套代码请参考 Multi-Head Attention是一种注意力机制,是transfomer的核心机制,就是图中黄色框内的部分. Multi-Head Attention的原理是通过将模型分为多个头,形成多个子空间,让模型关注不同方面的信息。每个头独立进行注意力运

    2024年01月17日
    浏览(7)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包