multi-Head Attention

参考:

图解自注意力机制

深入理解Multi-Head Attention

大语言模型中一个"计算块"是由多个 自注意(self-attention)和反向传播组成, 然而一般LLM使用的是 masked self-attention 以及 multi-headed self-attention。

masked and self-attention

masked self-attention相较于一般的self-attention更轻量化,因为只考虑每个token之前的部分。对于一个序列中的一个token,仅仅计算序列中 当前token之前的 注意力分数。

在这里插入图片描述

换句话说,当前token之后的 注意力权重实际被 “遮住了”, 相当于当模型预测下一个输出时候,防止模型“提前偷看”。
在这里插入图片描述

先回顾self-attention, 对于一个token, 将其对应的query向量与其他token对应的Key 向量相乘,得到该token的权重向量,假设该token是第i个词,整个sequence长度为T,则token的权重向量中只有前i个元素有值,之后的部分被masked掉。然后将权重向量与value向量 相乘。

以下面例子距离,对于下面一个句子:

a robot must obey the orders given it

我们关注it时, 先得到it的Query向量,和 其他词的 key向量相乘,得到了**其他词 ** 相对于 当前词的注意力得分。

然后将 每个词的value 和注意力得分加权求和。

在这里插入图片描述

比如上图中,取出it的Query向量,与其他词的Key向量点乘,(还需要softmax处理),得到其他每个词对应的注意力得分

在这里插入图片描述

将每个词的value向量乘以其对应的注意力得分,最后求和,即得到自注意力层的输出向量

在这里插入图片描述

那么什么事Multi-Headed attention呢?

Multi-Headed attention

简单的一句话说明,多头注意力,实际上就是把 单个的Q,K,V 向量分裂为多个部分,然后挨个执行self-attention, 然后再将结果拼接。

例如,假如Q,K,V向量都是768维, 注意力头有12个,将QKV分别分为12份,每一份称为一个Head, 那么每一个Head 对应长度Head size 为 64. (12 * 64 = 768)

在这里插入图片描述

12个Head中的其中3个可以想象类似如下:

在这里插入图片描述

每一个头也都有Q,K, V 向量。

然后计算注意力得分

每个注意力头的计算过程是一样的,以其中一个举例

在这里插入图片描述

当前关注的token,与其他token的K向量相乘再经过softmax得到注意力得分,然后和self-attention一样,将每个token的value向量与注意力得分相乘,然后计算加权和

在这里插入图片描述

将每个词的value向量和注意力得分相乘,然后求和,得到了该注意力头 的 self-attention 结果:

在这里插入图片描述

Multi-Head self-attention 对应多个加权和向量,再拼接回去,便得到Multi-Headed self-attention结果

在这里插入图片描述

为了得到multi-head attention想要的维度,可以再进行一次现行映射,使用一个权重矩阵,将注意力头的结果映射到 self-attention的输出

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吃肉夹馍不要夹馍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值