写了上一篇,就必有这一篇~
1. TRM在做啥?
我们输入一个I love you,输出我爱你,输入一段声音,输出得到你真美。输入长度跟输出长度没有决定性的关系,由机器决定输出的是什么。
2. TRM原理
2.1 TRM模型结构
2.2 Encoder
encoder是由6层独立的layers构成。每层由两个子层,就是上图左边的两个。第一个是一个多头 self-attention结构。第二个是一个简单的基于点的全连接前向网络。
输入b经过self-attention后得到a,借鉴了残差网络的思想使输入跟self-attention的输出相加得到结果在输入至 layar Normalization,得到的输出才是全连接网络层的输入,在经过一个残差连接来连接输出和输入。并且对输出的结构层上做了LayerNorm,得到的输出才是一个block的输出。这个block会重复n次。
2.2.1 Layer Norm
Norm的意思就是在后面跟了一个归一化层。
为什么要使用层归一化: 一是解决梯度消失的问题,二是解决权重矩阵的退化问题,可以更好的解决梯度爆炸,梯度消失在深层网络中的问题,因为逐层进行了归一化,可以使得梯度传导的更稳定。残差路径上传来的向量和Self-Attention计算得到的向量相加后进行Layer-Normalization,即层标准化。Layer Norm对同一个样本同一层的所有神经元进行标准化,使它们满足标准正态分布。LayerNorm的主要思想是:是在每一个样本(一个样本里的不同通道)上计算均值和方差,而不是 BN 那种在批方向计算均值和方差。
2.2.2 BatchNorm
主要思想:在每一层的每一批数据(一个batch里的同一通道)上进行归一化 。Batch Norm则是对Batch内不同样本的同一个神经元所有值进行标准化。
2.2.3 LN和BN的区别
理解下来就是,比如说两个sequence,你是天边最美的云彩和让我把你留下来哈哈,LN是在自己的句子里计算均值和方差,而BN是你和让做均值和方差,所以BN不可,LN更好。
2.2.4 小总结
输入inputs,得到input embedding,然后碰到位置嵌入,相加作为整体的输入,遇到一个多头注意力机制,计算之后,与输入一起经过残差得到一个结果,在经过一个LN得到输出结果,再碰到了一个两层的全连接层,在经过残差,输出结果。
2.3 Decoder
Decoder也是由6层的独立层组成,用了三个子层。用于对encoder的输出做multi-head self attention。具体结构都一样,也是在子层上应用了残差连接,再在子层输出加上一个LayerNorm。但是论文在decoder中的multi-head self attention 做了一个mask修改。目的是为了防止序列之后的位置被用于预测前面的位置信息,造成对模型的信息泄漏。
2.3.1 Autoregressive
Decoder的input从begin开始,得到输出,再由这个输出进行输入得到下一个输入,即每一个输出都是下一次的输入,所以当decoder在产生一个句子的时候,有可能是错误的,因为他看到的是自己的输出。为了停止需要一个END。
2.3.2 masked Self-attention:
之前我们经过Self-attention输出的每一个b是都考虑了整个句子的咨询,但masked Self-attention的b1只能考虑a1的咨询,产生b2考虑了a1,a2的咨询,产生b3的时候考虑了a1,a2,a3的咨询,产生b4可以考虑整个句子的咨询。
2.3.3 Non-autoregressive
一次性输出句子,即输入一整排的begin,输出一整排句子
2.4 Encoder与Decoder之间如何传播
实际运作过程:decoder凭借产生一个q,去encoder抽取咨询做接下来decoder中全连接层的input,然后接下来在产生第二个输入机。
scheduled Sampling:测试的时候给decoder输入一些错误的东西,训练的时候decoder才会输出正确的,才会训练的更好。
2.5 输出
首先经过一次线性变换,然后Softmax得到输出的概率分布,然后通过词典,输出概率最大的对应的单词作为我们的预测输出。
?
|