Get To The Point: Summarization with Pointer-Generator Networks
tags: NLP
,S2S
,Pointer Network
,Summary
,Loss
主要目的
因為在s2s時遇到人名或是地名,可能遇到OOV問題而只輸出[UNK]這種輸出。而Pointer Generator Network則是從原本輸入的某一些片段直接擷取過來當成輸出,彌補字典集限制的問題。
Extractive(pointing),Abstractive(generating)
傳統S2S問題,可能複製同樣的錯誤,重複同樣錯誤的字詞
提出:
- hybrid pointer-generator network
- Coverage用來追蹤有哪一些已經被summary model提出過了,確保不要再被重複提出Modeling Coverage for Neural Machine Translation
在CNN/Daily Mail Summarization 有SOTA的2 ROUGE 分數
一般來說Extractive 會有較好的效果且較簡單保證了基礎以及語法上的正確性。但是對於高質量的抓取摘要至關重要的能力:釋義,概括,知識整合(knowledge),只在abstractive network中可能。
RNN使得abstractive summary 可行,但是會有不斷重複某同樣意義的片段以及 OOV的問題
現今的abstractive專注在headline generation tasks(使得句子被總結成headline),而作者認為長度較長且不重複片段的summary較有挑戰性且更有用。
Models
S2S attentional(Baseline)
在encoder(bilstm),decoder(undirctional LSTM)
每一個token$w_i$對應一個hidden state$h_i$
在每個步驟t上,decoder(單層單向LSTM)都會接收到前一個單詞的token embedding(訓練時,這是參考摘要的前一個單詞(Teacher forcing);在測試時,它是解碼器發出的前一個單詞,並具有解碼器狀態$s_t$。
對應的attention distribution可被當成是從source words中找出的word probability(decoder產出下一個字),接下來用對應的attention weight與對應的hidden state加權總和當成上下文vectpr$h^_t=\sum_ia^t_ih_i$(第t個step的sentence vector)
把 $h^t$和decoder的state$s_t$在經過兩層linear layer來產出 $P{vocab}$
P(w)是詞彙表中所有單詞的概率分佈,提供了預測單詞w的分佈
loss:negtive log likelihood of target word $w^*_t$
Pointer-genretator
前面的Baseline加上pointer的hybrid model,可以從source text copy 或是generate words from a fixed vocabulary。
attention distribution and context vector $h^_t$都和baseline的計算一樣。Note:pgen$\in[0,1]$(由context vector $h^t$和decoder state $s_t$以及decoder input $x_t$計算而來)
而$p{gen}$用來軒則下一個toekn是要generating from vocabulary by sampling from ‘$P_{vocab}$’或是 copying from input sequence by sampling from attention distribution ‘$a^t$’
對於每個文檔,’extended vocabulary’表表示詞彙表的聯集,以及所有出現在source text中的單詞。
當w 是OOV的單詞,那麼對應的$P_{vocab}(w)=0$,若w 沒有在對應的source document那麼$\sum_{i:w_i=w}a^t_i=0$
產生OOV字是pointer network 的主要優點之一,與之相對的baseline只能夠根據預設的vocabulary dictionary
而loss function 跟 baseline 一樣 但相對的P(w)是用這邊有的pgen 來選distributrion
Pointer + coverage
“重複片段”是S2S的一個常見問題,再生成多序列句子的文本時最為常見。在這裡,多新增一個”coverage vector”$c_t$(sum of attention distributions over previous decoder timesteps)
$c_t$是對於source text上的分佈,代表了目前這些單詞從注意力機制中接收到的”覆蓋(重複)“程度。Note $c_0$是”零向量“,因為在t=0的時候沒有覆蓋到任何source text。
”coverage vector“是作用於注意力機制的額外輸入
$e^t_i=v^Ttanh(W_hh_i + W_ss_t+w_cc^t_i+b_{attn})$
$a^t = softmax(e^t)$
This should make it easier for the attention mechanism to avoid repeatedly attending to the same locations, and thus avoid generating repetitive text.
作者說這樣可以避免重複關注相同位置,來避免生成重複的文本(why?)
之後再多加上一個loss避免在同一個關注位置:對在同一個地方重複關注加上penality
這個loss function <=1,與Machine Translation中的 coverage loss不同,在MT中預設是1-1的翻譯;因此,弱勢coverage vector是>=1或是<=1就會有penality,而在這裡的summary coverage 則不用到1-1(uniform) ,所以作者這邊只對attention distribution中重疊的部分做penality來防止重複關注。最後對這個coverage loss添加權重。
Related Work
此方法近似Coverage Embedding Models for Neural Machine Translation 但是與CopyNet有幾處不同
- 計算了$p_{gen}$,與CopyNet通過共享的softmax函數引發競爭不同。
- 重複使用了以前出先過的attention distribution,但是CopyNet把他們當成是獨立的。
- 當在source text有一個單詞重複出現多次,把它相對應的attention distribution相加,而CopyNet沒有。
貢獻(對比CopyNet):
- 計算$p_{gen}$能有效的降低.控制生成或是複製單詞的概率,而不是只有提高。
- 這個方法較簡單。
- 提出pointer network 經常複製某一個在source text中多次出現得單詞
- Copy mechanism 對於準確複製稀有單詞(在字典集內)至關重要
- Mixture approach(copy distribution 和 vocabulary distribution)
- mixture LM+ copynet = abstracvite copying
- 用attention distribution update coverage 比其他用GRU update 來得有效且簡單(summing the attention distribution to obtain the coverage vector
- Coverage vs. Temporal attention(作用於NMT),attention distribution都會處以先前的總和,有效抑制重複注意力,但是破壞力太大,使得信號歪曲並且降低性能,假設coverge比Temporal attention更好,最好是通知注意機制以幫助其做出更好的決策,而不是完全忽略其決策。用相同task比較 coverage比temporal 有較高的ROUGE分數
Dataset
CNN/Daily Mail dataset
- online news (781 tokens avg)
- multi-sentence summaries(3.75 sentences or 56 tokens avg)
- Compare with A recurrent neural network based sequence model for extractive summarization of documents.
- 287,226 training pairs, 13,368 validation pairs and 11,490 testing pairs
- 直接對原始文本(或數據的非匿名版本)進行操作,認為這是一個值得解決的有利問題,因為它不需要預處理。(不對name entity 做 anonymized version of data)
實驗
256 hidden state
128-dim word embedding
Batch size = 16
50k vocabulary for source and target,因為pointer network 可以處理OOV words,原始的vocaulary size 可以較小
因為pointer 和coverage 只需要一點點的額外parameter
沒有pre train word embedding(learn during training)
Training using Adagrad(optimizer):Learning rate = 0.15 ,從0.1開始上升(SGD Adadelta Momentum Adam RMSProp)
Maximum gradient norm of 2
不用Regularization
在validation 上用early stop
在training 和test時只使用最大長度400的token size 且限制summary的最大長度=100,實驗發現這樣的刪減可以提升model的性能
在訓練時從被高度刪減的句子開始,然後再提升最大長度。在testing時summary 是透過”beam search”(size=4)產生
Baseline model要訓練較久4d,相對的pointer(作者的)訓練時間較短3d
Coverge loss 的$\lambda$=1,在3000次iter後從coverage loss從0.5下降到了0.2。在$\lambda$=2時減少了coverage loss 但是使得主要的loss上升了。
Ablation:在沒有loss function下訓練coverage model(但沒有效果)。在第一次就開始coverage而不是將其作為單獨的訓練階段,在訓練的早期階段,coverage干擾了主要目標,從而降低了整體績效。
y軸:重複片段出現%Results
eval by
standard ROUGE metric
- F1 scores for ROUGE-1,ROUGE-2 and ROUGE-L(word-overlap,bigram-overlap and longest common sequence between the reference summary and the summary to be evaluated)
- 使用pyrouge package.
METEOR metric
- eact match mode (rewarding only exact matches between words)
- full mode (which additionlly rewards matching stems, synonyms and paraphrases).
Comparsion
完整數據集
- Lead-3 (使用文章的前三個詞作為摘要)
- Abstractive:Abstractive Text Summarization using Sequence-to-sequence RNNs and Beyond
- Extractive:A recurrent neural network based sequence model for extractive summarization of documents.
下面的兩個lead-3會不同是因為一個是anony dataset
兩個基準模型在ROUGE和METEOR方面均表現不佳,實際上較大的詞彙量(150k)似乎無濟於事。 即使是性能更好的基準(詞彙量為50k)也會產生帶有幾個常見問題的摘要。 事實細節經常被錯誤地複制,經常用一個更常見的替代詞來代替一個不常見的詞(但在詞彙中)。
更具有災難性的是,摘要有時會變成重複的廢話,例如圖1中的基線模型產生的第三句話。此外,基線模型無法複製詞彙外的單詞(例如,圖1中的muhammadu buhari )。 所有這些問題的更多示例在補充材料中提供。
為何Baseline-3會較好也會在後續討論
Why Lead-3 better
extractive 會比abstractive有較高的ROUGE分數
- 新聞文章往往在一開始就以最重要的信息為結構。 這部分解釋了Lead-3的強度。 實際上,僅使用文章的前400個tokens(約20個句子)會比使用前800個tokens產生更高的ROUGE分數。
- 參考摘要的內容選擇非常主觀,有時要用句子做成一段獨立的摘要,其他時候只是抓取一些細節。給一定數目的句子有不少有用的方法選擇3到4種重點。而Abstrative引入了更多可能選擇(choice of phrasing),進一步降低了與參考摘要匹配的可能
- 僅具有一個參考摘要會加劇降低ROUGE的這種靈活性,與多個參考摘要相比,它已降低了ROUGE的可靠性(example:”smugglers profit from desperate migrants”也是一種可代表的abstractive summary(對第一個article但是他的ROUGE=0)
- 由於任務的主觀性以及有效摘要的多樣性,ROUGE似乎對諸如選擇先出現的內容或保留原始措詞之類的安全策略給予了獎勵。
Model 有多 Abstractive
- 我們最終模型的摘要包含的新n-gram(即那些未出現在文章中的n-gram)的比率比參考摘要要低得多,這表明抽象程度較低。
- 65%包含了一系列的abstractive techniques:文章的句子被截斷以形成語法上正確的較短版本,而新的句子則通過將片段拼接在一起而構成。 有時在復制的段落中會省略不必要的感嘆詞,子句和括號內的短語。
- 圖中表示兩個有相似結構的abstractive example。由於數據集包含很多體育類新聞,其摘要格式通常是“X beat Y ⟨score⟩ on ⟨day⟩”,而這是這一個model最有信心的abtractive summary。
但是,總的來說,我們的模型不會像圖7常規地生成摘要,並且也不像圖5那樣接近生成摘要。
4.可以用$p_{gen}$衡量抽象性:在訓練過程中,$p_{gen}$從大約0.30的值開始,然後增加,到訓練結束時收斂到大約0.53。這表明該模型首先學習大部分複制,然後學習生成大約一半的時間。但是,在測試時,$p_{gen}$嚴重偏向複製,平均值為0.17。差異可能是由於這樣的事實,即在訓練過程中,該模型以參考摘要的形式接受逐字監督(Teacher forcing),但在測試時卻沒有。但還是有用的:例如句子的開頭,縫合在一起的片段之間的連接以及產生截斷被複製句子的時間段時,$p_{gen}$最高。
Conclusion
- Hybrid on pointer generator architecture with coverage
- reduce repetition
- long-text dataset with high solution
(1)在模型训练到一定程度后,再使用Coverage Mechanism。否则模型容易收敛到局部最优点,影响整体效果。
(2)传统Attention机制的基线模型包含21,499,600个参数,训练了33个epochs。本文模型添加了1153个额外的参数,训练了12.8个epochs。所以合适的模型不但效果好,而且快。
(3)在模型的训练环节,刚开始的时候,大约有70%的输出序列是由Pointer Network产生的,随着模型逐渐收敛,这个概率下降到47%。然而,在测试环节中,有83%的输出序列是由Pointer Network产生的。作者猜测这个差异的原因在于:训练环节的decoder使用了真实的目标序列。
(4)虽然Generator Network生效的概率不高,但是其依旧不可或缺,例如在下面的几个场合,模型有较大的概率会使用Generator Network:在句子的开头,在关键词之间的承接文本。
(5)在摘要任务中,适当地截断句子反而能产生更好的预测效果,原因在于这篇论文用的语料是新闻语料,而新闻语料经常把最重要的内容放在开头。
(6)作者曾尝试使用一个15万长度的大词表,但是并不能显著改善模型效果。
Appendix
補充材料
本附錄提供了測試集中的示例,並與參考摘要和我們的模型產生的摘要進行了並行比較。 在每個示例中:
•斜體表示詞彙外的單詞
•紅色表示摘要中的事實錯誤
•綠色陰影強度表示生成概率pgen的值
•黃色陰影強度表示最終模型匯總過程結束時coverage向量的最終值
參考網址
https://medium.com/nlp-tsupei/pointer-generator-network-5a5a3a2bce3
https://github.com/atulkum/pointer_summarizer/tree/master/training_ptr_gen
https://zhuanlan.zhihu.com/p/22993927