机器学习笔记(七)-自注意力机制

解决问题:

network input输入为多个向量,且输入向量数目会改变的情况

例:句子识别 this is a cat

1.首先对句子进行编码

image-20230927151251240

1)独热编码

根据码本对单词进行独热编码

问题:不包含单词的语义信息

2)woord embedding

考虑单词语义,给每个单词一个包含语义咨询的向量,即相似的单词(如dog,cat)的距离小

输入为图

考虑节点和边,每个节点的信息为一个向量,一个图为一堆向量

image-20230927151846840

输出:①每个输入向量对应一个输出(标签或向量)

image-20230927152106445

输入图-》输出每个节点的特性

②一串输入对应一个输出

image-20230927152158892

③机器自己决定几个输出(seqtoseq)

image-20230927152316898

实现:自注意力

image-20230927153504218

输入为ai,输出bi为考虑所有输入的输出

image-20230927153758982

输入j对输入i的权重α\alpha (attention score)计算:

ai乘查询矩阵Q,aj乘键值矩阵K,得到q和k进行dot得到

image-20230927154310345

image-20230927154414631

image-20230927154648193

q1到q4同时计算:输入a1~a4拼接起来,同时乘Wq

image-20230927155601747

attention score计算:

image-20230927160144911

self attention模块的输出b计算:

image-20230927160401339

整体计算过程:

image-20230927161149826

只有Wq,Wk,Wv位置,需要通过训练学习,从全体资料中找出

多头注意力机制(多个q,k,v)考虑不同类型的关系

image-20230927161704937

位置编码:上述方法未考虑多个输入的位置关系

不同的位置i有一个不同的vector-ei,把这个位置编码加到输入上

image-20230927162049283

位置向量的设置仍然是一个待解决的问题,并且是可以通过资料 学出来

image-20230927162749281

CNN与selfattention的关系

image-20230927163337689

image-20230927163933968

训练资料小时,CNN结果优于自注意力,训练资料大时,自注意力结果优于CNN,是因为自注意力弹性小,需要大量训练资料,CNN弹性大,无法学习过多资料

自注意力vsRNN

image-20230927164826674

自注意力平行处理所有输出,RNN输出一个一个产生

因此自注意力的计算速度更快,时间短

image-20230927164855056

Self-attention for graph

image-20230927165125264

图上有边,计算注意力矩阵可以直接计算有边相连的位置

-》GNN

image-20230927165141642

image-20230927165345768