transforms

batch norm是列标准化,layer norm是行标准化
在这里插入图片描述
transforms的encoder,这里省略了一些东西。每一个block都是输入一段向量,然后输出一段向量。每一个block不仅仅是一层layer。每一个block所做的事情,大概是先输出一段向量,做self-attention,考虑整个seq,然后输出。再将输出输入到全连接层中,最后的输出就是block的输出。
在这里插入图片描述
在transforms的encoder中,所做的事更为复杂。在经过self-attention后,我们在输出a上加上了自身b。将相加的结果,也就是residual,再经过规范化。这里用的规范化不再是batch normalization 而是layer normalization。将规范化后的结果作为全连接层的输出,再输出的时候,仍然要加上自身。最后在经过规范化,就是block的输出。
在这里插入图片描述
在输入的时候,除了词向量之外,还需要加入位置编码,用来确定其相对位置。
在这里插入图片描述
transforms的解码器,将encoder的结果输入到解码器中,然后第一次输入开始字符作为翻译的开始。在经过softmax之后,可以在词典上找到概率最大的文字,作为输出。将结果作为输入再次放入解码器中,来预测下一次的输出。
在这里插入图片描述
这里的解码器相较于encoder,加入了Masked self-attenton。

在这里插入图片描述
以往在计算b3的时候,需要计算q3与k1,k2,k3,k4相乘的结果,在Masked self-attenton中,我们只计算a3之前的值,也就是a1,a2,a3。因为在预测的之后是从前到后,在计算b3的时候,是不知道a4的值。
在这里插入图片描述
让decoder可以输出结束符号。当输出结束的时候,解码器自动停止生成。
在这里插入图片描述

NAT并不是一次产生一个字,而是一次把一整个句子都产生出来。NAT的输出可能是一排的开始符号,然后产生一排结果作为输出。而这个输出的个数,我们是不知道的。我们可以另外新建一个网络,在输入encode的结果之后,输出一个数字,代表预测的字数。另外一种,就是估计一下可能的字数,比如可能预测300字,让decode直接输出300个字,然后观察其中是不是有符号,在结束符号右边的,统统舍去。
NAT的好处就是可以一次产生完整的句子。
在这里插入图片描述
上述图片,表述了encode和decode之间是如何交互运作的。在decode中,首先输入一个字符,代表开始。将生成的向量乘上一个矩阵做一个Transform。得到一个query,称为q。将q与a1,a2,a3产生的k相乘,计算attention的分数。得到的α1,α2,α3,可能已经经过softmax之后的。再乘以v,相加得到V’,最后在经过全连接层后输出。mask可以帮助实现这个过程的并行化,上述是是顺序进行的,实际是并行的。
在这里插入图片描述上述是训练过程。其中每个字使用one-hot向量来表示,我们得出的结果一个分类,是每个字的概率。我们使用交叉熵来计算两者的损失,进而更新参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值