今天分享一篇基於重編輯機制的文本生成論文
paper:Paper Abstract Writing through Editing Mechanism(發表於ACL2018)
code:源碼
概述:這篇論文解決的問題是使用paper的title來生成abstract。論文使用了一種重編輯機制(參考人類寫論文的過程:先寫一個草稿出來,再不斷的修改),是一個信息量由少到多的過程。
本次分享希望能讓你:
- 瞭解重編輯機制的工作原理;
- 學會編寫主體框架。
1. 模型總體框架
1.1 encode-decode框架
encoder-decoder模型,也就是編碼-解碼模型。所謂編碼,就是將輸入序列轉化成一個固定長度的向量;解碼,就是將之前生成的固定向量再轉化成輸出序列。
1.2 Model Overview
2. 模型細節
論文主要包括兩部分:撰寫網絡和編輯網絡。
撰寫網絡:使用title作爲輸入,生成初稿;
編輯網絡:聯合title和初稿作爲輸入,多次編輯生成終稿。
2.1 Writing Network
兩張圖的紅框處表示對title進行encode編碼;
藍框處表示對初稿進行encode編碼;
綠框處表示解碼輸出。
2.2 Editing Network
即前文的self.decoder函數
紅框:單向解碼;
藍框:對title的encode結果與解碼器輸出做attention;
綠框:對初稿的encode結果與解碼器輸出做attention;
黃框:對上述兩個attention結果做一個基於注意力的修改門(控制要修改哪一部分)
2.3 注意力機制
對注意力機制不瞭解的,可以看一下這篇論文(開山之作,soft-alignment attention):
Neural Machine Translation By Jointly Learning To Align and Translate.
2.3.1 本文使用的方法
因爲encoder部分爲雙向RNN,假設隱藏層變量維度爲512維,那麼encoder之後的變量維度爲1024(雙向);
因此,decoder部分的隱藏層變量必須設爲1024維,以滿足上述要求。
2.3.2 Attentive Revision Gate
這部分是對上述兩個attention結果做一個基於注意力的修改門(控制要修改哪一部分),類似於GRU的門控結構:
2.4. 重編輯機制
這裏的重編輯是指,每一次編輯都計算一次損失,比如設置編輯次數爲3,那麼計算一個樣本可以得到三個Loss,分別對應第一,二,三次編輯:
3. 結果分析
Datasets: 10,874 paper title and abstract pairs.
We randomly dividing them into training (80%),
validation (10%), and testing (10%) sets.
小聲BB:其實感覺提升不是很明顯,不過人工驗證部分確實要好很多,說明更符合人的觀感。
個人想法:我在自己的數據集上測試過(不同任務),效果不太好。這麼小的數據量,扔到預訓練模型中進行fine-tune是更好的方法。不過本文是18年提出來的,那時候bert家族還沒有大行其道,這種方法也不失爲一種好的改進。