本篇文章给大家谈谈如何使用attention优化权重,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Attention(注意力)机制

Attention(注意力)机制其实来源于人类的认识认知能力。比如当人们观察一个场景或处理一件事情时,人们往往会关注场景的显著性物体,处理事情时则希望抓住主要矛盾。注意力机制使得人类能够关注事物的重要部分,忽略次要部分,更高效的处理所面临的各种事情。

注意力机制在NLP领域被真正的发扬光大,其具有参数少、速度快、效果好的特点,如2018年的BERT、GPT 领跑各项 NLP 任务效果。由此在此领域,transformer和attention结构受到了极大的重视。

第二步:使用权重对Value进行加权求和从而得到Attention Value。

注意力是一种机制,或者方法论,并没有严格的数学定义。比如,传统的局部图像特征提取、显著性检测、滑动窗口方法等都可以看作一种注意力机制。在神经网络中,注意力模块通常是一个额外的神经网络,能够硬性选择输入的某些部分,或者给输入的不同部分分配不同的权重。

根据权重在特征空间和通道上的应用方式不同,主要可分为

其增加了一个通道注意力模块,学习每个通道的权重,通过抑制无关特征提升卷积特征的表示性能。SENet通过Squeeze模块和Exciation模块实现所述功能,首先通过Squeeze模块对卷积特征进行进行压缩,即在通道维度上执行全局池化操作,在SENet中采用的是全局平均池化,作者提到该操作能够使得靠近数据输入的特征也可以具有全局感受野,这一点在很多的任务中是非常有用的。然后是通过全连接网络进行Exciation操作,作者在全连接网络中降维操作的目的是一方面降低了网络计算量,一方面增加了网络的非线性能力。最后将得到通道attention应用到原始卷积特征上,即通过乘法加权的方式乘到先前的特征上,从而提升重要特征,抑制不重要特征。

从图中可以看出,首先将输入张量进行降维到C通道,与SENet不同的是采用二阶pool的方式,计算得到C*C的协方差矩阵,这种计算方式引入了通道之间的相互关系,然后进行线性卷积和非线性激活的两个连续运算,得到通道注意力。

除此之外,还有很多的注意力机制相关的研究,比如残差注意力机制,多尺度注意力机制,递归注意力机制等。

包含如何使用attention优化权重的词条插图

NLP中的Attention机制

如下图所示,Attention从数学角度来形容是一个变量Query到一系列Key-Value对的映射,从公式上描述是根据Query和Key计算Values的加权求和的机制。

attention计算主要分为三步:

第一步,是将Query和每个Key进行相似度计算得到权重,常用的相似度函数有点积,拼接,感知机等如何使用attention优化权重

第二步,一般是使用一个softmax函数对这些权重进行归一化如何使用attention优化权重

最后,将权重和相应的键值Value进行加权求和得到最后的attention。

目前在NLP研究中,key和value常常都是同一个,即key=value。单纯的文字描述很难理解attention,以下从实际算法角度来理解。

接下来,如何使用attention优化权重我们以Seq2Seq中的attention作为例子,讲述attention在seq2seq的计算流程。

(1)什么是Seq2seq模型(常用语翻译的RNN模型)

Seq2Seq又叫Encoder-Decoder模型,常见于机器翻译。下图是它的基本结构,以一个RNN作为编码器,获得句子的语义向量,以另外一个RNN作为解码器,进行翻译。如图中所展示,我们要翻译“知识就是力量。”这句话。Encoder是一个RNN,将要翻译的话转换成向量特征,输入到Decoder中。

(2)语义向量C

首先,先进行数学符号的描述。

(1)在Encoder编码器中,保留每一个RNN单元的隐藏状态(hidden state)

(2)在Decoder解码器中,每个一个RNN单元的隐藏状态是由输入和上一步的隐藏状态决定的,假设第t步的隐藏状态记为 (下图中的START)

