自注意力机制(self-attention)

B站视频-李宏毅机器学习2021-自注意力机制

1.要解决的问题

当把输入看成一个向量,输出是数值或者类别。但是如果遇到更复杂的问题呢?

假设输入是多个向量,而且数目不固定,要怎么处理呢?

总结-自注意力机制要解决的问题是:当神经网络的输入是多个大小不一样的向量,并且可能因为不同向量之间有一定的关系,而在训练时却无法充分发挥这些关系,导致模型训练结果较差。

自注意力机制(self-attention)_第1张图片

(1)输入vector set as input —向量集输入举例

例1 文字处理

假设输入是一句英语,显然每个单词的长短不一,并且每个词汇对应一个向量,所以输入是多个长短不一的向量。

如何将词汇表示成向量?

如下图所示,第一种方式可以利用one-hot encoding,但是这种方式下每一个词之间没有关系。第二种方式是word enbedding,很显然这种方式下类别相同的词聚集在一起。

共同点:一个词对应一个向量,即一句话对应一个向量集。

自注意力机制(self-attention)_第2张图片

例2 一段声音也可以是一个向量集

(2)那么输出是什么

三种可能性

  • 每一个向量都有一个标签

自注意力机制(self-attention)_第3张图片

举例 

自注意力机制(self-attention)_第4张图片

  • 一整个向量集的输入对应一个标签

 自注意力机制(self-attention)_第5张图片

举例

自注意力机制(self-attention)_第6张图片

  • 机器自己决定输出标签的个数 

 自注意力机制(self-attention)_第7张图片

2、引出自注意力机制

主要讲的是上述第一种情况,每一个输入向量对应一个标签,这种情况又叫做Sequence Labeling

问题1:前提-该句中有两个saw怎么判断它们的词性。引出有没有可能让FC考虑上下文?

答:FC可以考虑一个window

问题2:如果某个任务需要考虑整个序列?

答:如果让一个window包括整个序列,但是这会让FC参数非常多,变得很复杂。

自注意力机制(self-attention)_第8张图片

 这时,自注意力机制应运而生。可以考虑一整个序列

自注意力机制(self-attention)_第9张图片

3、怎么运作(即怎么产生b1)

1、根据a1找到跟它相关的,每一个向量跟a1之间的关联程度用α来表示。

自注意力机制(self-attention)_第10张图片

怎么计算α呢--常用方法Dot-product

两个向量作为输入,直接输出α,具体是输入的两个向量分别乘不同的矩阵,得到q,k,然后进行点乘即可得到α

 自注意力机制(self-attention)_第11张图片

 怎么套用到self-attention呢

 计算出a1和每一个向量的关联性之后,别忘了计算和自己的关联性。要做一个softmax,也可以用别的函数,比如relu

自注意力机制(self-attention)_第12张图片

 得到α‘(1,1)这些之后,要根据α‘来抽取重要的信息

怎么抽取?每一个向量乘以一个新的W(v)得到新的向量.......。

自注意力机制(self-attention)_第13张图片

 以此类推可以得到b2/b3/b4,要注意的是b1到b4不是依次产生的,是同时计算得到

自注意力机制(self-attention)_第14张图片

  

你可能感兴趣的:(机器学习)