作者:himon
時間:2021.1.6
來源: ACL 2017
關(guān)鍵詞:NLG,Pointer-Generator Networks
1.背景及問題描述
seq2seq模型的出現(xiàn)給生成式摘要(abstractive text summarization)的實(shí)現(xiàn)提供了更好的方案婚瓜,但是seq2seq常常出現(xiàn)的兩點(diǎn)弊端:1. 它容易生成不準(zhǔn)確的細(xì)節(jié) 2. 容易重復(fù) 3.不能處理OOV問題戏自。作者提出了兩個方法來提升seq2seq模型的表現(xiàn)涯鲁,一個是將PointerNetwork與seq2seq中的encoder結(jié)合起來卫袒,使得生成的結(jié)果中既有seq2seq從全部詞典中生成的扣唱,也有從源文本中copy的汞舱,這樣即可以幫助生成準(zhǔn)確的詞語,同時也可以處理OOV的問題隆夯。第二點(diǎn)是使用coverage機(jī)制來追蹤摘要的部分钳恕,一次來避免重復(fù)(repetition)。
2.已有的解決方案
seq2seq+attention是處理此類問題的baseline:
seq2seq模型分為encoder和decoder蹄衷。在encoder端忧额,需要將文章中的單詞一個一個的fed到encoder中(LSTM或者Transformer),經(jīng)過encoder得到文章
的編碼狀態(tài)
(encoder hidden states),在decoder端愧口,在每一個時刻
睦番,decoder接收前一個時刻單詞的詞向量,求得解碼狀態(tài)
(decoder hidden state )耍属,然后計算得到注意力權(quán)重
:
公式中,
,
以及
都是可學(xué)習(xí)的參數(shù)托嚣。
這里得到的注意力權(quán)重可以看作是關(guān)于source中所有詞語的關(guān)注度概率,用來告訴decoder應(yīng)該關(guān)注那一個word來生成下一個詞語恬涧。
然后使用注意力權(quán)重和編碼狀態(tài)
計算得到加權(quán)的編碼狀態(tài),看作是上下文向量
:
將上面得到的上下文向量送入到兩層線性層,計算softmax得到單詞表概率分布
碴巾,概率值表示詞典中所有vocab被選中的概率溯捆。
最后使用交叉熵計算loss,完整的loss就是序列每個位置loss的平均值:
3.解決方案概述
本篇論文是在seq2seq基礎(chǔ)上提出了Pointer-Generator Networks厦瓢,也就是seq2seq+PointerNetwork:
- Pointer-Generator Networks
在解碼階段提揍,如何確定是從source中copy還是生成,作者引入一個權(quán)重來決定煮仇。具體的計算,在
時刻:
其中劳跃,,
,
以及
是可學(xué)習(xí)參數(shù),解碼狀態(tài)
浙垫,上下文向量
刨仑,decoder的輸入
。
在解碼階段需要維護(hù)一個擴(kuò)展的詞典夹姥,即原本詞典加上source中出現(xiàn)的所有詞語杉武,我們在這個擴(kuò)展的詞典上計算所有token的概率:
在這里,如果是OOV辙售,則
為0,相同的轻抱,如果
沒有出現(xiàn)在source中,則后面一項(xiàng)也為0.
loss的定義與seq2seq中相同旦部。
2.Coverage mechanism
重復(fù)是seq2seq模型經(jīng)常出現(xiàn)的問題祈搜,本文引入 Coverage model來解決這個問題较店,這也是本文的主要亮點(diǎn)。具體實(shí)現(xiàn)上容燕,就是將之前所有step的注意力權(quán)重相加到一個覆蓋向量(coverage vector) 上梁呈。就是用先前的注意力權(quán)重決策來影響當(dāng)前注意力權(quán)重的決策,這樣就避免在同一位置重復(fù)缰趋,從而避免重復(fù)生成文本捧杉。具體計算如下:
然后將覆蓋向量添加到注意力權(quán)重的計算過程中:
這就可以使得在計算注意力權(quán)重時,當(dāng)前的決定是受到歷史決定影響的秘血,這樣就可以讓注意力機(jī)制避免重復(fù)關(guān)注某個位置味抖,也就可以避免生成重復(fù)詞語。
作者發(fā)現(xiàn)引入 coverage loss 是很有必要的灰粮,coverage loss的計算方式如下:
模型最終的loss為仔涩,其中是超參數(shù):
4.結(jié)果分析
在abstractive摘要的評測中,本文提出的方法在ROUGE這個指標(biāo)上提升比較明顯粘舟。
此外熔脂,作者發(fā)現(xiàn),lead-3的實(shí)驗(yàn)設(shè)置柑肴,也就是只取文章的前3句話進(jìn)行抽取生成霞揉,ROUGE得分明顯更高,這是因?yàn)樾侣劦年P(guān)鍵信息一般出現(xiàn)在文章開頭晰骑。實(shí)際上适秩,作者實(shí)驗(yàn)發(fā)現(xiàn),只使用前400個token效果更好硕舆。
此外作者還分析了秽荞,本文模型與seq2seq+attentoin模型生成很少見n-gram的比例:
少見n-gram的定義是沒有出現(xiàn)在原本的n-gram。從上圖可以發(fā)現(xiàn)抚官,本文模型生成比較少的少見n-gram扬跋,seq2seq+attentoin模型生成的比較多,并且大多數(shù)都是錯誤的凌节。
5.創(chuàng)新點(diǎn)或貢獻(xiàn)
- 文本提出了一種引入覆蓋機(jī)制的混合指針模型钦听,可以有效緩解生成模型不準(zhǔn)確和重復(fù)的問題。
- 在長文抽取任務(wù)中倍奢,本模型結(jié)果大大超出當(dāng)時的SOTA彪见。
- 本文是在seq2seq模型基礎(chǔ)上加入的PointerNetwork和Coverage model,效果提升很多娱挨,但是模型參數(shù)沒有增加很多余指。詳細(xì)的,baseline模型參數(shù)共有21,499,600參數(shù),pointer-generator增加1153參數(shù)酵镜,coverage增加512參數(shù)
6.個人思考
經(jīng)典的文章碉碉,經(jīng)典的思路,值得深入學(xué)習(xí)淮韭!
[參考]
paper
code-pytorch