首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Soft Attention Model

Soft Attention Model

作者头像
AngelNH
发布于 2020-08-02 07:21:12
发布于 2020-08-02 07:21:12
1.6K0
举报
文章被收录于专栏:AngelNIAngelNI

Attention Model

最近几年,注意力模型(Attention Model) 被广泛的使用在自然语言处理图像识别语音识别等各种不同类型的深度学习任务中,是深度学习最值得关注和了解的核心技术之一。

Attention Model其实是模拟人脑的注意力模型。用一个简单的例子来解释,就是当我们在欣赏一幅画时,虽然我们可以看到整幅画的全貌,但是在我们深入仔细地观察时,其实眼睛聚焦的就只有很小的一块,这个时候人的大脑主要关注在这一小块的团上,换句话说,人脑在整幅画的关注并不是均衡的,而是有一定的权重区分,这就是深度学习里的Attention Model的核心思想。

Soft Attention Model

Design Attention

step 1: 设计一个打分函数fff,针对每个hih_{i}hi​,计算出一个score sis_{i}si​ 。而sis_{i}si​打分的依据,就是**hih_{i}hi​与attention所关注的对象(其实就是一个向量)的相关程度**,越相关,所得sis_{i}si​值越大。

**step 2:**对所得到的k个score si(i=1,2,...,k)s_{i}(i=1,2,...,k)si​(i=1,2,...,k),通过一个softmax函数,得到最后的权重αi\alpha_{i}αi​,即:

αi=softmax(si)\alpha_{i}=softmax(s_{i}) αi​=softmax(si​)

打分函数fff呢,在论文”Dynamic Attention Deep Model for Article Recommendation by Learning Human Editors’Demonstration”中的Attention Mechanism章节给了较为全面的概括。大体分为三类:

1.Location-based Attention

2.General Attention

3.Concatenation-based Attention

其中General Attention并不常见,因此在这里不做介绍。接下来详细介绍下Location-based Attention和Concatenation-based Attention的设计。

Location-based Attention

Location-based的意思就是,这里的attention没有其他额外所关注的对象,即attention的向量就是hih_{i}hi​本身,因而fff的设计如下:

si=f(hi)=Attention(WThi+b)s_{i} = f(h_{i}) = Attention(W^Th_{i}+b) si​=f(hi​)=Attention(WThi​+b)

其种W∈Rd,b∈R,si∈RW∈R^d, b∈R, s_{i}∈RW∈Rd,b∈R,si​∈R,这里的激活函数activation,常见的有三种:1)tahn,2)relu,3)y=x(即没有激活函数)

Concatenation-based Attention

Concatenation-based意思就是,这里的attention是指要关注其他对象。

我们用hth_{t}ht​表示attention所关注的对象的特征(具体怎么得到ht∈Rtdh_{t}∈R^d_{t}ht​∈Rtd​,就不是attention所干的事情,需要其他特征提取的网络来获取hth_{t}ht​,比如hth_{t}ht​可以是用cnn提取得到的图片信息,用rnn提取得到的句子信息等等)。

需要注意的是这里的hth_{t}ht​可以是恒定不变的一个向量(比如整个句子的向量表达),也可以是随着时序不断变化的向量(比如句子中的单词的向量表达,不同时刻,面对的是句子中不同的单词),具体问题,具体设计

而fff就是被设计出来衡量hih_{i}hi​和hth_{t}ht​之间相关性的函数。一般是这么设计的:

si=f(hi,ht)=vTActivation(W1hi+W2ht+b)s_{i}=f(h_{i},h_{t})=v^TActivation(W_{1}h_{i}+W_{2}h_{t}+b) si​=f(hi​,ht​)=vTActivation(W1​hi​+W2​ht​+b)

这里$W_{1}∈R{d∗d},W_{2}∈R{d∗d_{t}},b∈Rd,v∈Rd,s_{i}∈R $ ,一般情况下dt=dd_{t}=ddt​=d

函数的描述的意思就是,希望通过W1,W2W_{1},W_{2}W1​,W2​的对齐操作,使得hih_ihi​和hth_{t}ht​的特征能够对应上。然后再通过vvv计算score。

普通模式

