Lecture 4(Preparation):Self-attention

目录

1. Sophisticated input

2. Output

3. Self_attention

4. Positional Enconding

5. Some applications


Lecture3的时候讲了CNN,现在来讲另外一个常见的Network架构——Self-attention。

  • 1. Sophisticated input

到目前为止,学习过的Network的Input都是一个向量。那输入也可以是一排向量,而且输入的向量的数目可以改变。

  • 2. Output

输入(可以是文字、语音、图片)是一堆向量的时候,输出可能有三种情况。如下图,这个笔记会focus on第一种输出情况——Each vector has a label。这种输入和输出数目一样多的状况,叫做Sequence Labeling。

  • 3. Self_attention

对于某些Sequence Labeling的任务,需要考虑一整个Sequence才能解决,这就要用到Self_attention的技术。

Self_attention的运作方式:Self_attention会接收一整个sequence的资讯,input几个vector,Self_attention就会输出几个vector。比如下图,输入4个vector,会输出4个vector,4个输出的vector都是考虑一整个sequence后才得到的。把这些有考虑整个句子的vector再放进FC的Network,然后得到结果。

有了Self_attention的方法后,FC的Network就不是只考虑一个非常小的范围,而是能够考虑到整个sequence的资讯。

Self_attention可以叠加很多次,FC的Network跟Self_attention可以交替使用,如下图:

Self_attention具体运作方式如下:

下面以b1为例讲解如何由a产生b,首先是寻找a1与a1~a4之间的relevant的系数α。用一些方法找出a1和ai之间relevant的系数,即α的值,这里我们选取Dot-product这种方法:

把计算出的α1~α4的值过一个Soft-max(也可以用Relu之类的别的方法),得到α'i,后续计算过程如下图:

下面从矩阵角度来说明Self_attention的运算过程,首先是由a通过三个矩阵运算得到q、k、v:

接下来是每一个q会去跟每一个k计算inner product,得到attention的分数,这里矩阵A里面的元素就是这些分数,然后通过softmax得到A’:

把A‘矩阵乘上V矩阵得到O矩阵,O矩阵里的每一个column就是Self-attention的输出,也就是b1到b4:

总结一下上面的矩阵运算过程。如下图,在Self-attention layer里面,唯一需要学习的参数就是Wq,Wk,Wv,只有Wq,Wk,Wv是通过training data找出来的:

Self-attention的变形——Multi-head Self-attention,我们可以有多个q,不同的q负责不同种类的相关性。下面以两个q为例:

  • 4. Positional Enconding

上面对Self-attention运作方式的讨论中,完全没有把位置资讯考虑进去,但是位置资讯对某些问题是十分重要的。下面通过一个positional encoding的技术,把位置资讯放到Self_attention中去:

  • 5. Some applications

Self-attention for speech

Self-attention for Image

Self-attention v.s. CNN

        CNN是Self-attention的一个subset

Self-attention v.s. RNN

Self-attention for Graph

        当我们把Self-attention按照下图右边的限制用在Graph上的时候,其实就是一种Graph Neural Network (GNN)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值