文本自動摘要

最近人工智能隨着AlphaGo戰勝李世乭這一事件的高關注度,重新掀起了一波新的關注高潮,有的說人工智能將會如何超越人類,有的說將會威脅到人類的生存和發展,種種聲音都在表明人工智能的又一個春天即將到來,但很多學者認爲媒體的過度炒作,會引發民衆對人工智能不切實際地期待,從而導致人工智能寒冬的又一次到來。Yann Lecun作爲上一個人工智能寒冬時期還在堅持做冷門的神經網絡研究的人,他對AI有一個非常理性的認知。
這裏寫圖片描述
最近幾年在人工智能領域中大熱的工程技術deep learning,將機器對圖像,語音,人類語言的認知能力都提升了不少,前前後後也涌現出不少不僅僅是很cool而且是非常實用的應用,比如人臉識別,貓臉識別,無人車,語義搜索等等。其中,深度學習技術對圖像和語音的影響最大,但對人類語言的理解(NLP)做的沒有那麼那麼好。所以,不必太過鼓吹人工智能將會如何如何,民衆的期待不應太過接近科幻電影,不然只能換來無盡的失望,從而導致寒冬的來臨。

However, I would encourage everyone to think about problems, architectures, cognitive science, and the details of human language, how it is learned, processed, and how it changes, rather than just chasing state-of-the-art numbers on a benchmark task.

以上是一些簡單的背景介紹,下面進入正題。
自動文摘(auto text summarization)是NLP中較難的技術,難點很多,至今並沒有一個非常讓人滿意的、成熟的技術來解決這個問題。

  • 想法

大家在查文獻的時候,輸入一個關鍵詞之後,會返回一個paper列表,如果你只看paper的title可能會被一些標題黨矇騙,如果每篇paper都看abstract,時間會花太久,看着很煩。所以我在想,給rsarxiv添加一個功能,基於query的research survey生成。當你輸入一個keyword之後,返回的結果不僅僅是paper列表,還有一個非常精煉的survey,你可以通過閱讀survey瞭解到每篇paper的最核心工作,如果你感興趣的話,可以進一步查看paper的具體內容。(比摘要還要精煉)

基於這個idea,開始逐步地瞭解自動文摘技術,所以這一系列blog的目的是爲了記錄我在學習自動文摘過程中的一些點滴心得。
介紹

  • 第一篇blog對自動文摘做一個簡單的介紹。

自動文摘技術應用最廣的領域在於新聞,由於新聞信息的過載,人們迫切地希望有這麼一個工具可以幫助自己用最短的時間瞭解最多的最有用的新聞(爲什麼不直接看標題呢?因爲很多新聞爲了譁衆取寵,故意將標題起的特別吸引人眼球,但卻名不副實),因此就有了Yahoo 3000w$$ 收購summly的交易。另外,搜索引擎也是應用之一,基於query的自動文摘會幫助用戶儘快地找到感興趣的內容。前者是單文檔摘要技術,後者是多文檔摘要技術,後者較於前者會更加複雜一些。

自動文摘出現的重要原因之一是信息過載問題的困擾,(當然個性化推薦系統是解決信息過載的另外一個好的辦法)另外一個重要原因是人工文摘的成本較高。可以想象,如果計算機有能力寫出一個topic下的綜述paper,也就不需要survey作者去花大量的時間來讀和寫了。

自動文摘要解決的問題描述很簡單,就是用一些精煉的話來概括整篇文章的大意,用戶通過閱讀文摘就可以瞭解到原文要表達的意思。問題包括兩種解決思路,一種是extractive,抽取式的,從原文中找到一些關鍵的句子,組合成一篇摘要;另外一種是abstractive,摘要式的,這需要計算機可以讀懂原文的內容,並且用自己的意思將其表達出來。現階段,相對成熟的是抽取式的方案,有很多很多的算法,也有一些baseline的測試,但得到的摘要效果差強人意,對後者的研究並不是很多,人類語言包括字、詞、短語、句子、段落、文檔這幾個level,研究難度依次遞增,理解句子、段落尚且困難,何況是文檔,這是自動文摘最大的難點。

  • 自動文摘(二)

