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