為文本摘要模型添加注意力機制:採用LSTM的編解碼器模型實現

2020-12-16 deephub

摘要是自然語言處理領域中最具挑戰性和最有趣的問題之一。它是一個從多種文本資源(如書籍、新聞文章、博客文章、研究論文、電子郵件和tweet)中生成簡潔而有意義的文本摘要的過程。現在,隨著大量的文本文檔的可用性,摘要是一個更加重要的任務。

那麼有哪些不同的方法呢?

萃取總結

這些方法依賴於從一段文本中提取幾個部分,比如短語和句子,然後將它們堆在一起創建摘要。因此,在提取方法中,識別出用於總結的正確句子是至關重要的。讓我們通過一個例子來理解這一點。

Text:Messi and Ronaldo have better records than their counterparts. Performed exceptionally across all competitions. They are considered as the best in our generation.*

Abstractive summary:Messi and Ronaldo have better records than their counterparts. Best in our generation.

正如你在上面看到的,這些粗體的單詞被提取出來並加入到一個摘要中——儘管有時這些摘要在語法上可能很奇怪。

摘要式的總結

這些方法使用先進的NLP技術產生一個全新的總結。本摘要的某些部分甚至可能不會出現在原文中。讓我們通過一個例子來理解這一點。

Text:Messi and Ronaldo have better records than their counterparts. Performed exceptionally across all competitions. They are considered as the best in our generation.

Abstractive summary:Messi and Ronaldo have better records than their counterparts, so they are considered as the best in our generation.

摘要文本摘要算法創建新的短語和句子,從原始文本中傳遞最有用的信息——就像人類一樣。

在本文中,我們將重點研究抽象摘要技術,並將利用編解碼器架構來解決這一問題。

什麼是編碼器-解碼器架構?

常用的序列-序列模型(編碼器-解碼器)的整體結構如下圖所示

該模型由編碼器、中間矢量和解碼器三部分組成。

編碼器

該編碼器基本上由一系列LSTM/GRU單元組成(請查看LSTM/GRU文檔以更好地理解架構)。編碼器接受輸入序列並將信息封裝為內部狀態向量。解碼器使用編碼器的輸出和內部狀態。在我們的文本摘要問題中,輸入序列是文本中需要匯總的所有單詞的集合。每個單詞都表示為x_i,其中i是單詞的順序。

中間(編碼器)向量

這是模型的編碼器部分產生的最終隱藏狀態。用上面的公式計算。這個向量旨在封裝所有輸入元素的信息,以幫助解碼器做出準確的預測。它作為模型的解碼器部分的初始隱藏狀態。

解碼器

一種由幾個循環單元組成的堆棧,其中每個單元在一個時間步長t預測輸出yt。每個循環單元從前一個單元接受一個隱藏狀態,並產生和輸出它自己的隱藏狀態。在摘要問題中,輸出序列是來自摘要文本的所有單詞的集合。每個單詞都表示為yi,其中i是單詞的順序。任意隱藏狀態h_i的計算公式為:

正如你所看到的,我們只是用前一個隱藏狀態來計算下一個。

t時刻的輸出y_t用公式計算:

我們使用當前時間步長的隱藏狀態和各自的權值W(S)來計算輸出。Softmax用於創建一個概率向量,它將幫助我們確定最終的輸出(例如回答問題中的單詞)。

添加一些注意力

首先,我們需要了解什麼是注意力。

為了在時間步長t生成一個單詞,我們需要對輸入序列中的每個單詞給予多少關注?這就是注意力機制概念背後的關鍵直覺。

讓我們用一個簡單的例子來理解這一點:

Question: In the last decade, who\is the best Footballer\?

Answer: Lionel Messi\is the best player\.

在上面的例子中,問題中的第五個單詞和梅西有關,第九個單詞足球運動員和第六個單詞球員有關。

因此,我們可以增加源序列中產生目標序列的特定部分的重要性,而不是查看源序列中的所有單詞。這是注意力機制背後的基本思想。