用数学语言来表达这个思想就是:用X=[x1,x2,x3,..,xn]X = [x_{1},x_{2},x_{3},..,x_{n}]X=[x1​,x2​,x3​,..,xn​] 表示n个输入的信息,为了节省计算资源,不需要让神经网络处理这n个输入的信息,而是只需要从XXX中选择一些与任务相关的信息进行计算。软性注意力机制(Soft Attention)是指在选择信息的时候,不是从n个信息中只选择一个,而是计算n个输入信息的加权平均,在输入到神经网络中计算。而相对的,硬性注意力机制(Hard Attention)就是指选择输入序列某一个位置上的信息,比如选择一个信息或者概率最高的信息。但一般还是用软性注意力机制来处理神经网络的问题。

注意力值得计算可以分为两步:(1)在所有输入的信息上计算注意力分布;(2)根据注意力分布来计算输入信息的加权平均。

注意力分布

给定这样的一个场景:把输入信息向量XXX看做一个信息存储器,现在给定一个查询向量q,用来查找并选择XXX中的某些信息,那么就需要知道被选择信息的索引位置。采用“软性”选择机制,不是从存储的多个信息中只跳出一条信息来,而是雨露均沾,从所用的信息中都抽取一些,只不过.最相关的信息抽取的就多一些。

于是,定义一个注意力变量z∈[1,n]z\in[1,n]z∈[1,n]来表示被选择信息的索引位置,即z = i来表示选择里第i个输入信息,然后计算在给定q和X情况下,选择第i个输入信息的概率αi\alpha_{i}αi​:

αi=p(z=i∣X,q)\alpha_{i} = p(z = i | X,q) αi​=p(z=i∣X,q)

=softmax(s(xi,q))= softmax(s(x_{i},q)) =softmax(s(xi​,q))

=exp(s(xi,q))Σj=1n(s(xj,q))= \dfrac{exp(s(x_{i},q))}{\Sigma_{j=1}^{n}(s(x_{j},q))} =Σj=1n​(s(xj​,q))exp(s(xi​,q))​

其中αi]\alpha_{i]}αi]​构成的概率向量就称为注意力分布。s(xi,q)s(x_{i,q})s(xi,q​)是注意力打分函数,有以下几种形式:

加性模型 s(xi,q)=vT tanh(Wxi+Uq)加性模型\;\;\ s(x_{i},q) = v^{T}\;tanh(Wx_{i}+Uq) 加性模型 s(xi​,q)=vTtanh(Wxi​+Uq)

点积模型 s(xi,q)=xiTq点积模型\ \ s(x_{i},q) = x_{i}^Tq 点积模型 s(xi​,q)=xiT​q

缩放点积模型 s(xi,q)=xiTqd缩放点积模型\ \ s(x_{i},q) = \dfrac{x_{i}^Tq}{\sqrt{d}} 缩放点积模型 s(xi​,q)=d​xiT​q​

双线性模型 s(xi,q)=xiTWq双线性模型\ \ \ s(x_{i},q) = x_{i}^TWq 双线性模型 s(xi​,q)=xiT​Wq

其中W,U和v是可学习的网络参数,d是输入信息的维度。

加权平均

注意力分布αi\alpha_{i}αi​表示在给定查询q时,输入信息向量X中第i个信息与查询q的相关程度。采用“软性”信息选择机制给出查询所得的结果,就是采用加权平均的方式对输入信息进行汇总,得到Attention的值:

Attention(X,q)=Σi=1n αixiAttention(X,q) = \Sigma_{i=1}^n\;\alpha_{i}x_{i} Attention(X,q)=Σi=1n​αi​xi​

Attention值得计算过程如下图:Attention值得计算过程如下图:Attention值得计算过程如下图:

键值对注意力模式

键值对注意力模式,就是用键值对来表示输入信息,那么N个输入信息就可以表示为(K,V)=[(k1,v1),(k2,v2),(k3,v3),...,(kN,vN)](K,V)=[(k_{1},v_{1}),(k_{2},v{2}),(k_{3},v{3}),...,(k_{N},v_{N})](K,V)=[(k1​,v1​),(k2​,v2),(k3​,v3),...,(kN​,vN​)],其中键用来计算注意力分布αi\alpha_{i}αi​,值用来计算聚合信息。

