type
status
date
slug
summary
tags
category
icon
password
介绍两者的网络架构和原理
Transformer
网络结构
整体为Seq2seq架构:
1、编码器:【Embedding】+【位置编码】+【多头自注意力+残差+归一化】+【位置前馈网络+残差+归一化】
2、解码器:【Embedding】+【位置编码】+【掩码多头自注意力+残差+归一化】+【多头条件注意力+残差+归一化】+【位置前馈网络+残差+归一化】+【全连接层】+【Softmax】
位置前馈网络
位置前馈网络就是一个全连接前馈网络,每个位置的词都单独经过这个完全相同的前馈神经网络。其由两个线性变换组成,即两个全连接层组成,第一个全连接层的激活函数为ReLU激活函数。可以表示为:
位置编码
与循环神经网络不同的是,注意力机制因为并行计算,放弃了顺序操作,为了表示序列中词的顺序信息,需要在输入中添加位置编码,来注入绝对的或相对的位置信息。
位置编码一般使用正弦和余弦函数:
是位置
是维度
是总维度
这样编码的好处是任意一个位置的信息都可以被线性表示,允许模型学习输入序列中的位置信息。具体数学原理请查看引用文章。详解自注意力机制中的位置编码(第一部分) - 知乎 (zhihu.com)
掩码(Mask)
有一些生成的Attention张量中的值计算有可能已知了未来信息而得到的,未来信息被看到是因为训练时会把整个输出结果都一次性进行Embedding,但是理论上解码器的的输出却不是一次就能产生最终结果的,而是一次次通过上一次结果综合得出的,因此,未来的信息可能被提前利用。所以,Attention中需要使用掩码张量掩盖未来信息。
即在Decoder输出第1个out时,只能获取第1个信息
输出第2个out时,只能获取第1、2个信息。
输出第3个out时,只能获取第1、2、3个信息。
训练时,由于是并行训练,需要提前对不同位置的信息进行遮蔽;
而预测时,由于是串行输出,每次输出时并不会涵盖未来信息。
掩码发生的位置在decoder的第一个多头注意力机制中,对的结果(softmax之前)进行遮蔽。
得到后,与矩阵V相乘,得到输出Z,此时每一个只包含i之前的信息。
Informer
网络结构
Informer模型是一种用于长序列时间序列预测的Transformer模型,它与传统Transformer模型相比,具备以下几个独特的特点:
- ProbSparse自注意力机制:Informer引入了ProbSparse自注意力机制,该机制筛选出最重要的query,降低计算复杂度。
- 自注意力蒸馏:通过减少级联层的输入,自注意力蒸馏技术可以有效处理极长的输入序列,提高了模型处理长序列的能力。(蓝色部分)
- 生成式解码器:Informer采用生成式解码器,可以一次性预测整个长时间序列,而不是逐步进行预测。这种方式大大提高了长序列预测的推理速度。(紫色部分)
LSTM测试效果
LSTM模型的预测效果随着时间变长,性能迅速变差,MSE迅速上升。
ProbSparse
思路:设计一种自适应的方法,只选择重要的query,降低Q的维度,减少Attention计算量。
对Attention map进行统计,发现它是服从一个Long-Tail分布的。
对每一个q进行分布的观察,可以将query状态区分为Active状态和Lazy状态。
步骤:
1、使用概率分布方法来进行状态区分,p为注意力概率分布,q为均匀分布(接近lazy分布)。
2、利用KL散度,对p和q分布的距离进行度量,来判断当前query的active强度。
3、通过Active强度来选择top U个query作为有效query。
仅解读思路,实现过程存在大量公式推理和推导,不详细进行解读。
自注意力蒸馏
通过两种方式完成蒸馏,步骤如下:
1、自注意力结果经过conv1d和maxpool1d层,进行数据蒸馏,生成特征矩阵1。
2、用初始序列的一半建立replicas,经过相似的中间操作,生成特征矩阵2。
3、两矩阵拼接得到最终矩阵。
生成式编码器
在decoder的中,使用和的拼接的方式进行输入,部分用掩码遮蔽,一次性输出+长度的最终结果。
示意图如下:
📎 参考文章
- 作者:Hemon
- 链接:https://hemonn.com/article/7391b105-2b8a-425e-8665-85f55e91a703
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。