Attention 机制

Attention 机制的直观理解就是:给定字典 D={K,V}D=\{K,V\},和一个 Token QQ。Attention 基于一个朴素的理解,例如英语里,如果两个单词长得差不多,那么语义应该也差不多(也就是词性变换)。如果可以量化出相似度,那么我们就可以一定程度上可以表示出这个单词的意思

对于 Token 而言,其都是长度为 dd 的词向量,不同的相似度计算方式会产生不同的 Attention 计算公式。一般而言,可以写成下面这种形式

Attention(Q,K,V)=score(Q,K)V \text{Attention}(Q,K,V)=\text{score}(Q,K)\cdot V

这里,如果字典的大小为 mm,查询 nn 个词,每个词的 Embedding 维度为 dd,代表“意义”的 Value 的维度为 dvd_v,则这三个矩阵的大小分别为

QRn×dKRm×dVRm×dv Q\in \R^{n\times d}\\ K\in \R^{m\times d}\\ V\in \R^{m\times d_v}

例如经典的 Scaled Dot Product Attention,其 score function 就是 softmax(QKTd)\text{softmax}(\frac{QK^T}{\sqrt d})

Attention(Q,K,V)=softmax(QKd)V \text{Attention}(Q,K,V)=\text{softmax}\Big( \frac{QK^\intercal}{\sqrt{d}} \Big)\cdot V