那么就可以将注意力机制看做是一种软寻址操作:把输入信息X看做是存储器中存储的内容,元素由地址Key(键)和值Value组成,当前有个Key=Query的查询,目标是取出存储器中对应的Value值,即Attention值。而在软寻址中,并非需要硬性满足Key=Query的条件来取出存储信息,而是通过计算Query与存储器内元素的地址Key的相似度来决定,从对应的元素Value中取出多少内容。每个地址Key对应的Value值都会被抽取内容出来,然后求和,这就相当于由Query与Key的相似性来计算每个Value值的权重,然后对Value值进行加权求和。加权求和得到最终的Value值,也就是Attention值。

第一步:根据Query和Key计算二者的相似度。可以利用上面列出的方法来计算注意力得分sis_{i}si​

Si=F(Q,ki)S_{i} = F(Q,k_{i}) Si​=F(Q,ki​)

第二步:用softmax函数对注意力得分进行数值转换。一方面进行归一化,得到虽有权重系数之和为1的概率分布,另一方面可以用softmax函数的特性突出重要元素的权重。

αi=softmax exp(si)Σj=1N(exp(sj))\alpha_{i} = softmax\; \dfrac{exp(s_{i})}{\Sigma_{j=1}^N(exp(s_{j}))} αi​=softmaxΣj=1N​(exp(sj​))exp(si​)​

第三步:根据权重系数对Value进行加权求和:

Attention((K,V),Q)=Σi=1N(αivi)Attention((K,V),Q) = \Sigma_{i=1}^N(\alpha_{i}v_{i}) Attention((K,V),Q)=Σi=1N​(αi​vi​)

如图所示:

Self-Attention Model

在软注意力Encoder-Decoder模型中,注意力机制发生在编码器和解码器之间,也就是说发生在输入和输出之间,而自注意力模型中的自注意力机制则发生在输入结点的内部或者输出结点的内部,可以抽取到同一个结点相邻结点之间的联系,更容易捕获结点间相互依赖的特征。

前面说了自注意力模型可以建立结点内部依赖关系,其实通过全连接神经网络也可以做到,但是问题在于全连接网络的连接边数是固定不变的,因而无法处理长度可变的序列。而自注意力模型可以动态生成不同连接的权重,那么生成多少个权重,权重的大小是多少,都是可变的,当输入更长的序列时,只需要生成更多连接边即可。如下图,虚线连接边是动态变化的。

用数学公式来表达自注意力机制:假设一个神经层中的输入序列为X=[x1,x2,...,xN]X=[x_{1},x_{2},...,x_{N}]X=[x1​,x2​,...,xN​],输出序列为同等长度的H=[h1,h2,...,hN]H=[h_{1}, h_{2}, ..., h_{N}]H=[h1​,h2​,...,hN​],首先通过线性变换得到三组向量序列:

Q=WQX∈RD3∗NQ = W_{Q}X \in R^{D_{3}*N} Q=WQ​X∈RD3​∗N

K=WKX∈RD3∗NK = W_{K}X \in R^{D_{3}*N} K=WK​X∈RD3​∗N

V=WVX∈RD3∗NV = W_{V}X \in R^{D_{3}*N} V=WV​X∈RD3​∗N

其中Q, K, V 分别为查询向量序列,键向量序列和值向量序列, WQ,WK,WVW_{Q}, W_{K}, W_{V}WQ​,WK​,WV​分别是可以学习的参数矩阵。

于是输出向量hi这样计算:

hi=Attention((K,V),qi)h_{i} = Attention((K,V),q_{i}) hi​=Attention((K,V),qi​)

=Σj=1N(αijvj)=\Sigma_{j=1}^N(\alpha_{ij}v_{j}) =Σj=1N​(αij​vj​)

=Σj=1N softmax(s(kj,qi))vj= \Sigma_{j=1}^N\ softmax(s(k_{j},q_{i}))v_{j} =Σj=1N​ softmax(s(kj​,qi​))vj​

其中 i, j ∈ [1, N]为输出和输入向量序列的位置,连接权重 αij由注意力机制动态生成。

参考资料:

[1] https://www.cnblogs.com/Luv-GEM/p/10712256.html

[2] https://blog.csdn.net/bvl10101111/article/details/78470716

