seq2seq模型
seq2seq本质上是一种encoder-decoder的框架,最典型的应用就是机器翻译问题,模型先使用编码器对源语言进行编码,得到固定长度的编码向量,然后在对该编码向量进行解码,得到对应的翻译语言向量。因为输入和输出都是序列数据,因此又被称为sequence-to-sequence,简称seq2seq,目前应用最多的编码解码器是RNN(LSTM,GRU),但编码解码器并不仅限于RNN。
传统的几种seq2seq方式
1.输入
2.如果decoder同样也是个RNN结构的话,那么可以利用上一时刻的输出来帮助预测。encoder的编码赋值给了decoder的初始hidden。decoder的初始标签是
3.结合了前两种模式,decoder每一时刻的输入不仅有来自encoder的编码向量,还有上一时刻的输出,同时还有上一时刻的hidden。
4.带有attention机制的编解码,encoder的RNN每一步都有一个输出 [公式] ,给每一个 [公式] 一个权重,计算带权求和的向量。这样做的好处是,每预测一个词都和原文本的部分最相关。
attention编解码的过程
输人:
embedding以及上一个时间点的hidden state。在计算
it算每一个encoder的hidden states的权重:
・ 最后得到context vector,是对于encoder输出的hidden states的一个加权平均
- 将context vector和decoder的hidden states串接起来
・计算最后的输出概率:
关于上式中的score方法:
(1) dot score function: 输入是encoder的所有hidden states H: 大小为(hid dim,seq length)。decoder在一个时间点上的hidden state, s: 大小为(hid dim, 1)。
・ 旋转H为(seq length, hid dim)与s做点杰得到大小为(sequence length,
1)的分数。
・ 对分数做softmax得到合为1的权重。 将H与上一步得到的权重做点乘得到大小为(hid dim, 1)的context vector。
(2) General score function: 输入是encoder的所有hidden states H: 大小为(hid seq length), decoder在一个时间点上的hidden state, s: 大小为(hid dim_2, 1), 此处两个hidden state的纬度不一致。
旋转H为(seq length, hid dim1)与Wa(大小为hid dim_1,hid dim_2)做点乘,再和s做点乘得 到一个大小为(seq length, 1)的分数。
・ 对分数做softmax得到一个合为1的权重。 将H与第二步得到的权重做点拜得到一个大小为(hid dim_1, 1)的context vector。
attention机制的原理
神经学中的注意力机制有两种:
(1)自上而下的有意识的注意力,称为聚焦式注意力(Focus Attention),聚焦式注意力是指有预定目的,依赖任务的,主动有意识地聚焦与某一对象的注意力。
(2)自下而上的无意识的注意力,称为基于显著性注意力(Saliency-Based Attention)。是由外界刺激驱动的注意,不需要主动去干预,和任务无关。如果一个对象的刺激信息不同于其周围信息,一种无意识的“赢者通吃”(Winner-Take-All)或者门控(Gating)机制就可以把注意力转向这个对象。
当你在听你的朋友说话时,你专注于你朋友的说话而忽略了周围其他的声音,这就是聚焦式注意力,当你在其他周围声音中听到了感兴趣的词时,你会马上注意到,这是显著性注意力。
给定N组信息输入
注意力分布:为了从N个输入向量
给定一个和任务相关的直词向量q, 用注意力变量
- 加性模型:
- 点积模型:
- 缩放点积模型:
- 双线性模型:
为可学习的参数, 为输入向量的维度。
点积模型在实现上更好的利用了矩阵乘积, 从而计算效率更高, 但是当输入向量的维度d比较高, 点积模型的值通常有比较大的方差, 从而导致softmax函数的梯度比较小,缩放点积模型可以较好 的解决此问题。双线性模型可以看作是一种泛化的点积模型, 假设双线性模型公式中 原式可写为 分别对X和q进行线性
变换后计算点积, 相比与点积模型, 双线性模型在计算相似度时引入了非对称性。
加权平均:注意力分布 可以理解为在给定任务相关的查词q时,第i个输入向量受关注的程 度。
硬性注意力
软性注意力其选择的信息是所有输入信息在注意力分布下的期望。还有一种只关注到某一位置上的 信息,叫做硬性注意力(Hard Attention)。
选择最高概率的输入信息:
硬性注意力缺点是基于最大采样或随机采样的方式来选抨信息。因此最终的损失函数与注意力分布 之间的函数关系不可导,无法使用反向传播算法进行训练。为了使用反向传播算法,一般使用软性 注意力来代替硬性注意力。
键值对注意力
可以用键值对(key-value pair)格式来表示输入信息,其中 “键” 计算注意力分布
用
其中
v1.5.2