到这里其实attention的计算就结束如何使用attention优化权重了,得到的这个 就已经是decoder的第t时刻的注意力向量了(在后面的文章中,这也称作是上下文向量, context vector ,符号表示也可能是用 来表示的)

最后将注意力向量 ,以及decoder的t时刻的hidden state ,并联起来,然后做后续的步骤(比如,加个dense全连接层做标签预测之类的)

(1)Soft-attention结构

Soft attention也就是上面Seq2Seq讲过的那种最常见的attention,是在求注意力分配概率分布的时候,对于输入句子X中任意一个单词都给出个概率,是个概率分布,把attention变量(context vecor)用 表示,attention得分在经过了softmax过后的权值用 表示.

简单来说

(1)计算attention scores 通过

(2)获得attention distribution 通过

(3)计算 对应的上下文向量

了解了模型大致原理,我们可以详细的看一下究竟Self-Attention结构是怎样的。其基本结构如下

参考文献

Attention

优秀的博客如何使用attention优化权重

【图解什么是 Transformer(很全)】

【自注意力机制Self-attention】

【BERT大火却不懂Transformer】 ;wfr=spiderfor=pc

【寒小阳 】

BERT

[ ]

[ ;wfr=spiderfor=pc]

transformer

Attention

SelfAttention

Multi-Attention

Transform

BERT

1.Attention机制的核心在于对一个序列数据进行聚焦如何使用attention优化权重,这个聚焦是通过一个概率分布来实现的。Attention vector实际上达到了让B网络聚焦于A网络输出的某一部分的作用。

2.根据Thinking单词,对输入句子的每个单词进行评分,这个分数决定了对其如何使用attention优化权重他单词放置多少关注度。例如 Thinking ,就用它的 q1 去乘以每个位置的 ki

3.目前在NLP研究中,key和value常常都是同一个,也就是query=h1,key=value=s1,s2,s3,s4

Attention函数的本质可以被描述为一个查询(query)到一系列(键key-值value)对的映射。

在计算attention时主要分为三步,第一步是将query和每个key进行相似度计算得到权重,常用的相似度函数有点积,拼接,感知机等如何使用attention优化权重;、

然后第二步一般是使用一个softmax函数对这些权重进行归一化;最后将权重和相应的键值value进行加权求和得到最后的attention。

google提出来的多头attention的不同之处在于进行了h次计算而不仅仅算一次,

好处是可以允许模型在不同的表示子空间里学习到相关的信息,后面还会根据attention可视化来验证。

token(符号):包括单词和标点

tokenization(分词)如何使用attention优化权重:我是中国人-[‘我’, ‘是’, ‘中国人’]

corpus 语料库

;wfr=spiderfor=pc

假如我们用一个RNN读入了一个句子,产生了h1, h2,h3,h4四个hidden state。

为了得到该句子的摘要,对每一个h计算一个分数:f=va tanh(Wh)。

四个h共产生了4个分数,将这四个分数送入一个softmax层,产生一个概率分布: a=softmax(va tanh(Wh))

根据这个概率分布对四个h进行加和,得到句子摘要的第一个vector: c=H a

为了得到更多的vector,可以把上面图中的小写va换成一个矩阵,A=softmax(Va tanh(Wh))

a也就变成了多个概率分布组成的矩阵,每个概率分布都可以用来与h进行加和产生一个vector,产生了摘要的多个vector:C=AH

第一步:将query和每个key进行相似度计算得到权重,常用的相似度函数有点积,拼接,感知机等,也就是s1,s2,s3,s4与h1点积;

第二步:用一个softmax函数对这些权重进行归一化,得到概率分布a1,a2,a3,a4;

第三步:最后将权重和相应的键值value进行加权求和得到最后的attention,即将s1,s2,s3,s4与标量a1,a2,a3,a4加权求和;

目前在NLP研究中,key和value常常都是同一个,也就是query=h1,key=value=s1,s2,s3,s4

关于如何使用attention优化权重和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

免责声明:本文系转载,版权归原作者所有;旨在传递信息,不代表一休教程网的观点和立场。