引:
自動文摘的方法主要分爲兩大類,extractive和abstractive。前者是目前最主流、應用最多、最容易的方法,後者相對來說更有一種真正人工智能的味道。還有另外一種分類方法是,單文檔摘要和多文檔摘要,前者是後者的基礎,但後者不只是前者結果簡單疊加那麼簡單。本文只介紹單文檔的extractive方法。
Extractive (抽取式)Summarization
抽取式的方法基於一個假設,一篇文檔的核心思想可以用文檔中的某一句或幾句話來概括。那麼摘要的任務就變成了找到文檔中最重要的幾句話,也就是一個排序的問題。
排序是一個非常經典的問題,也是一個非常多解決方案的問題。比如:Google根據用戶的query生成的網頁列表,就是一個排序之後的結果;再比如Amazon的推薦系統推薦給用戶的N個可能感興趣的產品,也都是通過算法做了排序輸出的。

排序針對不同的問題,需要提出不同的指標,比如有的應用關心的是相關性,有的關心的是時效性,有的關心的是新穎性等等,在這個層面上來討論排序,會有不同的模型。
一般的抽取式摘要問題,會考慮相關性和新穎性兩個指標。相關性是指摘要所用的句子最能夠代表本文檔的意思,而新穎性是指候選句子包含的冗餘信息要少,儘可能每句話都可以獨立地表達出一種獨立的意思。
下面簡單介紹一些思路。
1.預處理
NLP任務的標準流程中第一步都是預處理,將拿到的文本做分句,這裏有兩種可能性,一是用句點或者其他可以表達一句話結尾的符號作爲分隔,另外一種是用逗號作爲分隔符獲取句子。
2.詞、句表示
這一步的思路是:將詞、句子表示成計算機能理解的量,然後計算一些指標進行排序。這個地方也是各種算法、模型最大的不同之處:
(1)Bag Of Words。詞袋模型將詞定義爲一個維度,一句話表示成在所有詞張成的空間中的一個高維稀疏向量。
(2)TFIDF。可以理解爲帶權重的詞袋模型,計算出每個詞的TFIDF值,作爲該詞的權重。
(3)LDA/LSI。將整篇文檔利用TFIDF模型表示成一個矩陣,做SVD降維分解,生成兩個矩陣,一個是文檔-話題矩陣、另一個是詞-話題矩陣。得到詞-話題矩陣之後,可以得到句子-話題矩陣。
(4)Word Embedding。Tomas Mikolov提出的Word2Vec,用了很多技巧和近似的思路讓word很容易地表示成一個低維稠密向量,在很多情況下都可以達到不錯的效果。詞成爲了一個向量,句子也可有很多種方法表示成一個向量。
3.排序
這裏介紹兩種常見的方法。
(1)基於圖排序
將文檔的每句話作爲節點,句子之間的相似度作爲邊權值構建圖模型,用pagerank算法進行求解,得到每個句子的得分。

(2)基於特徵
特徵工程在深度學習火之前是解決特定領域問題的良藥,這裏用到的特徵包括:
1)句子長度,長度爲某個長度的句子爲最理想的長度,依照距離這個長度的遠近來打分。
2)句子位置,根據句子在全文中的位置,給出分數。(比如每段的第一句是核心句的比例大概是70%)
3)句子是否包含標題詞,根據句子中包含標題詞的多少來打分。
4)句子關鍵詞打分,文本進行預處理之後,按照詞頻統計出排名前10的關鍵詞,通過比較句子中包含關鍵詞的情況,以及關鍵詞分佈的情況來打分。
代表算法是TextTeaser。
4.後處理
排序之後的結果只考慮了相關性並沒有考慮新穎性,非常有可能出現排名靠前的幾句話表達的都是相似的意思。所以需要引入一個懲罰因子,將新穎性考慮進去。對所有的句子重新打分,如下公式:
a score(i) + (1-a) similarity(i,i-1), i = 2,3,….N
序號i表示排序後的順序,從第二句開始,排第一的句子不需要重新計算,後面的句子必須被和前一句的相似度進行懲罰。
這個算法就是所謂的MMR(Maximum Margin Relevance)
5.輸出
輸出的結果一般是取排序後的前N句話,這裏涉及到一個非常重要的問題,也是一直自動文摘質量被詬病的問題,可讀性。因爲各個句子都是從不同的段落中選擇出來的,如果只是生硬地連起來生成摘要的話,很難保證句子之間的銜接和連貫。保證可讀性是一件很難的事情。
這裏有一個取巧的方法,就是將排序之後的句子按照原文中的順序輸出,可以在一定程度下保證一點點連貫性。
路漫漫其修遠兮,吾將上下而求索
參考:
[1] TextRank源碼閱讀筆記

https://gist.github.com/rsarxiv/11470a8d763b2845f671061c21230435

[2] TextTeaser源碼閱讀筆記
https://gist.github.com/rsarxiv/4e949264b3bda98828b84cf2991e57e4

  • 自動文摘(三)

引:
- 蜀道之難 難於上青天
雖然有很多SaaS提供Summarization的服務,雖然有很多App尤其是新聞類App標榜自己擁有多麼牛的技術做Summarization,我們還是不得不承認自動文摘的技術離一個高水平的AI還有一段距離,很長的一段距離。都說自動文摘很難,到底難在哪裏?
- Abstractive
上一篇博客分享了Extraction方法的一些思路,本篇簡單聊一點Abstractive的想法。Abstractive是一個True AI的方法,要求系統理解文檔所表達的意思,然後用可讀性強的人類語言將其簡練地總結出來。這裏包含這麼幾個難點:
(1)理解文檔。所謂理解,和人類閱讀一篇文章一樣,可以說明白文檔的中心思想,涉及到的話題等等。
(2)可讀性強。可讀性是指生成的摘要要能夠連貫(Coherence)與銜接(Cohesion),通俗地講就是人類讀起來幾乎感覺不出來是AI生成的(通過圖靈測試)。
(3)簡練總結。在理解了文檔意思的基礎上,提煉出最核心的部分,用最短的話講明白全文的意思。
上述三個難點對於人類來說都不是一件容易的事情,何況是發展沒太多年的自然語言處理技術。人工智能領域中AI能夠領先人類的例子很多,包括前不久很火的Alpha狗,圖片識別,主要是利用計算機遠強於人類的計算能力,但也有很多的領域,AI離人類的水平還有很遠,比如paper的survey,summarization,機器翻譯等等。
近幾年隨着Deep Learning的火爆,研究者們利用一些最新的研究成果來做summarization,比如attention model,比如rnn encoder-decoder框架,在一定程度上實現了abstractive,但還是處於研究初期,效果還不算很好。
- Evaluation
自動文摘最大的一個難點是評價問題,如何有效地、合理地評價一篇文摘的效果是一個很難的問題。
(1) 人工評價
一千個讀者,有一千個哈姆雷特,不同的人理解一篇文檔會有很大的不同,基於人工評價的方法有類似於評價開放的文科辨析題目答案一樣,需要從答案中尋找一些所謂的要點,計算要點覆蓋率,打分。人工評價結果在很大程度上都是可信的,因爲人可以推理、複述並使用世界知識將具有類似意思但形式不同的文本單元關聯起來,更加靈活一些,但時間成本太高,效率太低。
(2)自動評價
計算機評價效果,需要給定參考摘要作爲標準答案,通過制定一些規則來給生成的摘要打分。目前,使用最廣泛的是ROUGH系統(Recall-Oriented Understudy for Gisting Evaluation),
基本思想是將待審摘要和參考摘要的n元組共現統計量作爲評價依據
然後通過一系列標準進行打分。包括:ROUGH-N、ROUGH-L、ROUGH-W、ROUGH-S和ROUGH-SU幾個類型。通俗地將就是通過一些定量化的指標來描述待審摘要和參考文摘之間的相似性,維度考慮比較多,在一定程度上可以很好地評價Extracive產生的摘要。
這裏涉及到一個重要的問題,就是標註語料問題。自動評價需要給定一系列文檔已經他們的參考文摘,用來測試不同的算法效果。TAC(Text Analysis Conference)和TREC(Text REtrieval Conference)兩個會議提供了相關的評測數據集,自動文摘領域的paper都是以這些數據集爲baseline,與其他paper的算法進行對比。會議的數據集畢竟有限,新的領域中做自動文摘需要建立自己的數據集作爲標準。
現有的評價標準存在的一個重要問題在於沒有考慮語義層面上的相似,評價extractive還好,但評價abstractive就會效果不好了。Deep Learning其實就是一個representation learning,將世界萬物表示成數字,然後作分析。在詞、句子甚至段落這個層面上的表示學習研究的非常多,也有很多的state-of-the-art的結果,所以做語義層面上的評價並不難。
重要性
評價對於一個研究領域非常重要,是牽引這個領域前進的首要因素,評價需要制定標準,標準的好壞關係到這個領域的研究質量,尤其是研究者們的paper質量,因爲大家相互比較算法的優劣就十分依賴這樣的標準。
標準數據集的建立以及baseline的提出,是最首要的任務。

  • 自動文摘(四)

