Q,K,V思想最早应该是来自于Memory Networks。
准确说Memory Networks并不只是一个模型,而是一套思路,使用外部的一个memory来存储长期记忆信息,因为当时RNN系列模型使用final state 存储的信息,序列过长就会遗忘到早期信息。
甚至,我觉得Memory Networks的思想后面启发了self-attention和transformer。最重要的就是提出了query - key - value思想,当时的该模型聚焦的任务主要是question answering,先用输入的问题query检索key-value memories,找到和问题相似的memory的key,计算相关性分数,然后对value embedding进行加权求和,得到一个输出向量。这后面就衍生出了self-attention里的Q,K,V表示,在self-attention里的把X映射到QKV。
具体的实现呢,邱老师的讲座里说的很清楚了。QKV是输入的X乘上Wq, Wk, Wv三个矩阵得到的。全用X不是不可以,但参数太少,影响模型容量。