NLP實踐-Task9

1.Encoder-Decoder框架

要了解深度學習中的注意力模型,就不得不先談Encoder-Decoder框架,因爲目前大多數注意力模型附着在Encoder-Decoder框架下,當然,其實注意力模型可以看作一種通用的思想,本身並不依賴於特定框架,這點需要注意。

圖1 抽象的文本處理領域的Encoder-Decoder框架

文本處理領域的Encoder-Decoder框架可以這麼直觀地去理解:可以把它看作適合處理由一個句子(或篇章)生成另外一個句子(或篇章)的通用處理模型。對於句子對< Source,Target >,我們的目標是給定輸入句子Source,期待通過Encoder-Decoder框架來生成目標句子Target。Source和Target可以是同一種語言,也可以是兩種不同的語言。而Source和Target分別由各自的單詞序列構成:

這裏寫圖片描述

Encoder顧名思義就是對輸入句子Source進行編碼,將輸入句子通過非線性變換轉化爲中間語義表示C:

這裏寫圖片描述

對於解碼器Decoder來說,其任務是根據句子Source的中間語義表示C和之前已經生成的歷史信息y1,y2……yi-1來生成i時刻要生成的單詞yi:

這裏寫圖片描述

每個yi都依次這麼產生,那麼看起來就是整個系統根據輸入句子Source生成了目標句子Target。如果Source是中文句子,Target是英文句子,那麼這就是解決機器翻譯問題的Encoder-Decoder框架;如果Source是一篇文章,Target是概括性的幾句描述語句,那麼這是文本摘要的Encoder-Decoder框架;如果Source是一句問句,Target是一句回答,那麼這是問答系統或者對話機器人的Encoder-Decoder框架。由此可見,在文本處理領域,Encoder-Decoder的應用領域相當廣泛。

Encoder-Decoder框架不僅僅在文本領域廣泛使用,在語音識別、圖像處理等領域也經常使用。比如對於語音識別來說,圖2所示的框架完全適用,區別無非是Encoder部分的輸入是語音流,輸出是對應的文本信息;而對於“圖像描述”任務來說,Encoder部分的輸入是一副圖片,Decoder的輸出是能夠描述圖片語義內容的一句描述語。一般而言,文本處理和語音識別的Encoder部分通常採用RNN模型,圖像處理的Encoder一般採用CNN模型。

2.Attention原理

Attention-based Model其實就是一個相似性的度量,當前的輸入與目標狀態越相似,那麼在當前的輸入的權重就會越大,說明當前的輸出越依賴於當前的輸入。嚴格來說,Attention並算不上是一種新的model,而僅僅是在以往的模型中加入attention的思想,所以Attention-based Model或者Attention Mechanism是比較合理的叫法,而非Attention Model。

圖2中展示的Encoder-Decoder框架是沒有體現出“注意力模型”的,所以可以把它看作是注意力不集中的分心模型。爲什麼說它注意力不集中呢?請觀察下目標句子Target中每個單詞的生成過程如下:

這裏寫圖片描述

其中f是Decoder的非線性變換函數。從這裏可以看出,在生成目標句子的單詞時,不論生成哪個單詞,它們使用的輸入句子Source的語義編碼C都是一樣的,沒有任何區別。而語義編碼C是由句子Source的每個單詞經過Encoder 編碼產生的,這意味着不論是生成哪個單詞,y1,y2還是y3,其實句子Source中任意單詞對生成某個目標單詞yi來說影響力都是相同的,這是爲何說這個模型沒有體現出注意力的緣由。這類似於人類看到眼前的畫面,但是眼中卻沒有注意焦點一樣。

如果拿機器翻譯來解釋這個分心模型的Encoder-Decoder框架更好理解,比如輸入的是英文句子:Tom chase Jerry,Encoder-Decoder框架逐步生成中文單詞:“湯姆”,“追逐”,“傑瑞”。在翻譯“傑瑞”這個中文單詞的時候,分心模型裏面的每個英文單詞對於翻譯目標單詞“傑瑞”貢獻是相同的,很明顯這裏不太合理,顯然“Jerry”對於翻譯成“傑瑞”更重要,但是分心模型是無法體現這一點的,這就是爲何說它沒有引入注意力的原因。沒有引入注意力的模型在輸入句子比較短的時候問題不大,但是如果輸入句子比較長,此時所有語義完全通過一箇中間語義向量來表示,單詞自身的信息已經消失,可想而知會丟失很多細節信息,這也是爲何要引入注意力模型的重要原因。

上面的例子中,如果引入Attention模型的話,應該在翻譯“傑瑞”的時候,體現出英文單詞對於翻譯當前中文單詞不同的影響程度,比如給出類似下面一個概率分佈值:

(Tom,0.3)(Chase,0.2) (Jerry,0.5)

每個英文單詞的概率代表了翻譯當前單詞“傑瑞”時,注意力分配模型分配給不同英文單詞的注意力大小。這對於正確翻譯目標語單詞肯定是有幫助的,因爲引入了新的信息。同理,目標句子中的每個單詞都應該學會其對應的源語句子中單詞的注意力分配概率信息。這意味着在生成每個單詞yi的時候,原先都是相同的中間語義表示C會被替換成根據當前生成單詞而不斷變化的Ci。理解Attention模型的關鍵就是這裏,即由固定的中間語義表示C換成了根據當前輸出單詞來調整成加入注意力模型的變化的Ci。增加了注意力模型的Encoder-Decoder框架理解起來如圖3所示。

 

這裏寫圖片描述

圖3 引入注意力模型的Encoder-Decoder框架

即生成目標句子單詞的過程成了下面的形式:

這裏寫圖片描述

3.HAN原理

其主要思想是,首先考慮文檔的分層結構:單詞構成句子,句子構成文檔,所以建模時也分這兩部分進行。其次,不同的單詞和句子具有不同的信息量,不能單純的統一對待所以引入Attention機制。而且引入Attention機制除了提高模型的精確度之外還可以進行單詞、句子重要性的分析和可視化,讓我們對文本分類的內部有一定了解。模型如下圖所示:

整個網絡結構包括四個部分:

  1)詞序列編碼器

  2)基於詞級的注意力層

  3)句子編碼器

  4)基於句子級的注意力層

參考鏈接1:https://blog.csdn.net/u012968002/article/details/78867203

參考鏈接2:https://www.cnblogs.com/jiangxinyang/p/9709245.html

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