引:
這篇博客是自動文摘系列的第四篇,重點介紹近期abstractive summarization的一些研究情況。abstractive是學術界研究的熱點,尤其是
Machine Translation中的encoder-decoder框架和attention mechanism十分火熱
大家都試着將abstractive問題轉換爲sequence-2-sequence問題
套用上面兩種技術,得到state-of-the-art結果,2015年來已經有許多篇paper都是這種套路,於是就有了下面的吐槽:
這裏寫圖片描述
- Encoder-Decoder
Encoder-Decoder不是一種模型,而是一種框架,一種處理問題的思路,最早應用於機器翻譯領域,輸入一個序列,輸出另外一個序列。機器翻譯問題就是將一種語言序列轉換成另外一種語言序列,將該技術擴展到其他領域,比如輸入序列可以是文字,語音,圖像,視頻,輸出序列可以是文字,圖像,可以解決很多別的類型的問題。這一大類問題就是上圖中的sequence-to-sequence問題。這裏以輸入爲文本,輸出也爲文本作爲例子進行介紹:
這裏寫圖片描述
encoder部分是將輸入序列表示成一個帶有語義的向量,使用最廣泛的表示技術是Recurrent Neural Network,RNN是一個基本模型,在訓練的時候會遇到gradient explode或者gradient vanishing的問題,導致無法訓練,所以在實際中經常使用的是經過改良的LSTM RNN或者GRU RNN對輸入序列進行表示,更加複雜一點可以用BiRNN、BiRNN with LSTM、BiRNN with GRU、多層RNN等模型來表示,輸入序列最終表示爲最後一個word的hidden state vector。
decoder部分是以encoder生成的hidden state vector作爲輸入“解碼”出目標文本序列,本質上是一個語言模型,最常見的是用Recurrent Neural Network Language Model(RNNLM),只要涉及到RNN就會有訓練的問題,也就需要用LSTM、GRU和一些高級的model來代替。目標序列的生成和LM做句子生成的過程類似,只是說計算條件概率時需要考慮encoder向量。
這裏,每一種模型幾乎都可以出一篇paper,尤其是在這個技術剛剛開始應用在各個領域中的時候,大家通過嘗試不同的模型組合,得到state-of-the-art結果。
該框架最早被應用在Google Translation中,paper詳情可以見[1],2014年12月發在arxiv上。

  • Attention Mechanism