[3] 《Attention is all need》

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-07-30|,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
神经网络 Attention
Attention机制:又称为注意力机制,顾名思义,是一种能让模型对重要信息重点关注并充分学习吸收的技术.通俗的讲就是把注意力集中放在重要的点上,而忽略其他不重要的因素。其中重要程度的判断取决于应用场景,根据应用场景的不同,Attention分为空间注意力和时间注意力,前者用于图像处理,后者用于自然语言处理.
为为为什么
2022/08/06
8490
神经网络 Attention
AI/机器学习常用公式的LaTex代码汇总
在写AI/机器学习相关的论文或者博客的时候经常需要用到LaTex的公式,然而作为资深“伸手党”的我在网上搜索的时候,居然没有找到相关现成资源@-@
blmoistawinde
2020/05/26
3.6K0
我还不知道Attention有哪些-公式代码都带你搞定
attention由来已久,让它名声大噪的还是BERT,可以说NLP中,BERT之后,再无RNN和CNN。那么attention到底有哪些呢?hard attention、soft attention、global attention、local attention、self-attention, 啊,这些都是啥?相似度计算的dot、general、concat都是怎么计算的?
百川AI
2021/12/31
1.5K1
我还不知道Attention有哪些-公式代码都带你搞定
RWKV论文燃爆!将RNN崛起进行到底!可扩百亿级参数,与Transformer表现相当!
这股RNN崛起的“清流”,由民间开源组织发起,号称是第一个可扩展到百亿级参数的非transformer架构!
zenRRan
2023/08/22
7630
RWKV论文燃爆!将RNN崛起进行到底!可扩百亿级参数,与Transformer表现相当!
NLP教程(6) - 神经机器翻译、seq2seq与注意力机制
教程地址:http://www.showmeai.tech/tutorials/36
ShowMeAI
2022/05/10
6480
NLP教程(6) - 神经机器翻译、seq2seq与注意力机制
seq2seq与Attention机制
seq2seq模型是在2014年,是由Google Brain团队和Yoshua Bengio 两个团队各自独立的提出来。
Lansonli
2021/10/09
1K0
深度学习进阶篇-预训练模型[2]:Transformer-XL、Longformer、GPT原理、模型结构、应用场景、改进技巧等详细讲解
在正式讨论 Transformer-XL 之前,我们先来看看经典的 Transformer(后文称 Vanilla Transformer)是如何处理数据和训练评估模型的,如图 1 所示。
汀丶人工智能
2023/10/11
1.2K0
深度学习进阶篇-预训练模型[2]:Transformer-XL、Longformer、GPT原理、模型结构、应用场景、改进技巧等详细讲解
XLNet详解
2018 年,谷歌发布了基于双向 Transformer 的大规模预训练语言模型BERT,刷新了 11 项 NLP 任务的最优性能记录,为 NLP 领域带来了极大的惊喜。很快,BERT 就在圈内普及开来,也陆续出现了很多与它相关的新工作
mathor
2020/08/11
1.2K0
XLNet详解
Transformer自下而上理解(4) Attention without RNN
在介绍Transformer之前,我们首先回顾一下Attention机制。我们要知道Attention的提出的目的是为了解决句子太长而出现的遗忘问题。
marsggbo
2021/06/08
4100
Transformer自下而上理解(4) Attention without RNN
行为感知Transformer:用于多行为序列推荐的
本文主要针对序列推荐中的多行为序列推荐,即行为序列中包含不同的行为类型,比如点击,加购,购买等。为了捕获用户的个性化行为模式和行为间的复杂协作关系,作者提出PBAT方法:
秋枫学习笔记
2024/02/27
8230
行为感知Transformer:用于多行为序列推荐的
WSDM'22 | 利用反事实框架预测用户流失
本文针对用户流失预测提出结合因果推断的方法CFChurn。结合反事实推理,捕获社会影响的信息从而对流失进行预测。
秋枫学习笔记
2022/09/19
6900
AAAI'21 | 会话推荐--稀疏注意力去除噪声,自注意力生成目标表征
这里作者用到了一个新的激活函数,当然不是作者提出的。通常我们采用softmax来做最后的激活函数,或者作为注意力机制的归一化函数。但是softmax的归一化方式会为向量中的每一个元素都赋值,即他不会存在0的值,顶多是很小,比如10e-5等。而sparsemax是2016年提出的softmax的改进版,他可以得到稀疏的结果,即让一些值为0,它和softmax具有相似的性能,但具有选择性、更紧凑、注意力集中。正如背景中作者所说的,会话中包含的商品可能存在噪声,比如误点击的,而softmax的非零概率可能会为无用数据分配权重,从而影响找到相关项目的能力,并且一些本来分配高权重的位置也会有“缩水”。如下如所示,sparsemax相比如softmax是更硬的,在过大过小的地方对应1和0,即可以得到稀疏解。
秋枫学习笔记
2022/09/19
1.4K0
注意力机制进化史:从MHA到MoBA,新一代注意力机制的极限突破!
MLA主要通过优化KV-cache来减少显存占用,从而提升推理性能。直接抛出这个结论可能不太好理解。首先我们来看下,对于生成模型,一个完整的推理阶段是什么样的,推理性能上有什么问题。这部分内容主要来自:
致Great
2025/02/21
7110
注意力机制进化史:从MHA到MoBA,新一代注意力机制的极限突破!
WWW 2019 | HAN:异质图注意力网络
题目: Heterogeneous Graph Attention Network
Cyril-KI
2022/11/10
1.1K0
WWW 2019 | HAN:异质图注意力网络
ICDE'22「字节」EMBSR:挖掘会话推荐中用户行为的【顺序关系】和【二元关系】
本文是针对会话推荐提出的相关方法,主要关注会话序列中用户执行的各种活动,如点击,添加购物车等微行为。本文提出EMBSR关注两种不同的行为模式:“顺序模式”和“二元关系模式”。为了建立用户微行为的统一模型,
秋枫学习笔记
2022/09/19
4630
ReViT来袭 | 基于全新残差注意力机制改进ViT架构,增强视觉特征的多样性以及模型的鲁棒性
如今,自动视觉识别系统作为强大的辅助工具,在广泛的视觉相关应用中越来越受欢迎,例如目标检测和跟踪,图像分析和分类,场景分割和理解。这些系统的发展旨在模仿人类大脑将低级视觉特征(例如边缘、颜色或形状)与语义级信息完美相关联的能力,以完成感知识别和识别任务。
集智书童公众号
2024/03/01
1.2K0
ReViT来袭 | 基于全新残差注意力机制改进ViT架构,增强视觉特征的多样性以及模型的鲁棒性
主成分分析(Principal Component Analysis,PCA)
)个主成分(线性无关变量)来代替m个原有变量(线性相关变量),使问题得以简化,并能保留原有变量的大部分信息(原有变量的方差)。
Michael阿明
2020/07/13
9840
主成分分析(Principal Component Analysis,PCA)
正反馈+负反馈还不够,还有【中性反馈】
本文主要针对新闻网站对匿名读者(没注册的游客)进行新闻推荐的场景,访客和文章之间的交互仅限于临时登录会话。以前的工作倾向于将基于会话的推荐制定为下一个商品预测任务,而忽略了用户行为的隐含反馈,即用户真正喜欢或不喜欢什么。因此,本文提出了一个综合框架,通过正反馈(即他们花更多时间阅读的文章)和负反馈(即他们选择跳过而不点击的文章)来模拟用户行为。并且该框架使用会话开始时间隐含地对用户进行建模,并使用其初始发布时间对文章进行建模,称之为“中性反馈”。
秋枫学习笔记
2022/09/19
1.2K0
WSDM'21「蚂蚁」CTR预估:多交互注意力网络
本文涉及的内容相对简单,从题目出发,即通过注意力机制来实现的候选item和各种特征之间的各种交互。时间紧急的小伙伴可以直接看总结部分。
秋枫学习笔记
2022/09/19
3230
Trio-ViT | 专门针对高效 ViTs 的卷积 Transformer混合架构的加速器!
感谢自注意力机制强大的全局信息提取能力,Transformers在各种自然语言处理(NLP)任务中取得了巨大成功。这一成功催生了视觉Transformers(ViTs)[4, 5]的快速发展,它们在计算机视觉领域受到了越来越多的关注,并且与基于卷积的对应物相比显示出优越的性能。
集智书童公众号
2024/05/17
5690
Trio-ViT | 专门针对高效 ViTs 的卷积 Transformer混合架构的加速器!
推荐阅读
相关推荐
神经网络 Attention
更多 >
LV.1
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档