自然語言處理中的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,那麼就是一個創新。所以正準備跳樓的憋著勁想攢論文畢業的同學可以從天台下來了,當然是走下來,不是讓你跳下來。

你可以好好琢磨一下這個模型,把各種排列組合都試試,只要你能提出一種新的組合併被證明有效,那恭喜你:施主,你可以畢業了。

扯遠了,再拉回來。

總結

Encoder-Decoder是個創新遊戲大殺器,一方面如上所述,可以搞各種不同的模型組合,另外一方面它的應用場景多得不得了,比如對於機器翻譯來說,<X,Y>就是對應不同語言的句子,比如X是英語句子,Y是對應的中文句子翻譯。

再比如對於文本摘要來說,X就是一篇文章,Y就是對應的摘要;

再比如對於對話機器人來說,X就是某人的一句話,Y就是對話機器人的應答;再比如……總之,太多了。哎,那位施主,聽老衲的話,趕緊從天台下來吧,無數創新在等著你發掘呢。

由於篇幅不宜過多,後面的內容明天會在 自然語言處理中的Attention Model:是什麼以及為什麼[二] 中推送。

原文地址:

blog.csdn.net/malefacto

轉載聲明:本文轉載自「機器學習演算法與自然語言處理」,搜索「yizhennotes」即可關注。


如果您有任何關於Pytorch方面的問題,歡迎進【集智—清華】火炬群與大家交流探討,添加集智小助手微信swarmaAI,備註(pytorch交流群),小助手會拉你入群。

關注集智AI學園公眾號

獲取更多更有趣的AI教程吧!

搜索微信公眾號:swarmAI

集智AI學園QQ群:426390994

學園網站: campus.swarma.org

weixin.qq.com/r/FzpGXp3 (二維碼自動識別)

weixin.qq.com/r/FzpGXp3 (二維碼自動識別)


推薦閱讀:

目前 AI 研究界里「文本風格遷移」有什麼重大成果?
概率圖模型簡單概述
斯坦福CS224N深度學習自然語言處理(二)
從CNN視角看在自然語言處理上的應用
完結篇|一文搞懂k近鄰(k-NN)演算法(二)

TAG:自然语言处理 | 人工智能 |