Advertisement

李宏毅机器学习——Self-attention

阅读量:

一、vector set形式的输入

文字输入、声音信号处理、图、分子结构

二、输出的形式

1、每一个向量都有一个对应的一个label
2、完整的序列,对应一个label
e.g.Sentiment Analysis
3、让机器自己决定输出多少个labels【seq2seq】
e.g.机器翻译、语音识别

三、Sequence Labeling(输入跟输出数目一样多的状况)

  • 初步想法:将每个seq都放到fully-connected network中,输出
  • 问题:每个vec同等对待,难以区分词性
  • 解决:联系上下文,将window输入到FC的network中
  • 问题:window的长度还是有限的,难以考虑到整个seq的信息,如果真的很长,就是需要很多参数,运算大的同时还可能overfitting
  • 解决:用Self-attention,在单个考虑seq的每个vec的同时,联系上下文信息尽量充实单个vec的含义

四、Self-attention的思路步骤

形式上和NN框架类似,SA实际是CNN的更灵活的表达形式,而CNN是加了限制的SA。

01-计算attention score(各向量之间的相关性)

运用dot product计算vec之间的相关性,即attention score,越高,表示两个vec之间的相关性越高
在这里插入图片描述

02-将attention score激活

Activation Function一般采用soft-max,也可以采用ReLU

softmax函数——将输入转化为概率
广泛应用于多分类场景,把一些输入映射为0-1之间的实数,并且归一化保证和为1,因此多分类的概率之和也刚好为1。具体来说,如果将max看成一个分类问题,就是非黑即白,最后的输出是一个确定的变量。更多的时候,我们希望输出的是取到某个分类的概率,或者说,我们希望分值大的那一项被经常取到,而分值较小的那一项也有一定的概率偶尔被取到,所以我们就应用到了soft的概念,即最后的输出是每个分类被取到的概率。
参考:<>

在这里插入图片描述

03-输出我们需要的信息

在这里插入图片描述

05-具体操作中的参数设置

在这里插入图片描述
在这里插入图片描述

五、Self-attention进阶

(一)multi-head self-attention

加入超参数head,相当于p的不同类别
在这里插入图片描述

(二)Positional Encoding

一般的sa,只是从seq的每个vec出发,考虑到了前后的相关性,但是却缺少了位置资讯。而Positional Encoding通过加入位置咨询来优化这个问题。
在这里插入图片描述

六、Sellf-attention与NN的比较

(一)sa与CNN

  • 关联 :CNN 可以看作是一种简化版的 Self-attention,因为在做CNN的时候,我们只考虑 receptive field里面的资讯,而在做 Self-attention 的时候,我们是考虑整张图片的资讯,所以 CNN,是简化版的Self-attention(或者是你可以反过来说,Self-attention 是一个复杂化的 CNN)。
  • 效能 :既然Self-attention 比较 flexible,之前有讲说比较 flexible 的 model,比较需要更多的data,如果你 data 不够,就有可能 overfitting。就会发现说,随著资料量越来越多,那 Self-attention的结果就越来越好,最终在资料量最多的时候,Self-attention 可以超过 CNN,但在资料量少的时候,CNN 它是可以比Self-attention,得到更好的结果的
    在这里插入图片描述

(一)sa与RNN

在这里插入图片描述
  • :它们的 input 都是一个 vector sequence
  • :(1)内存RNN必须要把最左边的输入存在 memory 里面,但是SA只需要通过q,输入key就能找到对应的vec;(2)运行速度:RNN无法并行处理,SA可以并行处理,运算效率更高。

全部评论 (0)

还没有任何评论哟~