动手学深度学习67 自注意力

1. 自注意力

在这里插入图片描述
在这里插入图片描述
k 窗口的大小
每个kernel窗口都可以并行计算,GPU计算
最长路径:信息是怎么传递的 filed–视野
自注意力适合处理比较长的文本,无视距离,可以看比较长的文本,但是计算复杂度高【代价】
在这里插入图片描述
在这里插入图片描述
位置信息加到输入数据里面。 行:样本
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 代码

核心:

class PositionalEncoding(nn.Module):
    """位置编码"""
    def __init__(self, num_hiddens, dropout, max_len=1000):
        super(PositionalEncoding, self).__init__()
        self.dropout = nn.Dropout(dropout)
        # 创建一个足够长的P
        self.P = torch.zeros((1, max_len, num_hiddens))
        X = torch.arange(max_len, dtype=torch.float32).reshape(
            -1, 1) / torch.pow(10000, torch.arange(
            0, num_hiddens, 2, dtype=torch.float32) / num_hiddens)
        self.P[:, :, 0::2] = torch.sin(X)
        self.P[:, :, 1::2] = torch.cos(X)

    def forward(self, X):
        X = X + self.P[:, :X.shape[1], :].to(X.device)
        return self.dropout(X)

3. QA

在这里插入图片描述
1 序列长度是n,不是n维。最长路径:第一个元素到最后一个元素,要经过n/k层,才能看到这两个元素信息。
2 QA系统。答案在文本里,效果比较好;需要推理,效果不太好。
3 每一行是样本,每一列对应特征每一维的encoding
4 指实际中的序列–i。对每个样本加了独特的编码,每个样本不同的位置加的是同样的东西。
5 一样,从0开始。
6 不需要学习,p是生成的。对输入做变换,与输出无关
7 bert用的可学习方案
8 后面讲
9 可以。bert会讲,把p随机初始化包成nn.parameter即可,bert的做法。
在这里插入图片描述
10 可以,就是网络层layer
11 有可能会丢,希望输出也会有
12 bert会讲
13 位置编码可以设成可学习的东西
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值