标签:net 追踪 不同 sig 最大的 技术 softmax href 获得
每个词在编码器端,经过双向LSTM,在解码端编码层的隐藏状态和解码器的隐藏状态,做一个加法attention:
\[
e_i^t = v^Ttanh(W_hh_i+W_ss_t+b_{attn})
\]
\[ a^t = softmax(e^t) \]
其中:
得到上下文向量\(h_t^*\):
\[
h_t^*=\sum_ia_i^th_i
\]
其中:
有上下文向量和解码的隐藏状态,经过两层线性层,得到最后的词表概率分布
\[
P_{vocab}=softmax(V^`(V[s_t,h_t^*]+b)+b^`)
\]
在预测阶段选择概率最大的那个词,作为解码端的输出。在训练的时候,通过求负对数函数,得到损失函数,令损失函数最小:
\[
loss_t = -logP(w_t^*)
\]
整个句子的损失为:
\[
loss = \frac{1}{T}\sum_{t=0}^{T}loss_t
\]
Seq2Seq的模型结构在摘要的生成方面提供了可能。
缺点
1、无法生成OOV,只能生成词汇表的词
2、会产生错误的事实,比如姓名之间,Amy可能变成Bob;
3、自我重复,如:贴膜,贴膜,质量比较高,贴膜,质量比较高,贴膜,质量比较高,贴膜,质量比较高,贴膜,质量比较高,贴膜,质量比较高,贴膜,质量
一句话概括
将decoder端的softmax加上源端的attention分布的混合概率,两部分的权重依赖\(p_{gen}\),该值在0~1,越大,表示越依赖生成部分。
指针生成网络是baseline和指针网络的混合,它可以通过指向去复制,也可以从固定的词表当中去生成词汇。注意力分布的计算和上下文向量的计算不变。
多增加了一个生成概率,属于0~1.对于每一个解码时刻,都存在这样的上下文向量,解码状态隐藏层和解码的输入共同计算概率:
\[
P_{gen}=sigmoid(W_{h^*}^Th_t^*+W_s^Ts_t+W_x^Tx_t+b_{ptr})
\]
其中:
最后词\(w\)的概率由词表概率和源端(encoder的输入)的attention分布共同获得,如果\(w\)未在源端出现,则\(a\)为0。在预测阶段,输出一个概率分布,其维度是词表长度加上源端句子中未出现在词表冲的单词个数。
\[
P(w)=P_{gen}P_{vocab}(w) + (1-P_{gen})\sum_{i:w_i=w}a_i^t
\]
其中:
因为指针网络控制输出是copy自原文还是从字典生成得到的,如果词w没有在源端,所以我们attention部分的权重应该为0;w若是属于oov,那么\(p_{gen}=0\) .
笔者极端理解情况:假设原始输入的是道奇........,预测是丰田,丰田是个oov词,\(p_{gen}=0\),丰田原文又没有出现,\(a_i^t=0\),那这样是不是就又出现
在序列到序列的模型中,重复问题是一个普遍问题,尤其长文本摘要生成任务中。在我们的coverage模型中,使用了一个\(c^t\),其代表了当前解码时刻,\(t\)之前的所有注意力分布的和。
\[
c^t=\sum_{t^`=0}^{t-1}a^{t^`}
\]
\(c^0\)是个零向量,在计算attention得分的时候,我们将词向量作为新的输入.
\[
e_i^t=v^Ttanh(W_hh_i+W_ss_t+w_cc_i^t+b_{attn})
\]
也需要增加loss惩罚项:
\[
covloss_t=\sum_imin(a_i^t,c_i^t)
\]
\[ loss_t = -logP(w_t^*)+\lambda\sum_imin(a_i^t,c_i^t) \]
以第一时刻为例,\(c_1\)表示的是\(a_0\),那么\(a_0\)跟\(a_1\)当中选择最小的作为loss.如果\(a_0\)和\(a_1\)关注的都是同样的分布,那么loss就会比较大,如果他们关注的是不同的分布,因为选择的是两个中最小的一个,所以这样loss会比较小.目的就是想让他每一时刻关注的分布是不一样的,这样避免重复.
问答摘要是人为做出来的,具有主观性,有时候模型生成的是正确的,但是和参考摘要去匹配却只有很低的分.
训练参数减少是因为有了copy功能,解决了oov问题,我们的vocab就会更小,所以较少了训练参数量.
https://blog.csdn.net/ganxiwu9686/article/details/87521054
标签:net 追踪 不同 sig 最大的 技术 softmax href 获得
原文地址:https://www.cnblogs.com/monkeyT/p/12337556.html