No title
机器学习笔记(七)-自注意力机制
解决问题:
network input输入为多个向量,且输入向量数目会改变的情况
例:句子识别 this is a cat
1.首先对句子进行编码

1)独热编码
根据码本对单词进行独热编码
问题:不包含单词的语义信息
2)woord embedding
考虑单词语义,给每个单词一个包含语义咨询的向量,即相似的单词(如dog,cat)的距离小
输入为图
考虑节点和边,每个节点的信息为一个向量,一个图为一堆向量
输出:①每个输入向量对应一个输出(标签或向量)
输入图-》输出每个节点的特性
②一串输入对应一个输出
③机器自己决定几个输出(seqtoseq)
实现:自注意力
输入为ai,输出bi为考虑所有输入的输出
输入j对输入i的权重 (attention score)计算:
ai乘查询矩阵Q,aj乘键值矩阵K,得到q和k进行dot得到
q1到q4同时计算:输入a1~a4拼接起来,同时乘Wq
attention score计算:
self attention模块的输出b计算:
整体计算过程:
只有Wq,Wk,Wv位置,需要通过训练学习,从全体资料中找出
多头注意力机制(多个q,k,v)考虑不同类型的关系
位置编码:上述方法未考虑多个输入的位置关系
不同的位置i有一个不同的vector-ei,把这个位置编码加到输入上
位置向量的设置仍然是一个待解决的问题,并且是可以通过资料 学出来
CNN与selfattention的关系
训练资料小时,CNN结果优于自注意力,训练资料大时,自注意力结果优于CNN,是因为自注意力弹性小,需要大量训练资料,CNN弹性大,无法学习过多资料
自注意力vsRNN
自注意力平行处理所有输出,RNN输出一个一个产生
因此自注意力的计算速度更快,时间短
Self-attention for graph
图上有边,计算注意力矩阵可以直接计算有边相连的位置
-》GNN