摘要: 編碼器-解碼器結構在多個領域展現出先進水平,但這種結構會將輸入序列編碼為固定長度的內部表徵。這限制了輸入序列的長度,也導致模型對特別長的輸入序列的性能變差。將注意力機制引入循環神經網絡幫助解決這一局限性。該方法可用於多個領域的序列預測中,包括文本翻譯、語音識別等。
選自MachineLearningMastery
作者:Jason Brownlee
參與:Nurhachu Null、路雪
編碼器-解碼器結構在多個領域展現出先進水平,但這種結構會將輸入序列編碼為固定長度的內部表徵。這限制了輸入序列的長度,也導致模型對特別長的輸入序列的性能變差。將注意力機制引入循環神經網絡幫助解決這一局限性。該方法可用於多個領域的序列預測中,包括文本翻譯、語音識別等。
編碼器-解碼器結構流行的原因是它在眾多領域展現出了當前最高水平。這種結構的局限性在於它會將輸入序列編碼為固定長度的內部表徵。這限制了輸入序列的長度,並且導致模型對特別長的輸入序列的性能變差。
在這篇博客中,我們將發現可以在循環神經網絡中採用注意力機制(attention mechanism)來克服這種局限性。
讀完這篇博客,你會知道:
編碼器-解碼器結構和固定長度內部表徵的局限性
讓網絡學會針對輸出序列的每一項去注意輸入序列中對應位置的注意力機制
帶有註意力機制的循環神經網絡在文本翻譯、語音識別等 5 個領域中的應用。
長序列的問題
在編碼器-解碼器循環神經網絡中,一系列長短期記憶網絡(LSTM)學習將輸入序列編碼為固定長度的內部表徵,另一部分長短期記憶網絡讀取內部表徵並將它解碼到輸出序列中。這種結構在困難的序列預測問題(例如文本翻譯)中展示出了當前最先進的水平,並迅速成為了主導方法。例如,下面這兩篇論文:
使用神經網絡的序列到序列學習(Sequence to Sequence Learning with Neural Networks, 2014)
使用 RNN 編碼器-解碼器學習短語表徵,用於統計機器翻譯(Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation, 2014)
編碼器-解碼器結構仍然能夠在很多問題上實現優秀的結果。然而,它受到了一個限制,即所有的輸入序列都被強制編碼成固定長度的內部向量。這一局限性限制了這些網絡的性能,尤其是考慮到比較長的輸入序列時,例如文本翻譯中的長句子。
「這種編碼器-解碼器方法的一個潛在問題是神經網絡需要把源句子中的所有必要信息壓縮成一個固定長度的向量。這使得神經網絡在處理長句子,尤其是比訓練語料長的句子時會比較困難。」
——Dzmitry Bahdanau, et al.,Neural machine translation by jointly learning to align and translate, 2015
序列中的注意力機制
注意力機制是一個將編碼器-解碼器結構從固定長度的內部表徵中解放出來的方法。它通過保持 LSTM 編碼器對輸入序列每一步的中間輸出結果,然後訓練模型學習如何選擇性地關注輸入,並將它們與輸出序列中的項聯繫起來。換句話說,輸出序列中的每一項都取決於輸入序列中被選中的項。
「論文中提出的模型在翻譯的時候每生成一個詞,就會在源句子中的一系列位置中搜索最相關信息集中的地方。然後它會基於上下文向量以及這些源文本中的位置和之前生成的目標詞來預測下一個目標詞。」「……該模型將輸入語句編碼成向量序列,並在解碼翻譯的時候適應性地選擇這些向量的子集。這使得神經翻譯模型不必再將各種長度的源句子中的所有信息壓縮成一個固定長度的向量。」
——Dzmitry Bahdanau, et al., Neural machine translation by jointly learning to align and translate (https://arxiv.org/abs/1409.0473), 2015
雖然這樣做會增加模型的計算負擔,但是會形成目標性更強、性能更好的模型。此外,模型還能夠展示在預測輸出序列的時候,如何將注意力放在輸入序列上。這會幫助我們理解和分析模型到底在關注什麼,以及它在多大程度上關注特定的輸入-輸出對。
「論文提出的方法能夠直觀地觀察到生成序列中的每個詞與輸入序列中一些詞的(軟)對齊關係,這可以通過對標註權重的可視化來實現……每個圖中矩陣的每一行代表與標註相關聯的權重。由此我們可以看出在生成目標詞時,源句子中的哪一個位置受到了重視。」
——Dzmitry Bahdanau, et al., Neural machine translation by jointly learning to align and translate (https://arxiv.org/abs/1409.0473), 2015
使用大幅圖片時的問題
應用在計算機視覺問題中的捲積神經網絡也面臨類似問題,用特別大的圖片訓練模型會很困難。由此引發的結果就是在做出預測之前,圖像會被大量觀察,得到其近似表示(approximate impression)。
「人類感知的一個重要特點就是不會傾向於一次性處理場景的全貌,而是選擇性地將注意力聚焦於視覺空間中的某些部分來獲取所需信息,並且結合不同時間點的局部信息來構建整個場景的內部表徵,以此指導隨後的眼動和決策。」
——Recurrent Models of Visual Attention (https://arxiv.org/abs/1406.6247), 2014
這些基於 glimpse 的修正也可以被認為是注意力機制,但是並不是本文要說的注意力機制。
相關論文:
Recurrent Models of Visual Attention, 2014
DRAW: A Recurrent Neural Network For Image Generation, 2014
Multiple Object Recognition with Visual Attention, 2014
使用注意力機制進行序列預測的 5 個例子
這一部分給出了一些將注意力機制與循環神經網絡結合起來用於序列預測的具體例子。
1. 文本翻譯中的注意力機制
文本翻譯這個例子我們在前面已經提過了。給定一個法語句子的輸入序列,將它翻譯並輸出英文句子。注意力機制用於觀察輸入序列中與輸出序列每一個詞相對應的具體單詞。
「生成每個目標詞時,我們讓模型搜索一些輸入單詞或由編碼器計算得到的單詞標註,進而擴展基本的編碼器-解碼器結構。這讓模型不再必須將整個源句子編碼成一個固定長度的向量,還能讓模型僅聚焦於和下一個目標詞相關的信息。」
——Dzmitry Bahdanau, et al., Neural machine translation by jointly learning to align and translate (https://arxiv.org/abs/1409.0473, 2015
法語-英語翻譯中的注意力編譯
圖注:列為輸入序列,行為輸出序列,高亮塊代表二者的關聯,顏色越淺,則關聯性越強。
圖片來自論文:Dzmitry Bahdanau, et al., Neural machine translation by jointly learning to align and translate, 2015
2. 圖像描述中的注意力機制
與glimpse 方法不同,基於序列的注意力機制可以應用在計算機視覺問題上,來幫助找出方法,使輸出序列時更好地利用卷積神經網絡來關注輸入的圖片,例如在典型的圖像描述任務中。給定一幅輸入圖像,輸出對該圖像的英文描述。注意力機制用於關注與輸出序列中的每一個詞相關的局部圖像。
「我們提出了一個基於注意力機制的方法,該方法在三個基準數據集上都達到了最先進的性能表現……我們還展示瞭如何使用學得的注意力機制為模型生成過程提供更多可解釋性,演示了學得的對齊與人類直覺一致性很高。」
—— Show, Attend and Tell: Neural Image Caption Generation with Visual Attention, 2016
輸出單詞與輸入圖像特定區域的注意力編譯
和上圖類似,輸出文本中下劃線處單詞對應右側圖片中的泛光區域。圖片來自論文:Show, Attend and Tell: Neural Image Caption Generation with Visual Attention, 2016
3. 語義蘊涵中的注意力機制
給定一個前提場景,並且用英文給出關於該場景的假設,輸出內容是前提和假設是否矛盾、二者是否相互關聯,或者前提是否蘊涵假設。
例如:
前提:「婚禮上的照片」
假設:「某人在結婚」
注意力機制用於將假設中的每一個詞與前提中的詞關聯起來,反之亦然。
我們提出了一個基於 LSTM 的神經模型,它能夠將兩個句子讀取成一個句子來進行語義蘊涵分析,而不是把每個句子都獨立地編碼成一個語義向量。然後,我們用逐詞注意力機制(neural word-by-word attention mechanism)來擴展該模型,以鼓勵對成對單詞和詞組是否存在蘊涵關係作出推理……該擴展模型的基準測試分數比LSTM 高了2.6%,創造了一項新的準確率記錄……
——Reasoning about Entailment with Neural Attention (https://arxiv.org/abs/1509.06664), 2016
前提中的單詞到假設中單詞的注意力編譯。圖片來自論文:Reasoning about Entailment with Neural Attention, 2016
4. 語音識別中的注意力機制
給定一個英文語音片段作為輸入,輸出一個音素序列。注意力機制被用來關聯輸出序列中的每一個音素和輸入序列中特定的語音幀。
「……提出一個新型的基於混合注意力機制的端到端可訓練的語音識別結構,為了在解碼的時候在輸入序列中選擇下一個位置,它同時結合了內容信息和位置信息。該模型令人滿意的一點是它能夠識別比訓練所用的語料更長的語音。」
——Attention-Based Models for Speech Recognition (https://arxiv.org/abs/1506.07503), 2015.
輸出音素到輸入語音幀的注意力編譯。圖片來自論文:Attention-Based Models for Speech Recognition, 2015.
5. 文本摘要中的注意力機制
給定一段英文文章作為輸入序列,輸出一段英文文本來總結輸入序列。注意力機制被用來關聯摘要文本中的每一個詞語與源文本中的對應單詞。
「……提出一個基於 neutral attention 機制的模型用於抽象摘要,該模型在最近神經機器翻譯的進展基礎上發展而來。我們將該概率模型與一個能夠生成準確抽象摘要的生成算法結合起來。」
——A Neural Attention Model for Abstractive Sentence Summarization (https://arxiv.org/abs/1509.00685), 2015
輸入文本中的單詞與輸出摘要的注意力編譯。圖片來自論文:A Neural Attention Model for Abstractive Sentence Summarization, 2015.
延伸閱讀
如果你對在 LSTM 中添加註意力機制感興趣,可以閱讀下面的內容:
深度學習和自然語言處理中的注意力和記憶(Attention and memory in deep learning and NLP,http://www.wildml.com/2016/01/attention-and-memory-in-deep-learning-and- nlp/)
注意力機制(Attention Mechanism,https://blog.heuritech.com/2016/01/20/attention-mechanism/)
基於注意力機制的模型在自然語言處理中的應用(Survey on Attention-based Models Applied in NLP,http://yanran.li/peppypapers/2015/10/07/survey-attention-model-1.html)
[Quora 問答] 將注意力機制引入 RNN 究竟是什麼? (What is exactly the attention mechanism introduced to RNN? https://www.quora.com/What-is-exactly-the-attention-mechanism-introduced-to-RNN-recurrent-neural-network-It-would-be -nice-if-you-could-make-it-easy-to-understand)
神經網絡中的注意力機制是什麼? (What is Attention Mechanism in Neural Networks? https://www.quora.com/What-is-Attention-Mechanism-in-Neural-Networks)
總結
這篇博文介紹了在 LSTM 循環神經網絡中使用注意力機制用於序列預測。
具體而言:
循環神經網絡中的編碼器-解碼器結構使用固定長度的內部表徵,給超長序列的學習帶來了限制。
通過允許網絡學習將輸出序列中的每一項與輸入序列中的相關項相對應,注意力機制克服了編碼器-解碼器結構的這種局限性。
這種方法在多種序列預測問題中得到應用,包括文本翻譯、語音識別等。
原文鏈接:http://machinelearningmastery.com/attention-long-short-term-memory-recurrent-neural-networks/
轉貼自: easyAI
留下你的回應
以訪客張貼回應