Skip to main content

自注意力机制 Self-attention

· 5 min read

解决的问题

之前的输入全部是以一个向量作为输入,如何处理输入是一排不定数量的向量呢?

可能的输入

文字输入句子,语音信号,关系图(人际关系,分子结构)

可能的输出

  • Each vector has a label (label: value type for regression problem, class type for classification problem)
  • 应用: 分析文字的词性,分析声音信号里面的 phonetic,分析 social network 中每个节点的特性,比如电商环境里面分析某个人会不会购买某个商品。

  • The whole sequence has a label.
  • 应用: 判断文字的 sentiment analysis,语者辨认(通过语音信号分析谁讲的),判断分子图结构可能展现的毒性和亲水性

  • Model decides the number of labels itself. seq2seq
  • 应用: 翻译场景,语音辨识

Sequence Labeling (Now work well)

Each vector has a label

直接使用 FC不是一个很好的办法,因为在单个 FC 看来,第一个 saw 和第二个 saw 完全是一样的输入,所以获得的结果也会是一样的。

通过考虑前后词的关系,即用 window 获得一个输入窗口,可以帮助理解。但是仍然有极限,比如我需要看一整个句子才能够理解某个词呢?

把 window 盖住整个句子(有长有短),保持最长的 window 会造成 FC network 需要非常多的参数,运算量大且容易 overfitting。

Self-attention

Architecture

分析输入向量关系

分析与 a1a^1 向量相关的其他向量,每个向量与 a1a^1 关联的程度由数值 α\alpha 决定。

如何计算 relevant α\alpha 的数值 ?

计算原理

应用到 Self-attention

  • q: qeury
  • k: key

计算 Q, K, V - 模型参数 wqw^q, wkw^k, wqw^q 的计算 (将被训练出来)

计算 attention score

Calculation summary

Multi-head Self-attention (Different types of relevance)

Positional Encoding

  • No position information in self-attention.
  • Each position has a unique positional vector eie^i.
  • hand-crafted

Self-attention for speech

Truncated Self-attention

Self-attention for image

一个 pixel 是一个向量,这个图片里面就有 5105*10 个向量,它们形成一组。

Self-attention vs CNN

  • Self-attention 考虑整张图片, CNN 则考虑一定范围的 receptive fields。
  • Self-attention 能够自动"决定和学习" receptive fileds, CNN 汇总 receptive fileds 由人工划定。

Self-attention 比 CNN 更 general, flexible,所以需要更多数据; 如果数据不够有可能 overfitting;而小 model,在 data 少的时候,不容易 overfitting。

Self-attention vs RNN (Recurrent Neural Network)

Self-attention for Graph

图自带关联关系 (edge )。

To Learn More