一步一步理解大模型:缩放点积注意力机制

缩放点积注意力(Scaled Dot-Product Attention)是一种注意力机制,常用于Transformer模型中。

在Transformer模型中,Scaled Dot-Product Attention被用于实现Multi-Head Attention。具体来说,Multi-Head Attention将输入矩阵分别进行多个头的线性变换,然后对每个头的变换结果分别计算Scaled Dot-Product Attention,最后将每个头的Attention结果拼接在一起并通过一个线性变换输出。

Scaled Dot-Product Attention的计算方式如下:

  1. 计算Query矩阵Q、Key矩阵K的乘积,得到得分矩阵scores。
  2. 对得分矩阵scores进行缩放,即将其除以向量维度的平方根(np.sqrt(d_k))。
  3. 若存在Attention Mask,则将Attention Mask的值为True的位置对应的得分矩阵元素置为负无穷(-inf)。
  4. 对得分矩阵scores进行softmax计算,得到Attention权重矩阵attn。
  5. 计算Value矩阵V和Attention权重矩阵attn的乘积,得到加权后的Context矩阵。

这是一段缩放点积注意力的代码:

class ScaledDotProductAttention(nn.Module):
    def __init__(self, mask_value=-1e9):
        super(ScaledDotProductAttention, self).__init__()
        self.mask_value = mask_value

    def forward(self, Q, K, V, attn_mask=None):
        '''
        Q: [batch_size, n_heads, len_q, d_k]
        K: [batch_size, n_heads, len_k, d_k]
        V: [batch_size, n_heads, len_v(=len_k), d_v]
        attn_mask: [batch_size, n_heads, seq_len, seq_len]
        '''
        d_k = Q.size(-1)
        scores = torch.matmul(Q, K.transpose(-1, -2)) / np.sqrt(d_k)  # scores : [batch_size, n_heads, len_q, len_k]
        
        if attn_mask is not None:
            scores.masked_fill_(attn_mask, self.mask_value)

        attn = nn.Softmax(dim=-1)(scores)
        context = torch.matmul(attn, V)  # [batch_size, n_heads, len_q, d_v]
        return context, attn

核心代码是这一句:

 scores = torch.matmul(Q, K.transpose(-1, -2)) / np.sqrt(d_k)

将scores除以d_k的平方根(np.sqrt(d_k)),这就是所谓的缩放,可以避免得分过大或过小。

通过这种方式,Scaled Dot-Product Attention可以计算出Query和Key之间的相似度,同时考虑了Value矩阵对最终结果的影响,进而实现了注意力机制的作用。

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DHCP(动态主机配置协议)是一种应用层协议,用于在 TCP/IP 网络中自动分配 IP 地址和其他网络配置信息,以便于快速部署和管理网络。DHCP 中继是一种网络设备,它可以在不同的子网之间转发 DHCP 请求和响应消息,从而允许 DHCP 服务器为不同子网的客户端分配 IP 地址。 DHCP 中继的原理是,在不同的网络(例如不同的 VLAN 或子网)中配置 DHCP 中继代理,并将它们连接到 DHCP 服务器所在的网络。当客户端请求 DHCP 服务器以获取 IP 地址时,DHCP 中继代理会将该请求转发到 DHCP 服务器。DHCP 服务器接收到请求后,会为客户端分配一个可用的 IP 地址,并将响应消息发送回 DHCP 中继代理。DHCP 中继代理再将响应消息转发到客户端所在的网络,在该网络中,客户端接收到响应消息并配置其网络设置。 配置 DHCP 中继代理需要在网络设备上进行以下步骤: 1. 配置 DHCP 中继代理的 IP 地址和子网掩码。 2. 配置代理接口所在的 VLAN 或子网。 3. 配置 DHCP 服务器的 IP 地址。 4. 启用 DHCP 中继代理功能。 例如,Cisco 设备可以使用如下命令配置 DHCP 中继代理: ``` interface vlan 10 ip helper-address 10.0.0.1 ``` 其中,`interface vlan 10` 配置 VLAN 10,在该 VLAN 中启用 DHCP 中继代理功能。`ip helper-address 10.0.0.1` 配置 DHCP 服务器的 IP 地址为 10.0.0.1。 配置 DHCP 服务器时,需要在服务器上进行以下步骤: 1. 配置 DHCP 服务器的 IP 地址和子网掩码。 2. 配置 DHCP 租用地址池,指定 DHCP 服务器可以分配的 IP 地址范围。 3. 配置其他网络配置信息,如网关、DNS 服务器等。 DHCP 服务器的配置和管理可以使用各种软件工具和操作系统的内置功能来完成。例如,在 Windows Server 上可以使用 DHCP 服务器角色来配置和管理 DHCP 服务器。在 Linux 上,可以使用 ISC DHCP 服务来实现 DHCP 服务器功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值