首页 > 其他分享 >李宏毅《机器学习》总结 - Self-attention

李宏毅《机器学习》总结 - Self-attention

时间:2024-01-27 16:56:43浏览次数:25  
标签:输出 RNN 李宏毅 Self attention alpha self 向量

解决的问题:输入 \(n\) 个向量,输出相同个数的向量。(如,输入一个句子,输出句子中每个词的词性。每个单词转化成向量可以用 one-hot vector、word embedding 方法等)

一个比较初级的想法:将每个向量都连上去一个 FC(fully connected network),但是这样有个问题是,如果遇到一个句子中有两个相同的单词,在两个 FC 中得出的结果都应该相同,但是实际上可能是不同的。

这启示我们,可以在 FC 之前加一层网络,这个网络考虑到了整个句子,这就是 self-attention
image

内部结构

可以考虑当前向量和其余向量的相似程度,如果相似程度高,那么这个向量对应的输出中对应的向量的权重就大
如何衡量相似程度?用余弦相似度,即 dot-product
具体公式如下:
image
先由某个向量通过运算(\(W^q, W^k, W^v\) 为矩阵,需通过学习得出)求出对应的 query、key 和 v,将当前向量的 query 和其余向量的 key 做点乘(特殊的,自己的 query 和自己的 key 也要做),得到的 \(\alpha\) 就是原始的相似度,再通过 softmax 归一化就得到了权重 \(\alpha'\)
最后,将对应的权重和系数 \(v\) 相乘再相加,就得到了当前向量对应的输出
image

总的流程就是,考虑当前输入的向量 \(a^i\),由 3 个矩阵求出所有向量对应的 q、k、v,再用当前向量的 q 去点乘其它向量的 k,得到原始的 \(\alpha^{i,x}\),softmax 之后得到 \(\alpha'\),再用 \(\alpha^{i,x}\) 和 \(v^x\) 相乘相加得到输出

用矩阵的形式写出:
image

image

还有一种扩展:multi-head self-attention,就是每个向量产生出两个 q、k、v,第一个 q 做运算的时候都与第一个的 k 做运算,其余同理,得到第一个输出。同理得到第二个输出,在将这两个输出线性组合得到最终的输出。
image
image

一些相关的成果

  1. 可以在加上一个和位置有关的参数:Positional Encoding
  2. 发现 dot-product 做的事情和 CNN 中 filter 对每一个 receptive field 做的事相似,这两者有什么关系?事实上,CNN 是 self-attention 的特殊版,因为 CNN 是对每一个感受野做运算,而 self-attention 实际上是拿每一个序列中的向量和序列中的所有向量做运算,相当于把感受野设置为整个序列。在数据量相对较小的时候,CNN 效果好,数据量极大的时候,self-attention 较好
  3. self-attention 和 RNN 的关系?比 RNN 更强。首先,RNN 是串行的,无法并行;其次,RNN(双向 RNN 也是)对于头和尾两个元素的相关性没有那么高,但是 self-attention 没有这个问题
  4. 由于需要更新的是整个矩阵,运算量较大,因此产生了许多其它的变形(如 transformer)。

标签:输出,RNN,李宏毅,Self,attention,alpha,self,向量
From: https://www.cnblogs.com/SkyRainWind/p/17991582

相关文章

  • 李宏毅《机器学习》总结 - CNN
    使用场景:对图片进行分类首先,将图片变成向量。例如,对于一个彩色的\(N\timesN\)(这个N指的是像素个数)图片,其对应着一个\(N\timesN\times3\)的矩阵(其中3是图片的channel,在彩色图片中,每个像素由RGB构成,因此channel为3)一个初始的想法将这个矩阵拉长,变成一个向量,然后......
  • 初中英语优秀范文100篇-067I'm Proud of Myself-我为自己感到骄傲
    PDF格式公众号回复关键字:SHCZFW067记忆树1I'mproudofmyselfbecauseofawonderfulexperience.翻译我很骄傲,因为我有一段美好的经历。简化记忆骄傲句子结构"I"是主语,表示句子的行动者。"amproudof"是谓语,表示主语的状态或动作。"myself"是宾语,表示动作......
  • static 和 self 区别
    1,在PHP中,我们可以使用newstatic()结合私有构造函数和一个静态方法来实现单例模式。以下是一个简单的例子classSingleton{//私有化构造函数,防止外部直接实例化privatefunction__construct(){}//静态变量用于存储单一实例privatestatic$instan......
  • 李宏毅《机器学习》总结 - 类神经网络
    核心问题:CriticalPoint在GradientDescent的时候,如果遇到梯度为0的情况,导致无法继续optimization,这样的点叫做CritcalPoint如果最后优化的结果不好,则出现这样的点的原因有2个:一个是到localminima了,另一个是在驻点了(也叫鞍点,SaddlePoint)。现在主要关注的是如何判......
  • tensorflow-gpu error:CUDNN_STATUS_ALLOC_FAILED或者self._traceback = tf_stack.extr
    tensorflow-gpuerror:CUDNN_STATUS_ALLOC_FAILED或者self._traceback=tf_stack.extract_stack() 在有些情况下,因为深度学习框架版本更新,细节的变动会使我们的代码最初对应修改:报错信息(出现其中一种):1.Couldnotcreatecudnnhandle:CUDNN_STATUS_ALLOC_FAILED2.self._trac......
  • 《DREEAM Guiding Attention with Evidence for Improving Document-Level Relation E
    代码 原文地址 预备知识:1.什么是K-L散度(Kullback-LeiblerDivergence)?K-L散度,是一种量化两种概率分布P和Q之间差异的方式,又叫相对熵。在概率学和统计学上,我们经常会使用一种更简单的、近似的分布来替代观察数据或太复杂的分布。K-L散度能帮助我们度量使用一个分布来近似另......
  • 基于自注意力机制的轻量级人体姿态估计(Lightweight Human Pose Estimation Based on
    写在前面本文是一篇于2023年3月21日发表在2023InternationalConferenceonBigData,EnvironmentalIndustryandMaterialsScience(ICBDEIMS2023)的一篇会议论文。论文主要聚焦于解决单签人体姿态估计网络模型中普遍存在的参数多、计算复杂度高、检测时间长的问题,文章采用......
  • Broodstock breeding behaviour recognition based on Resnet50-LSTM with CBAM atten
    一区top,2022年ComputersandElectronicsinAgriculture分类题目:“基于CBAM注意机制Resnet50-LSTM的亲鱼繁殖行为识别”(Du等,2022,pp.-)(pdf)“BroodstockbreedingbehaviourrecognitionbasedonResnet50-LSTMwithCBAMattentionmechanism”(Du等,2022......
  • Unity报错记录->ArgumentNullException: Value cannot be null. Parameter name: _uni
    问题描述项目报错ArgumentNullException:Valuecannotbenull.Parametername:_unity_self不会影响项目正常运行,但是在DeBug模式下会一直卡住,非常恶心。解决方法删除项目中的Library文件夹,重新加载项目......
  • [论文于都] SelfReg: Self-supervised Contrastive Regularization for Domain Genera
    SelfReg:Self-supervisedContrastiveRegularizationforDomainGeneralization采用了自监督对比学习的方法,提出了IndividualizedIn-batchDissimilarityLoss和HeterogeneousIn-batchDissimilarityLoss。IndividualizedIn-batchDissimilarityLoss关注于在训练过程......