一、引入
-
应用场景:输入任意长度的向量进行处理
-
从输入看:
- 文字处理(nlp)
- one-hot
- word-embedding
- 声音信号处理
每个时间窗口(window,25ms)视为帧(frame),视为向量 - graph
每个节点视为一个向量- social graph
- 分子式one-hot
- 文字处理(nlp)
-
从输出看:
- sequence labeling:输入输出数量相等(每个向量都有一个标签)
- 词性标注POS tagging
- 语音标识(每个vector对应音素phoneme
- 社交网络(每个节点(person)进行标注(是否推送商品)
- 整个输入序列只有一个输出
- 文本情感分析
- 语音辨认
- 分子的疏水性
- 由模型决定输出的数目(seq2seq)
- 翻译
- 语音辨识
- sequence labeling:输入输出数量相等(每个向量都有一个标签)
-
Sequence Labeling
- 对每一个向量用Fully-connected network分别进行处理
- 问题:忽略了序列上下文的关系
同一个向量在序列号中不同的位置、不同的上下文环境下,得到的输出可能不同(需要考虑序列) - 改进:串联若干个向量
问题:- 只能考虑固定个数,不能考虑任意长度
- 网络参数大
- 问题:忽略了序列上下文的关系
- 对每一个向量用Fully-connected network分别进行处理
二、hello,self-attention
- 特点:考虑整个序列sequence的所有向量,综合向量序列整体和单个向量个体,得到对每一个向量处理后的向量
⇒把这个向量连接一个FC,FC可以专注于处理该位置的向量,得到对应结果
- self-attention(关注整体)和fc(关注单个)可交替使用
基本原理
- 输入:a set of vectors,可能是整个network的input,也可能是某个hidden layer的output
- 输出:处理input后,b是考虑了所有的a才生成的
具体步骤
-
根据 a 1 a^1 a1这个向量,找出整个sequence中与 a 1 a^1 a1相关的其他向量
⇒哪些部分是重要的(判断label,决定class,决定regression数值)用 α \alpha α表示
-
计算Attention的模组:拿两个向量作为输入,输出 α \alpha α
q q q=query
k k </