self-attention

一、网络的输入和输出

1、输入

输入是一个vector set,而且数量会变,比如下图一个句子

可以采用one-hot编码(不同的词看不到之间是否接近或比较远)

也可以采用word embedding(不同的词之间有远近和相互关系,这个关系怎么得到的不在这里讨论,总之在网上能下载到每个词的word embedding)

除此还有声音信号、图信号等。

2、输出有三种:

1)每个vector对应一个输出

如词性标注

I saw a saw(我看见一把锯),每个词有一个词性,名词还是动词

2)只有一个输出

如一个句子判断褒贬,听声识人

         3)未定数量的输出,数量由机器自己决定(seq2seq,翻译,语音识别)

二、输出为N个label(和输入一样多)

比如说词性标注的问题,最直观的办法是每个输入通过FC,直接得到自己的输出。但这样做有很大的问题。如下图:

两个saw的输入完全相同,但前一个输出是动词,后一个输出是名词。这样的网络是做不到的。所以要考虑句子上下文之间的联系,

可以加一个window,但window过大参数会过多,并且要统计训练样本最长的句子取window,所以引用Self-attention机制。

三、Self-attention

图中增加了self-attention层。with context所对应的vector是输入vector在考虑了上下文后生成的。Self-attention也可以堆叠几次,Self-attention和FC交替使用,self-attention专注于处理整个seq信息,FC处理单个向量

self-attention中计算每一个向量之间的联系,相关性用表示

那么如何计算呢,最常见的方法如下图:

矩阵分别与输入相乘,得到q和k。之后q和k做向量内积的到

在Self-attention当中,要求输入的attention score时,计算方法如下图,分别用1的q和每一个的k做内积。

之后做一个softmax运算,归一化

每一个输出b可以用下图的计算得出

对于每个输入a,它的q、k、v都是分别乘以a得到。可以合并成矩阵表示,如下图:

根据每个attention的分数计算方法

其中从A到A’是每列进行softmax运算得到。

而最终输出的计算也可以用矩阵表示出来,如下图。

最终,整个self-attention运算可以用下面一张图表示出来

整个运算之中只有是未知的参数,需要用样本训练出来,其他的都是已知确定的。

四、多头自注意力

多头自注意力时自注意力的一种变种。

五、位置编码(positional encoding)的引入

输入在序列中的位置也包含一定的信息,不同的位置应该作为一种信息传入

方法是将位置i的位置编码向量相加再输入网络,的确定可以是人工设定,也可以是从数据种学习得到。

六、Self-attention和CNN的对比

Self-attention可以考虑整个图像的信息,CNN只考虑周边一个领域的信息。CNN可以认为是简单化的self-attention,也是self-attention的一个特例。

 

self-attention是一个复杂化的CNN。CNN的范围是人工划定,self-attention是机器自己学出来的。

复杂的模型,如果训练数据量比较少,则容易产出overfit。而较小的模型,在较少的数据量时,也会有不错的结果。用不同的数据量来训练self-attention和CNN,下图能看出对比。

当数据量较少时,CNN效果比较好。随着数据量增加,self-attention的效果超过CNN。CNN的弹性比较小,数据少的时候结果好。但数据多时,它没有办法再提升得更多。self-attention弹性较大,需要比较多的数据才能训练出好的结果。

七、Self-attention和RNN的对比

RNN中距离较远得信息,常常被遗忘。Self-attention就没有这个问题。

RNN不能并行运算,Self-attention却能并行处理。

  • 15
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值