AI解剖课堂 · Part 5 彻底搞懂注意力
第 50 章 一次全算完
Q. 要是有 1,000 个词,第 47~49 章的计算难道要分开做 1,000 遍?
- 到现在只算了“学校”一个词。要是有 1,000 个词,难道要分开算 1,000 遍?
- 把词向量一行一行叠起来,就是矩阵(第 10 章)。乘上第 46 章的三个矩阵,所有词的 Q、K、V 一次就出来了。
- 接着算 Q × Kᵀ。Kᵀ 是把 K 横过来放倒的矩阵。结果的每一格都是 Q 的一行和 K 的一行的点积,也就是第 47 章的分数表。
- 把整张分数表除以 √2,再对每一行做 Softmax(第 48 章)。现在每一行都装着那个词看各个词的比例。
- 最后算比例表 × V。结果的每一行,就是第 49 章的调颜料。所有词的新向量一次全出来了。
- 把这个过程写成一个式子就是 softmax(QKᵀ/√d)V,正是 2017 年论文(第 44 章)里的注意力公式。
- 矩阵乘法可以让 GPU 同时算好多格。所以 Transformer 处理长句子也能一口气、很快地算完(第 44 章)。
本章小结
- 用叠起词向量的矩阵,一次做出 Q、K、V。
- Q × Kᵀ = 分数表;÷ √d 再逐行 Softmax = 比例表;比例表 × V = 新向量。
- softmax(QKᵀ/√d)V:因为是矩阵乘法,GPU 能同时算所有词。