Attention的思想如同它的名字一样,就是“注意力”,在预测结果时把注意力放在不同的特征上。
举个例子。比如在预测“我妈今天做的这顿饭真好吃”的情感时,如果只预测正向还是负向,那真正影响结果的只有“真好吃”这三个字,前面说的“我妈今天做的这顿饭”基本没什么用,如果是直接对token embedding进行平均去求句子表示会引入不少噪声。所以引入attention机制,让我们可以根据任务目标赋予输入token不同的权重,理想情况下前半句的权重都在0.0及,后三个字则是“0.3, 0.3, 0.3”,在计算句子表示时就变成了:
最终表示 = 0.01x我+0.01x妈+0.01x今+0.01x天+0.01x做+0.01x的+0.01x这+0.01x顿+0.02x饭+0.3x真+0.3x好+0.3x吃
怎么用知道了,那核心就在于这个权重怎么计算。通常我们会将输入分为query(Q), key(K), value(V)三种: