【機器學習】關於注意力模型(Attention-model)的理解和應用

注意力模型是近年來在序列處理領域新提出的機器學習方法,在語言翻譯等領域取得了不錯的效果。要想了解注意力模型,那麼必須對現在的機器學習各領域有一定的瞭解,而且要了解encoder-decoder基本思想。

首先可以大致的概括下目前的機器學習尤其是深度學習的各個領域。圖像方面,CNN當之無愧是絕對的主力,並且在各大公司的研究下仍然在發力。NLP(自然語言處理)方面,RNN型的網絡仍然佔多數,但是自從Facebook用CNN搭建的翻譯模型超越谷歌的Seq2Seq以後,CNN已經開始蠶食RNN的領域。序列數據的處理不再是RNN類網絡一家獨大。

Attention-Model是Seq2Seq的一種,所謂的sequence就是指序列數據,序列數據處理一般有Seq2Label模型,如心電圖分類、情感分析等。和Seq2Seq模型,如語言翻譯和序列預測。

Encoder-Decoder

Attention-model是在編碼-解碼模型的基礎上改進而來,所以在瞭解Attention-model前需要了解Encoder-Decoder的基本原理。

由上圖可以清楚的看出,該結構由兩部分組成,前面是由編碼器處理輸入信號,最後輸出一個包含着序列信息的vector。解碼器的輸入是自身的input然後加上前面編碼器輸出的編碼信息。

編碼器和解碼器的網絡可以選擇任意的結構,但是在NLP中選擇RNN類網絡的居多,如常用的LSTM和GRU等。

以語言翻譯爲例,前面編碼器的輸入是想要翻譯的語言序列。經過編碼器後產生一個代表着輸入語句的語義編碼C,然後解碼器使用語義編碼C、編碼器的輸出和一個起始符作爲輸入,共同完成解碼工作。

我們可以看出該結構有一個明顯的短板,即語義編碼C是固定長度的。如果前面的序列比較長,那麼語義編碼C中包含的信息大部分都是關於序列後段的,前段的信息很可能已經被替換掉或者覆蓋掉。因此序列越長這個問題就會越明顯。

Attention-model

爲了克服普通的Encoder-Decoder結構的缺陷,一種新的模型被提出。其主要思想是選擇編碼過程中重要的部分來作爲編碼的輸入。根據量化的思想,主要做法就是對編碼階段的每個輸出增加一個權重(用softmax獲得),而且這個權重是根據編碼過程中的隱含狀態計算得到的,這樣每一個序列都有一個不同的語義編碼,由此決定序列中每一個部分的重要性。這樣就可以很好的避免普通Encoder-Decoder模型的短板。

上圖就是Attention模型中語義編碼Ct的示意圖,h是序列中向量的隱含狀態,a是由計算得到的權重,分別乘以對應的h後求和就可以得到該序列的語義編碼,a數值大的部分代表該部分的向量比較重要。

編碼部分就是一個雙向的RNN,目前使用GRU的居多,每個向量不再是產生一個隱含狀態,而是產生一個由前向和後向的隱含狀態的拼接。裏面包含着向量的前後聯繫。

應用

Attention-model主要是在翻譯領域應用較多,即解碼部分也是一個序列對序列的輸出,那麼我們怎麼用Attention來處理分類任務呢。在情感分析的文章中,有作者是將語義編碼視作一個高度概括的向量,然後直接用作分類。但我個人認爲用一個單層的GRU來處理下編碼信息然後再做分類可能會更完整。總之Attention模型在處理序列的任務中取得了不錯的效果,而且其改進的空間也非常大。

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