自然语言处理中的Attention Model:是什么以及为什么[一]
轉載自??自然語言處理中的Attention Model:是什么以及為什么[一]
自然語言處理中的Attention Model:是什么以及為什么[一]
1、前言
要是關注深度學習在自然語言處理方面的研究進展,我相信你一定聽說過Attention Model(后文有時會簡稱AM模型)這個詞。
AM模型應該說是過去一年來NLP領域中的重要進展之一,在很多場景被證明有效。聽起來AM很高大上,其實它的基本思想是相當直觀簡潔的。
本文作者可以對燈發誓:在你讀完這篇啰里啰嗦的文章及其后續文章后,一定可以透徹了解AM到底是什么,以及輕易看懂任何有關論文看上去復雜的數學公式部分。
怎么樣,這廣告打的挺有吸引力吧,尤其是對那些患有數學公式帕金森病的患者。
?
2、Encoder-Decoder框架
本文只談談文本處理領域的AM模型,在圖片處理或者(圖片-圖片標題)生成等任務中也有很多場景會應用AM模型,但是我們此處只談文本領域的AM模型,其實圖片領域AM的機制也是相同的。
要提文本處理領域的AM模型,就不得不先談Encoder-Decoder框架,因為目前絕大多數文獻中出現的AM模型是附著在Encoder-Decoder框架下的,當然,其實AM模型可以看作一種通用的思想,本身并不依賴于Encoder-Decoder模型,這點需要注意。
Encoder-Decoder框架可以看作是一種文本處理領域的研究模式,應用場景異常廣泛,本身就值得非常細致地談一下,但是因為本文的注意力焦點在AM模型。
所以此處我們就只談一些不得不談的內容,詳細的Encoder-Decoder模型以后考慮專文介紹。下圖是文本處理領域里常用的Encoder-Decoder框架最抽象的一種表示:
Encoder-Decoder框架可以這么直觀地去理解:可以把它看作適合處理由一個句子(或篇章)生成另外一個句子(或篇章)的通用處理模型。
對于句子對<X,Y>,我們的目標是給定輸入句子X,期待通過Encoder-Decoder框架來生成目標句子Y。
X和Y可以是同一種語言,也可以是兩種不同的語言。而X和Y分別由各自的單詞序列構成:
Encoder顧名思義就是對輸入句子X進行編碼,將輸入句子通過非線性變換轉化為中間語義表示C:
對于解碼器Decoder來說,其任務是根據句子X的中間語義表示C和之前已經生成的歷史信息y1,y2….yi-1來生成i時刻要生成的單詞yi?
每個yi都依次這么產生,那么看起來就是整個系統根據輸入句子X生成了目標句子Y。
Encoder-Decoder是個非常通用的計算框架,至于Encoder和Decoder具體使用什么模型都是由研究者自己定的,常見的比如CNN/RNN/BiRNN/GRU/LSTM/Deep LSTM等,這里的變化組合非常多,而很可能一種新的組合就能攢篇論文,所以有時候科研里的創新就是這么簡單。
比如我用CNN作為Encoder,用RNN作為Decoder,你用BiRNN做為Encoder,用深層LSTM作為Decoder,那么就是一個創新。所以正準備跳樓的憋著勁想攢論文畢業的同學可以從天臺下來了,當然是走下來,不是讓你跳下來。
你可以好好琢磨一下這個模型,把各種排列組合都試試,只要你能提出一種新的組合并被證明有效,那恭喜你:施主,你可以畢業了。
扯遠了,再拉回來。
?
3、總結
Encoder-Decoder是個創新游戲大殺器,一方面如上所述,可以搞各種不同的模型組合,另外一方面它的應用場景多得不得了,比如對于機器翻譯來說,<X,Y>就是對應不同語言的句子,比如X是英語句子,Y是對應的中文句子翻譯。
再比如對于文本摘要來說,X就是一篇文章,Y就是對應的摘要;
再比如對于對話機器人來說,X就是某人的一句話,Y就是對話機器人的應答;再比如……總之,太多了。哎,那位施主,聽老衲的話,趕緊從天臺下來吧,無數創新在等著你發掘呢。
?
由于篇幅不宜過多,后面的內容在自然語言處理中的Attention Model:是什么以及為什么[二]中推送。
?
總結
以上是生活随笔為你收集整理的自然语言处理中的Attention Model:是什么以及为什么[一]的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 适合圆脸男生的发型设计
 - 下一篇: 马丽个人资料 马丽介绍