Transformer理解
1、QKV作用?
1、QKV都是输入经过线性投影获得,假设句子为"good morning,sir",句子有4个token; 通过这4个token线性投影获得的QKV的embeding长度都是4,维度可能不一样,即Q.shape=(4, dq), K.shape=(4,dk), V.shape=(4,dv); QKV这3个embeding的4个token均包含原句子中单词的意义。
2、K和Q的点乘为Q对K中不同的token的注意力得分,然后根据不同的注意力得分乘以每个token的value值,就获得的最终的值; 而正式第一步中Q和K和V是通过不同的线性投影,获得不同空间上的投影,从而增强了表达能力和泛化性。
2、QKV的矩阵形状问题
Q和K的维度相等,dq=dk,因为需要点乘; 假设Q.shape=(N,dq), K.shape=(token_len, dq), V.shape=(token_len,dv);
Q和K点积获得的attention score形状为(N, token_len), QKV值形状为(N,dv)
3、Multi-Head Attention
多头主要是通过不同组的QKV的投影来增强的attention能力;同时假设有h=8组,不同组的QKV的维度为dk=dv=dmodel/h,然后所有组的结果concat起来就是最终的输出。这个多组就是论文中的多头,因为每个头的维度减少了,所以中的计算消耗和原来的注意力差不多