PyTorch快餐教程2019 (2) - Multi-Head Attention
上一节我们为了让一个完整的语言模型跑起来,可能给大家带来的学习负担过重了。没关系,我们这一节开始来还上节没讲清楚的债。
还记得我们上节提到的两个Attention吗?
上节我们给大家一个印象,现在我们正式开始介绍其原理。
Scaled Dot-Product Attention
首先说Scaled Dot-Product Attention,其计算公式为:
$
Attention(Q,K,V)=softmax(frac{QK^T}{sqrt{d_k}})V
$
Q乘以K的转置,再除以$d_k$的平方根进行缩放,经过一个可选的Mask,经过softmax之后,再与V相乘。
用代码实现如下:
def attention(query, key, value, mask=No