0
点赞
收藏
分享

微信扫一扫

文本生成:Transform

飞鸟不急 2022-03-17 阅读 69

1. 模型原理

Transform是一种基于全连接神经网络的编码器-解码器(encoder-decoder)架构实现,它由输入模块、编码器模块、解码器模型和输出模型四部分组成。其结构如下图所示:
请添加图片描述

图1 Transform模型

关于Transform的基础知识介绍,网上已有许多公开的资料。读者可自行查阅学习。本文默认大家已具备Transform相关的基础知识,文本将讨论其中值得注意的四个问题:

  1. Transform中有几种mask机制,它们是如何去除小批量样本padding操作引入的噪声的?
  2. 自注意力机制为什么不直接使用输入的特征向量,而要使用其线性变换的结果来计算自注意力?
  3. 什么是layer normal,为使用它而不使用batch normal?
  4. 绝对位置编码和相对位置编码

1.1 Transform中的mask机制

Transform中有三种不同的mask机制:inputs padding mask、look ahead mask和outputs padding mask

其中,inputs padding mask用于编码器和解码器中的Multi-Head Attention计算,通过与注意力得分矩阵元素对位相乘,使注意力全部集中于输入序列中有效位置的元素,从而消除输入序列padding值引入的噪声干扰

look ahead mask用于解码器中Mask Multi-Head Attention计算,它在负责消除标签序列padding值引入的噪声干扰的同时,也是将文本生成循环能转为批量进行的保障:它在输入全量的标签序列时,利用mask矩阵实现仅预测时刻之前的部分序列被解码器端可见的效果;outputs padding mask用于动态损失函数计算,负责消除残差结构直连项,绕开Self-Attention层引入的标签序列padding值噪声干扰。所以look ahead mask与outputs padding mask共同作用,彻底消除了标签序列padding值引入的噪声干扰

1.2 Self-Attention中输入特征向量线性变换的必要性

若不使用线性变换,则

每个token对应的q,k,v向量都是一样的,那么此token对所有token所计算出的注意力分布中就只会

做dot product的时候,会出现和自身的k出来的结果是最大的,而其他的就不那么大,再经过softmax之后,则导致token只会attend 到自身,对于其他的token的attention作用非常小。self attention 的最主要的作用就是利用其他的词的信息增强目标词的信息表征能力。如果不能attend to 其他的token的话,self attention的作用就丧失了。

1.3 Layer Normalizationv.s. Batch Normalization

layer normalization 和 batch normalization 都是样本归一化方法,即:每一条样本都经过(x-mean) / std。
它们的区别在于归一化计算所使用的均值(mean)和方差(std)不同,如下图所示:
在这里插入图片描述

图2 LN与BN中均值、方差的计算方法

其中batch normalization更适合处理图像数据的归一化问题,而layer normalization更适合处理序列数据的归一化问题

1.4 位置编码

位置编码有两种方法:functional encoding和parametric encoding。其中,functional encoding:这个是指的是通过特定函数的方式,将输入的位置idx变换为embedding。而,parametric encoding:指的是通过embedding lookup的方式,让模型自己学习位置的embedding。

这两种方式效果相似,functional encoding可减少模型需学习参数,parametric encoding可以减少人工设定的超参数,所以样本量较少时推荐使用functional encoding方法,而样本量充足时优先使用parametric encoding方法成本更低。(Transformer使用的是functional absolute positional encoding,BERT使用的是 parametric absolute positional encoding。)

2. 代码实现

2.1 基于TensorFlow框架的实现

2.2 基于Pytorch框架的实现

举报

相关推荐

受控文本生成的总结

0 条评论