李宏毅机器学习笔记:自注意力机制

自注意力机制

1. self-attention

  • 关注输入数据的全局信息
  • 没有考虑位置信息
  • 计算量是序列长度的平方

李宏毅机器学习笔记:自注意力机制_第1张图片

每个输入ai乘以不同的矩阵,得到向量q、k、v,q表示查询向量,用q乘以所有输入的k向量得到的值再进行softmax归一化,作为输入a的权重和输入a的v向量进行点乘,加起来就得到了a对应的输出:bi
李宏毅机器学习笔记:自注意力机制_第2张图片李宏毅机器学习笔记:自注意力机制_第3张图片

  1. 把全部输入看成一个向量I,分别乘以 W q W^q Wq, W k W^k Wk, W v W^v Wv(模型学习出来的参数),得到Q、K、V
  2. K的转置乘以Q得到Attention的分数A,再对每一列进行归一化,得到A’
  3. 将V乘以得到分数矩阵A’,得到输出O

整体过程如下

李宏毅机器学习笔记:自注意力机制_第4张图片
A t t e n t i o n ( Q , K , V ) = V ∗ s o f t m a x ( K T Q ) Attention(Q,K,V)=V*softmax(K^TQ) Attention(Q,K,V)=Vsoftmax(KTQ)

2. Multi-head Self-attention

可能输入之间存在不同的相关性
李宏毅机器学习笔记:自注意力机制_第5张图片
李宏毅机器学习笔记:自注意力机制_第6张图片

3. Positional Encoding

  • self-attention 没有考虑位置关系

  • Positional Encoding为每个位置设置一个独一无二的位置向量 e i e^i ei

  • 把ei加入到ai,手工设计的

李宏毅机器学习笔记:自注意力机制_第7张图片

4. TruncatedSelf-attention

有些序列可能会非常长,比如说语音识别,也许没必要关注全局信息,可以只输入一部分信息就可以(比如说的这一小段语音是什么),减少计算量
李宏毅机器学习笔记:自注意力机制_第8张图片

5. Self-attention VS CNN

李宏毅机器学习笔记:自注意力机制_第9张图片
李宏毅机器学习笔记:自注意力机制_第10张图片

  • CNN可以看成简化的Self-attention
  • CNN只需要考虑感受野大小里的信息,感受野是人为设计的大小;而Self-attention从全局范围来看,通过学习决定哪些地方重要,自己决定感受野大小
  • Self-attention可以看成可以自己学习感受野大小的CNN
  • 比较小的模型更适合小的数据集,更灵活的模型需要更大的数据集,所有self-attention需要更大量的数据
    李宏毅机器学习笔记:自注意力机制_第11张图片

李宏毅机器学习笔记:自注意力机制_第12张图片
李宏毅机器学习笔记:自注意力机制_第13张图片

6. Self-atention VS RNN

  • RNN也可以考虑全局信息(双向RNN),但是最右边(最后)的输出要考虑最左边(第一个)的输入,就需要把它一直存在memory里不能忘掉;不是并行的,是串行的
  • Self-attention不存在这个问题,他的任意输入序列之间是无序的,并行的,“天涯若比邻”,比RNN块
    李宏毅机器学习笔记:自注意力机制_第14张图片

7. Self-attention for Graph

  • 将Self-attention用在图上,可以只考虑相连的节点之间的attention

李宏毅机器学习笔记:自注意力机制_第15张图片

你可能感兴趣的:(李宏毅机器学习,机器学习,人工智能,深度学习)