自注意力机制 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
分析输入向量关系
分析与 向量相关的其他向量,每个向量与 关联的程度由数值 决定。
如何计算 relevant 的数值 ?
计算原理
应用到 Self-attention
- q: qeury
- k: key
计算 Q, K, V - 模型参数 , , 的计算 (将被训练出来)
计算 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 .
- hand-crafted
Self-attention for speech
Truncated Self-attention
Self-attention for image
一个 pixel 是一个向量,这个图片里面就有 个向量,它们形成一组。
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 )。