注意力機制在NLP中的使用也就是2015年的事情,也是從機器翻譯領域開始。我們仔細看decoder中生成目標文本序列這部分,第一個word的生成完全依賴於encoder的last hidden state vector,而這個vector更多的是表示輸入序列的最後一個word的意思,也就是說rnn一般來說都是一個有偏的模型。
打個比方,rnn可以理解爲一個人看完了一段話,他可能只記得最後幾個詞說明的意思,但是如果你問他前面的信息,他就不能準確地回答,attention可以理解爲,提問的信息只與之前看完的那段話中一部分關係密切,而其他部分關係不大,這個人就會將自己的注意力鎖定在這部分信息中。這個就是所謂attention mechanism的原理,每個hidden state vector對於decoder生成每個單詞都有影響,但影響分佈並不相同,請看下圖:
這裏寫圖片描述
圖中行文本代表輸出,列文本代表輸入,顏色越深表示兩個詞相關性越強,即生成該詞時需要多注意對應的輸入詞。不同的paper在使用attention上會有不同的技巧,這裏不一一贅述了。

  • Neural Summarization

使用deep learning技術來做abstractive summarization的paper屈指可數,大體的思路也類似,大概如下:
(1)首先將自動文摘的問題構造成一個seq2seq問題,通常的做法是將某段文本的first sentence作爲輸入,headlines作爲輸出,本質上變成了一個headlines generative問題。
(2)選擇一個big corpus作爲訓練、測試集。自動文摘的技術沒有太成熟的一個重要原因在於沒有一個成熟的大規模語料。一般來說都選擇Gigawords作爲訓練、測試集,然後用DUC的數據集進行驗證和對比
(3)選擇一個合適的encoder,這裏可以選simple rnn,lstm rnn,gru rnn,simple birnn,lstm birnn,gru birnn,deep rnn,cnn,以及各種各樣的cnn。不同model之間的組合都是一種創新,只不過創新意義不太大。用encoder將輸入文本表示成一個向量。(所謂編碼就是將輸入句子表示成向量)
(4)選擇一個合適的decoder,decoder的作用是一個language model,用來生成summary words。
(5)設計一個合適的attention model。不僅僅基於encoder last hidden state vector和上文來預測輸出文本序列,更要基於輸入中“注意力”更高的詞來預測相應的詞。(在decoder之前加入注意機制)
(6)設計一個copy net。只要是語言模型都會存在相同的問題,比如out-of-vocabulary詞的處理,尤其是做新聞類摘要的生成時,很多詞都是人名、機構名等專有名詞,所以這裏需要用copy net 將輸入中的詞copy過來生成輸出。在生成中文摘要問題上,將words降維到characters可以避免oov的問題,並且取得不錯的結果。
接下來想做的事情是將neural summarization相關的paper精讀之後寫成blog。
*

  • 自動文摘(五)

