2025年指针生成网络(PGN)的简单总结

指针生成网络(PGN)的简单总结基于 RNN 的 seq2seq 好处 用于文本生成 可以用于抽象总结 坏处 不准确的复制事实细节 无法处理 OOV 生成文本有重复倾向 长文本下效果效果倾向于 language model PGN 分析 通过指针从原文复制单词 有效处理 OOV

大家好,我是讯享网,很高兴认识大家。

基于RNN的seq2seq:

好处: 用于文本生成,可以用于抽象总结。

坏处: 不准确的复制事实细节;无法处理OOV;生成文本有重复倾向;长文本下效果效果倾向于language model

PGN分析:

通过指针从原文复制单词,有效处理OOV,保留产生新词的能力。通过COVERAGE机制对重复单词给予惩罚。

1. seq2seq with attention 过程

i n p u t   x = ( x 1 , x 2 , . . . , x T x ) input \ x = (x_1,x_2,...,x_{T_x}) input x=(x1,x2,...,xTx)

o u t p u t   y = ( y 1 , y 2 , . . . , y T y ) output \ y = (y_1,y_2,...,y_{T_y}) output y=(y1,y2,...,yTy)

t时刻的enc_hidden: h t = R N N e n c ( x t , h t − 1 ) h_t = RNN_{enc}(x_t,h_{t-1}) ht=RNNenc(xt,ht1)

t时刻的dec_hidden: s t = R N N d e c ( y ^ t − 1 , s t − 1 ) s_t = RNN_{dec}(\hat y_{t-1},s_{t-1}) st=RNNdec(y^t1,st1)

对于整个输入序列 x 1 . . . x T x x_1...x_{T_x} x1...xTx,上下文向量Context vector c i = ∑ j = 1 T x α i , j h j c_i = \sum_{j=1}^{T_x} \alpha_{i,j}h_j ci=j=1Txαi,jhj

α \alpha α是 enc_hidden的权重: α i , j = e x p ( e i , j ) ∑ k = 1 T x e x p ( e i , k ) = s o f t m a x ( e i , ) \alpha_{i,j} = \frac{exp(e_{i,j})}{\sum_{k=1}^{T_x}exp(e_{i,k})} = softmax(e_{i,}) αi,j=k=1Txexp(ei,k)exp(ei,j)=softmax(ei,)即注意力得分的分布

注意力得分 : e i , j = s c o r e ( s i , h j ) = v T t a n h ( W h h j + W s s i + b a t t n ) e_{i,j} = score(s_i, h_j)=v^Ttanh(W_hh_j + W_ss_i + b_{attn}) ei,j=score(si,hj)=vTtanh(Whhj+Wssi+battn) 由 dec_hidden 和 enc_hidden 得出 ,即每个词 x i x_i xi相对于 y j y_j yj的注意力得分

final dec_hidden s ^ t = t a n h ( W c [ c t ; s t ] ) \hat s_t = tanh(W_c[c_t;s_t]) s^t=tanh(Wc[ct;st])

p ( y t ∣ y < t , x ) = s o f t m a x ( W s , s ^ t ) = P v o c a b ( w ) p(y_t|y_{<t},x) = softmax(W_s,\hat s_t) = P_{vocab}(w) p(yty<t,x)=softmax(Ws,s^t)=Pvocab(w)

时间步长t的损失 l o s s t = − l o g P ( y t ∣ y < t , x ) loss_t = -logP(y_t|y_{<t},x) losst=logP(yty<t,x)

整个序列损失 l o s s = 1 T ∑ t = 0 T l o s s t loss=\frac{1}{T}\sum_{t=0}^Tloss_t loss=T1t=0Tlosst

一句话描述整个流程:
计算t时刻的概率分布:
encoder端的hidden与t时刻decoder的hidden通过score function计算得到encoder端每个词在t时刻的注意力得分,该得分经过softmax即为注意力分布,该注意力分布与encoder端的hiddent相乘即为上下文向量context vector,这个context vector与t时刻旧的decoder hidden通过全连接层生成新的t时刻 decoder hidden用于计t时刻最后的概率分布。这个新的hidden也用于传入下一时刻的deocder


讯享网

2. PGN如何解决OOV问题?

image-20200915191555283

对于每个decoder time step t,生成一个 p g e n ∈ [ 0 , 1 ] p_{gen} \in [0,1] pgen[0,1]

p g e n p_{gen} pgen决定的是从词汇表生成的概率,公式为

p g e n = s i g m o i d ( w c T c t + w s T s t + w x T x t + b p t r ) p_{gen} = sigmoid(w_c^Tc_t + w_s^Ts_t + w_x^Tx_t + b_{ptr}) pgen=sigmoid(wcTct+wsTst+wxTxt+bptr)

所以呢

P ( w ) = p g e n ∗ P v o c a b ( w ) + ( 1 − p g e n ) ∗ ( ∑ i : w i = w α i , t ) P(w) = p_{gen}*P_{vocab}(w) + (1-p_{gen})*(\sum_{i:w_i=w}\alpha_{i,t}) P(w)=pgenPvocab(w)+(1pgen)(i:wi=wαi,t)

Note:

如果w是oov,则 P v o c a b ( w ) = 0 P_{vocab}(w)=0 Pvocab(w)=0, 如果w未出现在序列中,则 ( ∑ i : w i = w α i , t ) = 0 (\sum_{i:w_i=w}\alpha_{i,t})=0 (i:wi=wαi,t)=0

优势在于PGN是的从原文本中生成单词更容易,只需要足够多的attention,设置可以复制原文本中非正式单词,也允许我们使用更小规模词汇表,是的训练更快,资源更少,一定程度上解决OOV问题,但是对于既不在词表,也不再原文中的词,pgn也无能为力

3. coverage机制解决词语重复问题

c v r g i , t = ∑ t ′ = 0 t − 1 α i , t ′ cvrg_{i,t} = \sum_{t'=0}^{t-1}\alpha_{i,t'} cvrgi,t=t=0t1αi,t

理解为截止到t时刻的对源文档单词的分布的累加,也就是这些单词从关注机制中接收到的覆盖程度。 t=0时刻,为零向量。

e i , t = v T t a n h ( W h h i + W s s t + w c c v r g i , t + b a t t n ) e_{i,t} = v^Ttanh(W_hh_i+W_ss_t+w_ccvrg_{i,t}+b_{attn}) ei,t=vTtanh(Whhi+Wsst+wccvrgi,t+battn)

w c w_c wc跟v长度一样。下一次选择前,应用了以前注意力的信息,使得attention机制更不容易重复关注同一个词。

同时定义coverage loss:

c o v l o s s t = ∑ i m i n ( a i , t , c v r g i , t ) covloss_t = \sum_imin(a_{i,t},cvrg_{i,t}) covlosst=imin(ai,t,cvrgi,t)

l o s s t = − l o g P ( w t ) + λ ∗ c o v l o s s t loss_t = -logP(w_t) + \lambda * covloss_t losst=logP(wt)+λcovlosst

小讯
上一篇 2025-03-09 20:16
下一篇 2025-03-04 13:06

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/121649.html