Loading [MathJax]/jax/output/CommonHTML/jax.js
注意力机制

什么是注意力机制?给定一篇很长的文章,然后就此文章进行提问,提出的问题只和段落中的一两个句子相关,其余部分都是无关的,为了减小神经网络的负担,只需要把相关的片段挑选出来让后续的神经网络来处理,而不需要把所有文章都输给神经网络

1.计算感兴趣的输入向量

给定输入向量从[x1,,xN]中选出和某个特定任务相关的信息,需要引入一个和任务相关的表示,成为查询向量Query Vector,并通过打分函数计算查询向量和输入向量的相关性。计算在给定q,x情况下,选择第n个输入向量的概率

an=p(z=n|X,q)=softmax(s(xn,q))=exp(s(xn,q))Nj=1exp(s(xj,q)),

其中s为打分函数,有加性模型、点积模型、缩放点积模型、双线性模型,这些模型都是对输入向量x和查询向量q做一些运算,这里挑点积模型说一下,因为transformer会用到这个打分函数,其他的这里就不具体阐述了。s(x,q)=xq,可以看出,点积就是内积运算,乘积越大,两者相似度越高,和$q乘积最大的xn,打分最高,和查询向量最相似,也就是说其权重(注意力分布)最高,和查询向量匹配度最高。αn为注意力分布,可以理解为每个输入向量的权重。

2.软性注意力机制

注意力分布αn可以看成在给定任务相关的查询$q时,第n个输入向量受关注的程度,可以采用一种软性的信息选择机制对输入信息进行汇总,即

att(X,q)=Nn=1αnxn,=Ezp(z|X,q)[xz].

上述式子称为软性注意力机制

3.硬性注意力机制

硬性注意力机制就是只关注某一个输入向量,即选取概率最高的向量作为输出att(X,q)=xˆn 其中ˆn=argmaxn=1αn

4.键值对注意力

可以用key-value pair来表示输入信息,其中key用来计算注意力分布αn,value用来计算聚合信息,key-value pair表示为(K,V)=[(k1,v1),,(kN,vN)],则注意力函数为

att((K,V),q)=Nn=1αnvn,=Nn=1exp(s(kn,q))jexp(s(kj,q))vn,

普通注意力机制里面的输入向量既充当key又充当value。

5.多头注意力模型

见transformer(attention is all you need)

6.自注意力模型

见transformer(attention is all you need)

 

 

 

 

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