*
引:
讀萬卷書 行萬里路
最近讀了幾篇關於deep learning在summarization領域應用的paper,主要的方法是借鑑機器翻譯中seq2seq的技術,然後加上attention model提升效果。今天來分享其中一篇paper,Generating News Headlines with Recurrent Neural Networks
本篇文章是近期所讀文章中最簡單的一篇,沒有太精彩的理論和創新,是一個工程性很強的paper,將實現過程中的思路和一些參數交代的很清楚,對於復現此paper提供了很大的幫助。
深度學習是一門研究表示學習的技術,用一張巨大的網來表徵給入的數據,使得模型不依賴於領域的特徵,是一種full data driven的模型,聽起來像是一種銀彈,尤其是近幾年的在各大領域的都收穫了state-of-the-art的結果,但模型的參數調優不沒有太多的理論依據,之前的神經網絡規模小調參數時間代價會小一些,但deep learning動不動就需要幾天甚至幾周的訓練時間,調參數代價太大;中間層的表示如何解釋,也是一個十分頭疼的事情,對於cv領域來說還好,總可以將matrix顯示成一幅圖片來看效果,比較直觀,但對於nlp領域,hidden state到底是什麼,表示哪個詞?表示哪種關係?詞向量的每一個維度代表什麼?具體真說不清楚,只有在輸出的那一層才能看到真正的意義。
一個領域的發展需要很多種不同思路的試錯,應該是一種百家爭鳴的態勢,而不是大家一股腦地都用一種技術,一種思路來解決問題,理論模型都趨於大同,這樣對這個領域的發展不會有太積極的意義。
machine translation是最活躍的一個研究領域,seq2seq(針對一個句子輸出另外一個句子)框架就是從該領域中提煉出來的,attention model也是借鑑於soft alignment,對於文本摘要這個問題來說,套用seq2seq只能解決headlines generation的問題,面對傳統的single document summarization和multi document summarization任務便束手無策了,因爲輸入部分的規模遠大於輸出部分的話,seq2seq的效果不會很好,因此說abstractive summarization的研究還長路漫漫。不過這裏可以將extractive和abstractive結合在一起來做,用extractive將一篇文檔中最重要的一句話提取出來作爲輸入,套用seq2seq來做abstractive,本質上是一個paraphrase的任務,在工程中可以試一下這種思路。在後續的研究中也可以嘗試將extractive和abstractive的思路結合在一起做文本摘要。
1. Abstract
本文的思路是用LSTM RNN作爲encoder-decoder框架的模型,並且使用了attention模型來生成新聞文章的標題,效果很好。並且提出了一種簡化版的attention mechanism,相比於複雜版的注意力機制在解決headline generation問題上有更好的效果。
本文定義的文本摘要問題是給新聞文章命題,爲了套用seq2seq技術,一般都會將source定義爲新聞的第一句話,target定義爲標題。本文的亮點在於提出了一種簡化版的注意力機制,並且得到了不錯的結果。
2. Model
Overview:
這裏寫圖片描述
encoder使用文章內容作爲輸入,一個時間點表示一個單詞,每個單詞先通過embedding層將詞轉換爲一個分佈式向量(word embedding)。每個詞向量都由前一個詞向量生成,第一個詞定義爲0向量。
decoder將encoder中最後一個詞向量作爲輸入,decoder本質是一個rnnlm,使用softmax和attention mechanism來生成每個詞。
損失函數:
這裏寫圖片描述
這裏y是輸出的詞,x是輸入的詞。
本文采用了4層LSTM,每層有600個單元,使用Dropout控制過擬合,所有參數的初始值都服從-0.1到0.1的平均分佈,訓練方法是RMSProp,學習速率0.01,動量項0.9,衰減項0.9,訓練9個回合,在第5個回合之後,每個回合都將訓練速率減半。batch訓練,384組訓練數據爲一個batch。
模型的定義和訓練方法都是借鑑於其他文章,模型參數的不同並不是什麼創新,別人用gru或者birnn,你用lstm,或者別人用2層,你用3層、4層更多層,不同的模型參數可能會有不同的state-of-the-art結果,但並不會對大家認識abstractive summarization問題有什麼實質性的幫助,也不會促進這個領域的發展,只是用着現有的方法在這個領域刷了一篇paper罷了。
3. Attention
注意力機制可以用來幫助神經網絡更好地理解輸入數據,尤其是一些專有名詞和數字。attention在decoder階段起作用,通過將輸出與所有輸入的詞建立一個權重關係來讓decoder決定當前輸出的詞與哪個輸入詞的關係更大(即應該將注意力放到哪個詞上)。
本文采用兩種不同的注意力機制,第一種稱作複雜注意力模型(complex attention),與Minh-Thang採用的點乘機制(dot mechanism)一樣,看下圖(包含隱藏向量和上下文向量):
這裏寫圖片描述
第二種稱作簡單注意力模型(simple attention),是第一種模型的變種,該種模型使得分析神經網絡學習注意力權重更加容易。看下圖:
這裏寫圖片描述
對比兩幅圖可以看出區別在於隱藏層的最後一層的表示上,簡單模型將encoder部分在該層的表示分爲兩塊,一小塊用來計算注意力權重(attention weight),另一大塊用來作爲上下文(context vector);decoder部分在該層的表示也分爲兩塊,一小塊用來計算注意力權重,另一大塊用來導入softmax,進行輸出預測。
simple attention mechanism的提出可以算作本文的主要貢獻,但是感覺貢獻量並不大。修改所謂的理論模型,而不僅僅是對模型參數進行修改,本質上是對encoder的context vector進行了更換,用了一些技巧,比如文中的方法,將隱藏層最後一層的表示分爲兩部分,一部分用來表示context,一部分用來表示attention weight,就有了新的模型。
4. Dataset
(1)Overview
本文用English Gigaword數據集,該數據集包括了六大主流媒體機構的新聞文章,包括紐約時報和美聯社,每篇文章都有清晰的內容和標題,並且內容被劃分爲段落。經過一些預處理之後,訓練集包括5.5M篇新聞和236M單詞。
(2)Preprocessing
headlines作爲target,news text的第一段內容作爲source,預處理包括:小寫化,分詞,從詞中提取標點符號,標題結尾和文本結尾都會加上一個自定義的結束標記,那些沒有標題或者沒有內容或者標題內容超過25個tokens或者文本內容超過50個tokens都會被過濾掉,按照token出現頻率排序,取top 40000個tokens作爲詞典,低頻詞用符號進行替換。
數據集被劃分爲訓練集和保留集,訓練集將會被隨機打亂。
數據的預處理是一件重要的事情,處理的好壞直接影響結果的好壞。本文的每一個處理細節都交代的很清楚,有希望做相同實驗的童鞋可以借鑑他的處理方法
(3)Dataset Issues
訓練集中會出現標題與所輸入文本關係不大的情況,比如:標題包括以下字樣For use by New York Times service clients,或者包括一些代碼,biz-cover-1等等,本文對此不作處理,因爲一個理想的模型可以處理這些問題。‘
數據集本身會有一些錯誤,但一個好的模型是可以處理好這些錯誤的數據,所以本文對此種數據並不做處理。
(4)Evaluation
模型的優劣用兩種方法進行評價。第一種,將訓練集和保留集損失值作爲評價指標;第二種,將BLEU作爲評價指標,爲了保證效率,保留集僅僅用了384個樣本進行計算。
評價指標也是常規的兩種,兩種數據集上的loss值直觀地反應了訓練和測試效果,BLEU是機器翻譯領域中常用的評價標準。
5. Analysis
計算硬件是GTX 980 Ti GPU,每種模型的計算都會花費4.5天時間。效果直接看下圖:
這裏寫圖片描述
在應用模型結果做保留集的預測時,不同新聞來源的文章預測效果不一樣。比如:在BBC、華爾街日報、衛報的效果就非常好,但是在赫芬頓郵報和福布斯的效果就很差。
結果看上圖也是一目瞭然,本文的simple attention mechanism更勝一籌。
Understanding information stored in last layer of the neural network
存在有許多思路來理解注意力機制函數,考慮下面的公式,從輸入計算到softmax輸出:
這裏寫圖片描述
第一個部分表示attention context vector對decoder輸出的影響,由於context是從input計算得來的,可以理解爲encoder的每個輸入對decoder輸出的影響;第二個部分表示decoder當前隱藏層最後一層對輸出的影響;第三個部分表示偏置項。
Understanding how the attention weight vector is computed
注意到這一點很重要,encoder部分的神經元對docoder部分的神經元起作用,也就是attention weight的本質。
6. Errors
本文的模型中存在幾種類型的錯誤,包括:
(1)神經網絡機制在填充細節時細節發生丟失。比如:target是 72 people died when a truck plunged into a gorge on Friday,而模型的預測是 72 killed in truck accident in Russia。這種錯誤經常出現在decoder beam很小的情況下。
(2)生成的headline與輸入的文本沒有太大的關係,這些headline在訓練集中出現太多次。這種錯誤常出現在decoder beam很大的情況下。
上述兩種錯誤反映了本文的模型對decoder beam非常敏感。
個人感覺本文的重點在於動手實踐seq2seq+attention在自動文摘中的應用,對很多模型層面上的研究很少,對效果分析上的研究也很淺。
7. Future Work
使用BiRNN來代替RNN配合attention model效果可能會更好一些。
將模型更換爲Bi-RNN會得到一個新的結果,不知道會不會有人拿這個來刷paper,個人覺得好無趣。
8. Conclusions
本文提出的simple attention mechanism效果很不錯。
參考文獻:
[1] Generating News Headlines with Recurrent Neural Networks

論文鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章