根據被關註上下文向量的推導方式,有兩種不同的注意機制:

Global Attention

在這裡,注意力被放在所有的源位置上。換句話說,為了得到參與的上下文向量,我們考慮了編碼器的所有隱藏狀態。在這個總結任務中,我們將使用Global Attention。

Local Attention

在這裡,注意力只放在幾個源位置上。在推導參與上下文向量時,只考慮編碼器的少數隱藏狀態。

現在讓我們了解這種注意力是如何真正起作用的:

編碼器輸出源序列中每個時間步長j的隱藏狀態(hj)同樣,解碼器輸出目標序列中每一個時間步長i的隱藏狀態(si)我們計算一個稱為對齊分數(eij)的分數,在這個分數的基礎上,使用一個評分函數將源單詞與目標單詞對齊。利用score函數從源隱藏狀態hj和目標隱藏狀態si計算對齊得分。由:

其中eij為目標時間步長i和源時間步長j的對齊得分。

我們使用softmax函數對對齊分數進行歸一化,以檢索注意力權重(aij):

計算編碼器hj的注意權值aij與隱藏狀態的乘積的線性和,得到上下文向量Ci:

將所述解碼器在時間步長i時的參與上下文向量與目標隱藏狀態連接,生成參與隱藏向量Si,其中Si= concatenate([Si;Ci)然後將參與的隱藏向量Si送入稠密層產生yi, yi=dense(Si)。

讓我們通過一個示例來理解上面的注意機制步驟。假設源文本序列為[x1, x2, x3, x4],目標摘要序列為[y1, y2]。

編碼器讀取整個源序列並輸出每個時間步長的隱藏狀態,例如h1, h2, h3, h4

解碼器讀取由一個時間步長偏移的整個目標序列,並輸出每個時間步長(例如s1、s2、s3)的隱藏狀態

目標timestep i = 1

利用score函數從源隱藏狀態hi和目標隱藏狀態s1計算對齊得分e1j:

e11= score(s1, h1) e12= score(s1, h2) e13= score(s1, h3) e14= score(s1, h4)

使用softmax對對齊分數e1j進行歸一化,得到注意力權重a1j:

a11= exp(e11)/((exp(e11)+exp(e12)+exp(e13)+exp(e14)) a12= exp(e12)/(exp(e11)+exp(e12)+exp(e13)+exp(e14)) a13= exp(e13)/(exp(e11)+exp(e12)+exp(e13)+exp(e14)) a14= exp(e14)/(exp(e11)+exp(e12)+exp(e13)+exp(e14))

由編碼器隱藏狀態hj與對齊得分a1j的乘積的線性和得到上下文向量C1:

C1= h1 * a11 + h2 * a12 + h3 * a13 + h4 * a14

連接上下文向量C1和目標隱藏狀態s1,生成隱藏向量s1

S1= concatenate([s1; C1])

然後將注意力隱藏向量S1輸入到稠密層,產生y1

y1= dense(S1)

我們可以用同樣的方法計算Y2。

實施

在本文中,我們將使用亞馬遜食品評論數據集。讓我們來看看數據:

數據清洗

我們首先需要清理我們的數據,所以我們需要遵循的步驟是:

將所有內容轉換為小寫字母刪除HTML標記收縮映射刪除(的)刪除括號()內的任何文本消除標點和特殊字符刪除stopwords。刪除短詞

數據分布

然後,我們將分析評語和總結的長度,從而對文章的長度分布有一個總體的認識。這將幫助我們確定序列的最大長度。

標記數據:

記號賦予器構建詞彙表並將單詞序列轉換為整數序列。我們將使用Keras』 Tokenizer來標記句子。

模型建立

我們終於到了模型製作部分。但在此之前,我們需要熟悉一些術語,這些術語在構建模型之前是必需的。

Return Sequences= True:當參數設置為True時,LSTM為每個時間步長生成隱藏狀態和單元格狀態Return State = True:當Return State = True時,LSTM只生成最後一個時間步驟的隱藏狀態和單元格狀態Initial State:用於初始化第一個時間步驟的LSTM的內部狀態Stacked LSTM:Stacked LSTM有多層的LSTM堆疊在彼此之上。這樣可以更好地表示序列。我鼓勵您試驗堆疊在彼此之上的LSTM的多個層

訓練和Early Stopping:

這就是在訓練過程中驗證損失減少的原因,我們可以推斷在 epoch10之後驗證損失略有增加。因此,在這個 epoch之後,我們將停止訓練模型。

推理

現在,我們將為編碼器和解碼器建立推斷。在這裡,編碼器和解碼器將一起工作,以產生摘要。所述解碼器將堆疊在所述編碼器之上,所述解碼器的輸出將再次饋入所述解碼器以產生下一個字。

Review: right quantity japanese green tea able either drink one sitting save later tastes great sweet Original summary: great japanese product Predicted summary: great teaReview: love body wash smells nice works great feels great skin add fact subscribe save deal great value sold Original summary: great product and value Predicted summary: great productReview: look like picture include items pictured buy gift recipient disappointed Original summary: very disappointed Predicted summary: not what expected

總結

在本文中,我們了解了如何使用序列到序列模型總結文本。我們可以通過增加數據集、使用雙向LSTM、 Beam Search策略等方法進一步改進該模型。

作者:Sayak Misra

相關焦點

  • 【Keras教程】用Encoder-Decoder模型自動撰寫文本摘要
    【導讀】這篇博文介紹了如何在深度學習框架Keras上實現文本摘要問題,探討了如何使用編碼器-解碼器遞歸神經網絡體系結構來解決文本摘要問題,如何實現文本摘要問題的不同的編碼器和解碼器,博文通俗易懂,專知內容組整理出來,希望大家喜歡。
  • 用Keras LSTM構建編碼器-解碼器模型
    本文是關於如何使用Python和Keras開發一個編解碼器模型的實用教程,更精確地說是一個序列到序列(Seq2Seq)。在上一個教程中,我們開發了一個多對多翻譯模型,如下圖所示:例如,我們想實現一個接受不同序列長度的模型,它接收一個單詞序列並輸出一個數字,或者是圖像字幕模型,其中輸入是一個圖像,輸出是一個單詞序列。如果我們要開發的模型是輸入和輸出長度不同,我們需要開發一個編解碼器模型。通過本教程,我們將了解如何開發模型,並將其應用於翻譯練習。
  • Attention 掃盲:注意力機制及其 PyTorch 應用實現
    點上方藍字計算機視覺聯盟獲取更多乾貨地址:https://www.zhihu.com/people/lucas_zhang深度學習attention 機制是對人類視覺注意力機制的仿生常規的 encoder-decoder方法,第一步,將輸入句子序列 X通過神經網絡編碼為固定長度的上下文向量C,也就是文本的語義表示;第二步,由另外一個神經網絡作為解碼器根據當前已經預測出來的詞記憶編碼後的上下文向量 C,來預測目標詞序列,過程中編碼器和解碼器的 RNN 是聯合訓練的,但是監督信息只出現在解碼器 RNN 一端,梯度隨著反向傳播到編碼器 RNN 一端。
  • 用Keras LSTM構建編碼器-解碼器模型
    本文是關於如何使用Python和Keras開發一個編解碼器模型的實用教程,更精確地說是一個序列到序列(Seq2Seq)。在上一個教程中,我們開發了一個多對多翻譯模型,如下圖所示:例如,我們想實現一個接受不同序列長度的模型,它接收一個單詞序列並輸出一個數字,或者是圖像字幕模型,其中輸入是一個圖像,輸出是一個單詞序列。如果我們要開發的模型是輸入和輸出長度不同,我們需要開發一個編解碼器模型。通過本教程,我們將了解如何開發模型,並將其應用於翻譯練習。
  • 獨家 | Python利用深度學習進行文本摘要的綜合指南(附教程)
    本文介紹了如何利用seq2seq來建立一個文本摘要模型,以及其中的注意力機制。並利用Keras搭建編寫了一個完整的模型代碼。介紹「我不想要完整的報告,只需給我一個結果摘要」。我發現自己經常處於這種狀況——無論是在大學還是在職場中。我們準備了一份綜合全面的報告,但教師/主管卻僅僅有時間閱讀摘要。聽起來很熟悉?
  • 直觀理解並使用Tensorflow實現Seq2Seq模型的注意機制
    採用帶注意機制的序列序列結構進行英印地語神經機器翻譯Seq2seq模型構成了機器翻譯、圖像和視頻字幕、文本摘要、聊天機器人以及任何你可能想到的包括從一個數據序列到另一個數據序列轉換的任務的基礎。機器翻譯是seq2seq模型的主要用例,注意機制對機器翻譯進行了改進。關於這類主題的文章通常涉及用於實現的大代碼段和來自多個庫的大量API調用,對概念本身沒有直觀的理解。在這方面,我們既要講求理論,也要講求執行。除了實現之外,我們還將詳細了解seq2seq體系結構和注意力的每個組件表示什麼。本文中使用的代碼可以在最後的資源列表中找到。
  • 【學術論文】基於Transformer模型的中文文本自動校對研究
    Transformer模型與傳統的基於概率、統計、規則或引入BiLSTM的Seq2Seq模型不同,該深度學習模型通過對Seq2Seq模型進行整體結構改進,從而實現中文文本自動校對。通過使用公開數據集對不同模型進行對比實驗,採用準確率、召回率與F1值作為評價指標,實驗結果表明,Transformer模型相比較於其他模型,在中文文本自動校對的性能上有了大幅提升。
  • 將注意力機制引入RNN,解決5大應用領域的序列預測問題
    編碼器-解碼器結構在多個領域展現出先進水平,但這種結構會將輸入序列編碼為固定長度的內部表徵。這限制了輸入序列的長度,也導致模型對特別長的輸入序列的性能變差。將注意力機制引入循環神經網絡幫助解決這一局限性。該方法可用於多個領域的序列預測中,包括文本翻譯、語音識別等。
  • 開源|谷歌發布最新「天馬」模型,自動生成文本摘要已超越人類!
    我們知道,Transfromer在處理長序列文本方面比CNN/RNN表現更為出色,因此,最強大的預訓練模型,如BERT、GPT均採用的是Transfromer基礎架構。而且事實證明,在處理諸如機器翻譯、文本摘要、語音識別、問答系統等多種語言任務時,只需進行微調,即可達到SOTA性能。
  • 經典Seq2Seq與注意力Seq2Seq模型結構詳解
    經典的Seq2Seq模型是如何工作的?注意力機制什麼是Seq2Seq模型?在Seq2seq模型中,神經機器翻譯以單詞序列的形式接收輸入,並生成一個單詞序列作為輸出。另外,輸入可以是一幅圖像(圖像字幕)或一長串單詞(文本摘要)。經典的Seq2Seq模型是如何工作的?
  • 使用深度學習模型創作動漫故事,比較LSTM和GPT2的文本生成方法
    在文本生成步驟中,我們向模型提供一些輸入文本,例如,' A young woman ',我們的函數將首先對其進行標記,然後將其傳遞到模型中。,輸入文本為「In the」,這就是我們得到的輸出  In the days attempt it 's . although it has , however !
  • 【NLP】Facebook提出的預訓練模型BART
    該模型結合雙向和自回歸 Transformer 進行模型預訓練,在一些自然語言處理任務上取得了SOTA性能表現。近日,Facebook 發表論文,提出一種為預訓練序列到序列模型而設計的去噪自編碼器 BART。BART 通過以下步驟訓練得到:1)使用任意噪聲函數破壞文本;2)學習模型來重建原始文本。
  • Google Brain提出基於固定尺寸記憶表示的注意力模型,翻譯任務推理...
    模型是近些年來自然語言處理領域重要的進展之一。注注意力模型是從認知心理學中人腦注意力模型中引入的概念,在人觀察世界時,對不同對象的關注程度是不同的,比如你在看書仔細品味文章中的一句話時,雖然你能看到整頁的文字,但是注意力的焦點集中在這個句子上,其他文字雖然還在你的眼中,但是實際分配到的注意力是很少的。自然語言處理中也是同理,輸入文本的不同部分對輸出的貢獻是不同的,即需要分配的注意力權重不同。使用注意力模型能夠得到更好的生成結果。
  • 圖深度學習入門教程(六)——注意力機制與圖注意力
    硬模式(Hard Attention):會在生成注意力權重後篩選掉一部分不符合條件的注意力,讓它的注意力權值為0,即可以理解為不再注意不符合條件的部分。 1.4 注意力機制模型的原理注意力機制模型是指完全使用注意力機制搭建起來的模型。注意力機制除了可以輔助其他神經網絡以外,本身也具有擬合能力。
  • 【一個深度學習模型解決所有問題】谷歌MultiModel通吃文本、圖像、翻譯
    論文作者設計讓 modality net 擁有以下特徵:①計算效率最高(computationally minimal),②促進 heavy 特徵提取,③確保主要的計算都發生在模型中與領域無關的地方。由於模型是自回歸的,modality net 需要先轉變為輸入進入統一的表徵空間,之後再轉變為輸出。
  • 帝國理工聯手谷歌提出抽象文本摘要最佳模型|ICML 2020
    另外,本文為進一步提升最先進結果,引入了一個新收集的文本語料庫,該語料庫由新聞類文章組成包括 XSum 和 CNN/DailyMail 摘要數據集,統稱為 HugeNews。此外,將本文的模型應用了低資源文本摘要任務上時,實驗結果表明本文的模型能夠非常快速適用於少量監督對的微調,並僅以 1000 個樣本即在 6 個數據集中斬獲桂冠。
  • 賽爾筆記 | 事實感知的生成式文本摘要
    圖5 引入Wikidata Knowledge Graph作為外部知識的摘要模型結構示意圖。模型左邊為Encoder,Source Text為源文本;右邊為Decoder,Target Text為摘要。
  • BERT模型:自然語言處理最新裡程碑完整詳解!
    該模型高度並行運行,因此在提高翻譯性能的同時,其訓練速度也非常快。進一步闡述變換器模型前,我們先對注意力做個介紹。什麼是注意力(Attention)?注意力機制可看作模糊記憶的一種形式。記憶由模型的隱藏狀態組成,模型選擇從記憶中檢索內容。
  • 計算機視覺系列案例 | 基於注意力機制的編碼器-解碼器結構的圖像描述生成
    本案例將採用帶有注意力機制的編碼器-解碼器網絡結構,生成語句來描述圖像內容。目錄1. 數據集簡介2. 模型介紹3. 模型結構    3.1 編碼器    3.2 注意力機制    3.3 解碼器4. 構建模型5.
  • 圖模型+Bert香不香?完全基於注意力機制的圖表徵學習模型Graph-Bert
    通過將原始圖分解為以每個節點為中心的多個子圖來學習每個節點的表徵信息,這不僅能解決圖模型的預訓練問題,還能通過並行處理還提高效率。為了解決以上問題,本文提出了Graph-Bert,Bert 是一個用於NLP的模型,其核心在於 attention 機制,將這種機制拓展到圖結構數據上,便是 Graph-Bert。Graph-Bert 將原始圖採樣為多個子圖,並且只利用attention機制在子圖上進行表徵學習,而不考慮子圖中的邊信息。