深度学习笔记-self-attention

输入:

不确定长度的向量。例如:

A.文字处理,不同长度的句子,对词汇的向量表示可采用one-hot Encoding,word embedding(会存在类形似性),如下图:

深度学习笔记-self-attention_第1张图片

 B.一段声音信号是一排向量,一段长度(25ms)定义为一个window,定义为一个向量即一个frame,一个window右移一点长度(10ms)得到一个新的向量(frame)

深度学习笔记-self-attention_第2张图片

 C.social network,分子

输出:

深度学习笔记-self-attention_第3张图片

 问题:

之前确定向量输入网络,现在面对的是一个序列,如何考虑一个序列的前后信息,此时就引入了self-attention。

self-attention

结构如下

就是每一个输入向量都与其他向量相关联后生成一个新的自己,这个FC权重是共享的哦,self attention模块计算是一个序列所有向量并行计算的,输出同样长度的输出后每个输出向量分别进入FC,再强调一次,共享权重。

深度学习笔记-self-attention_第4张图片

序列中一个向量如何输出一个融合序列其他向量信息的新向量:

计算α表示两个向量的相关联程度

深度学习笔记-self-attention_第5张图片

 α两种计算方法,通常点积法常用

 深度学习笔记-self-attention_第6张图片

深度学习笔记-self-attention_第7张图片

 根据α去抽取其他向量信息,哪个α大,哪个v参与程度就高。

深度学习笔记-self-attention_第8张图片

 矩阵形式

深度学习笔记-self-attention_第9张图片

 之前不熟RNN,所以一直容易误解权重,此时再强调α生成q,k.v,共享矩阵。即序列输入的每个向量共享网络权重,无论是self-atttention模块,还是fc网络。

深度学习笔记-self-attention_第10张图片

 深度学习笔记-self-attention_第11张图片

 深度学习笔记-self-attention_第12张图片

 只有Wq,Wk,Wv三个矩阵权重需要学习。

Multi-head self-attention

用来应对不同的相关关系,每个头运算都是独立的,和上面计算方法相同 

深度学习笔记-self-attention_第13张图片

位置编码-positional encoding

在self-attention中没有位置信息,一段序列中每个输入顺序不影像输出,因为权重都一样。

但是序列是有位置信息的,所以引入了位置编码。为每一个位置设置一个位置向量,并采用加和的形式。这些位置向量是人为设定的,可能存在缺陷,现在也有通过数据学习位置向量。

深度学习笔记-self-attention_第14张图片


self-attention原理大概就是这样

下面这个视频讲解注意力机制的本质还不错,四五分钟,有兴趣可以看看注意力机制的本质|Self-Attention|Transformer|QKV矩阵_哔哩哔哩_bilibili

你可能感兴趣的:(深度学习,深度学习,人工智能,transformer)