要是關(guān)注深度學(xué)習(xí)在自然語(yǔ)言處理方面的研究進(jìn)展驶臊,我相信你一定聽(tīng)說(shuō)過(guò)Attention Model(后文有時(shí)會(huì)簡(jiǎn)稱AM模型)這個(gè)詞莹规。AM模型應(yīng)該說(shuō)是過(guò)去一年來(lái)NLP領(lǐng)域中的重要進(jìn)展之一窖维,在很多場(chǎng)景被證明有效。聽(tīng)起來(lái)AM很高大上揽咕,其實(shí)它的基本思想是相當(dāng)直觀簡(jiǎn)潔的腹泌。本文作者可以對(duì)燈發(fā)誓:在你讀完這篇啰里啰嗦的文章及其后續(xù)文章后,一定可以透徹了解AM到底是什么言询,以及輕易看懂任何有關(guān)論文看上去復(fù)雜的數(shù)學(xué)公式部分哗总。怎么樣,這廣告打的挺有吸引力吧倍试,尤其是對(duì)那些患有數(shù)學(xué)公式帕金森病的患者讯屈。
在正戲開(kāi)演前,我們先來(lái)點(diǎn)題外話县习。
引言及廢話
你應(yīng)該常常聽(tīng)到被捉奸在床的男性經(jīng)常感嘆地說(shuō)一句話:女性的第六感通常都很準(zhǔn)涮母,當(dāng)然這里的女性一般是特指這位男性的老婆或者女友,當(dāng)然也可能是他的某位具有女性氣質(zhì)的男友躁愿。要我說(shuō)叛本,男人的第六感其實(shí)也不差(這里的“男人”特指本文作者本人,當(dāng)然非上文所引用的“男性”彤钟,為避免混淆特做聲明)来候。當(dāng)我第一次看到機(jī)器學(xué)習(xí)領(lǐng)域中的Attention Model這個(gè)名字的時(shí)候,我的第一直覺(jué)就是:這是從認(rèn)知心理學(xué)里面的人腦注意力模型引入的概念逸雹。若干年前营搅,也就是在我年輕不懂事的花樣年華里,曾有一陣子沉迷于人腦的工作機(jī)制梆砸,大量閱讀了認(rèn)知心理學(xué)方面的書(shū)籍和論文转质,而一般注意力模型會(huì)作為書(shū)籍的單獨(dú)一章來(lái)講。下面請(qǐng)?jiān)试S我顯擺一下鄙人淵博的知識(shí)帖世。
注意力這東西其實(shí)挺有意思休蟹,但是很容易被人忽略。讓我們來(lái)直觀地體會(huì)一下什么是人腦中的注意力模型。首先赂弓,請(qǐng)您睜開(kāi)眼并確認(rèn)自己處于意識(shí)清醒狀態(tài)绑榴;第二步,請(qǐng)找到本文最近出現(xiàn)的一個(gè)“Attention Model”字眼(就是“字眼”前面的兩個(gè)英文單詞盈魁,…^@@^)并盯住看三秒鐘彭沼。好,假設(shè)此刻時(shí)間停止备埃,在這三秒鐘你眼中和腦中看到的是什么姓惑?對(duì)了,就是“Attention Model”這兩個(gè)詞按脚,但是你應(yīng)該意識(shí)到于毙,其實(shí)你眼中是有除了這兩個(gè)單詞外的整個(gè)一副畫(huà)面的,但是在你盯著看的這三秒鐘辅搬,時(shí)間靜止唯沮,萬(wàn)物無(wú)息,仿佛這個(gè)世界只有我和你…..對(duì)不起堪遂,串景了介蛉,仿佛這個(gè)世界只有“Attention Model”這兩個(gè)單詞。這是什么溶褪?這就是人腦的注意力模型币旧,就是說(shuō)你看到了整幅畫(huà)面,但在特定的時(shí)刻t猿妈,你的意識(shí)和注意力的焦點(diǎn)是集中在畫(huà)面中的某一個(gè)部分上吹菱,其它部分雖然還在你的眼中,但是你分配給它們的注意力資源是很少的彭则。其實(shí)鳍刷,只要你睜著眼,注意力模型就無(wú)時(shí)不刻在你身上發(fā)揮作用俯抖,比如你過(guò)馬路输瓜,其實(shí)你的注意力會(huì)被更多地分配給紅綠燈和來(lái)往的車(chē)輛上,雖然此時(shí)你看到了整個(gè)世界芬萍;比如你很精心地偶遇到了你心儀的異性尤揣,此刻你的注意力會(huì)更多的分配在此時(shí)神光四射的異性身上,雖然此刻你看到了整個(gè)世界担忧,但是它們對(duì)你來(lái)說(shuō)跟不存在是一樣的…..
這就是人腦的注意力模型芹缔,說(shuō)到底是一種資源分配模型坯癣,在某個(gè)特定時(shí)刻瓶盛,你的注意力總是集中在畫(huà)面中的某個(gè)焦點(diǎn)部分,而對(duì)其它部分視而不見(jiàn)。
其實(shí)吧惩猫,深度學(xué)習(xí)里面的注意力模型工作機(jī)制啊芝硬,它跟你看見(jiàn)心動(dòng)異性時(shí)荷爾蒙驅(qū)動(dòng)的注意力分配機(jī)制是一樣一樣的。
好轧房,前戲結(jié)束拌阴,正戲開(kāi)場(chǎng)。
Encoder-Decoder框架
本文只談?wù)勎谋咎幚眍I(lǐng)域的AM模型奶镶,在圖片處理或者(圖片-圖片標(biāo)題)生成等任務(wù)中也有很多場(chǎng)景會(huì)應(yīng)用AM模型迟赃,但是我們此處只談文本領(lǐng)域的AM模型,其實(shí)圖片領(lǐng)域AM的機(jī)制也是相同的厂镇。
要提文本處理領(lǐng)域的AM模型纤壁,就不得不先談Encoder-Decoder框架,因?yàn)槟壳敖^大多數(shù)文獻(xiàn)中出現(xiàn)的AM模型是附著在Encoder-Decoder框架下的捺信,當(dāng)然酌媒,其實(shí)AM模型可以看作一種通用的思想,本身并不依賴于Encoder-Decoder模型迄靠,這點(diǎn)需要注意秒咨。
Encoder-Decoder框架可以看作是一種文本處理領(lǐng)域的研究模式,應(yīng)用場(chǎng)景異常廣泛掌挚,本身就值得非常細(xì)致地談一下雨席,但是因?yàn)楸疚牡淖⒁饬裹c(diǎn)在AM模型,所以此處我們就只談一些不得不談的內(nèi)容吠式,詳細(xì)的Encoder-Decoder模型以后考慮專文介紹舅世。下圖是文本處理領(lǐng)域里常用的Encoder-Decoder框架最抽象的一種表示:
Encoder-Decoder框架可以這么直觀地去理解:可以把它看作適合處理由一個(gè)句子(或篇章)生成另外一個(gè)句子(或篇章)的通用處理模型。對(duì)于句子對(duì)奇徒,我們的目標(biāo)是給定輸入句子X(jué)雏亚,期待通過(guò)Encoder-Decoder框架來(lái)生成目標(biāo)句子Y。X和Y可以是同一種語(yǔ)言摩钙,也可以是兩種不同的語(yǔ)言罢低。而X和Y分別由各自的單詞序列構(gòu)成:
Encoder顧名思義就是對(duì)輸入句子X(jué)進(jìn)行編碼,將輸入句子通過(guò)非線性變換轉(zhuǎn)化為中間語(yǔ)義表示C:
對(duì)于解碼器Decoder來(lái)說(shuō)胖笛,其任務(wù)是根據(jù)句子X(jué)的中間語(yǔ)義表示C和之前已經(jīng)生成的歷史信息y1,y2….yi-1來(lái)生成i時(shí)刻要生成的單詞yi
每個(gè)yi都依次這么產(chǎn)生网持,那么看起來(lái)就是整個(gè)系統(tǒng)根據(jù)輸入句子X(jué)生成了目標(biāo)句子Y。
Encoder-Decoder是個(gè)非常通用的計(jì)算框架长踊,至于Encoder和Decoder具體使用什么模型都是由研究者自己定的功舀,常見(jiàn)的比如CNN/RNN/BiRNN/GRU/LSTM/Deep LSTM等,這里的變化組合非常多身弊,而很可能一種新的組合就能攢篇論文辟汰,所以有時(shí)候科研里的創(chuàng)新就是這么簡(jiǎn)單列敲。比如我用CNN作為Encoder,用RNN作為Decoder帖汞,你用BiRNN做為Encoder戴而,用深層LSTM作為Decoder,那么就是一個(gè)創(chuàng)新翩蘸。所以正準(zhǔn)備跳樓的憋著勁想攢論文畢業(yè)的同學(xué)可以從天臺(tái)下來(lái)了所意,當(dāng)然是走下來(lái),不是讓你跳下來(lái)催首,你可以好好琢磨一下這個(gè)模型扶踊,把各種排列組合都試試,只要你能提出一種新的組合并被證明有效郎任,那恭喜你:施主姻檀,你可以畢業(yè)了。
扯遠(yuǎn)了涝滴,再拉回來(lái)绣版。
Encoder-Decoder是個(gè)創(chuàng)新游戲大殺器,一方面如上所述歼疮,可以搞各種不同的模型組合杂抽,另外一方面它的應(yīng)用場(chǎng)景多得不得了,比如對(duì)于機(jī)器翻譯來(lái)說(shuō)韩脏,就是對(duì)應(yīng)不同語(yǔ)言的句子缩麸,比如X是英語(yǔ)句子,Y是對(duì)應(yīng)的中文句子翻譯赡矢。再比如對(duì)于文本摘要來(lái)說(shuō)杭朱,X就是一篇文章,Y就是對(duì)應(yīng)的摘要吹散;再比如對(duì)于對(duì)話機(jī)器人來(lái)說(shuō)弧械,X就是某人的一句話,Y就是對(duì)話機(jī)器人的應(yīng)答空民;再比如……總之刃唐,太多了。哎界轩,那位施主画饥,聽(tīng)老衲的話,趕緊從天臺(tái)下來(lái)吧浊猾,無(wú)數(shù)創(chuàng)新在等著你發(fā)掘呢抖甘。
|Attention Model
圖1中展示的Encoder-Decoder模型是沒(méi)有體現(xiàn)出“注意力模型”的,所以可以把它看作是注意力不集中的分心模型葫慎。為什么說(shuō)它注意力不集中呢衔彻?請(qǐng)觀察下目標(biāo)句子Y中每個(gè)單詞的生成過(guò)程如下:
其中f是decoder的非線性變換函數(shù)薇宠。從這里可以看出,在生成目標(biāo)句子的單詞時(shí)米奸,不論生成哪個(gè)單詞昼接,是y1,y2也好爽篷,還是y3也好悴晰,他們使用的句子X(jué)的語(yǔ)義編碼C都是一樣的,沒(méi)有任何區(qū)別逐工。而語(yǔ)義編碼C是由句子X(jué)的每個(gè)單詞經(jīng)過(guò)Encoder編碼產(chǎn)生的铡溪,這意味著不論是生成哪個(gè)單詞,y1,y2還是y3泪喊,其實(shí)句子X(jué)中任意單詞對(duì)生成某個(gè)目標(biāo)單詞yi來(lái)說(shuō)影響力都是相同的棕硫,沒(méi)有任何區(qū)別(其實(shí)如果Encoder是RNN的話,理論上越是后輸入的單詞影響越大袒啼,并非等權(quán)的哈扮,估計(jì)這也是為何Google提出Sequence to Sequence模型時(shí)發(fā)現(xiàn)把輸入句子逆序輸入做翻譯效果會(huì)更好的小Trick的原因)。這就是為何說(shuō)這個(gè)模型沒(méi)有體現(xiàn)出注意力的緣由蚓再。這類(lèi)似于你看到眼前的畫(huà)面滑肉,但是沒(méi)有注意焦點(diǎn)一樣。如果拿機(jī)器翻譯來(lái)解釋這個(gè)分心模型的Encoder-Decoder框架更好理解摘仅,比如輸入的是英文句子:Tom chase Jerry靶庙,Encoder-Decoder框架逐步生成中文單詞:“湯姆”,“追逐”娃属,“杰瑞”六荒。在翻譯“杰瑞”這個(gè)中文單詞的時(shí)候,分心模型里面的每個(gè)英文單詞對(duì)于翻譯目標(biāo)單詞“杰瑞”貢獻(xiàn)是相同的矾端,很明顯這里不太合理掏击,顯然“Jerry”對(duì)于翻譯成“杰瑞”更重要,但是分心模型是無(wú)法體現(xiàn)這一點(diǎn)的秩铆,這就是為何說(shuō)它沒(méi)有引入注意力的原因铐料。沒(méi)有引入注意力的模型在輸入句子比較短的時(shí)候估計(jì)問(wèn)題不大,但是如果輸入句子比較長(zhǎng)豺旬,此時(shí)所有語(yǔ)義完全通過(guò)一個(gè)中間語(yǔ)義向量來(lái)表示钠惩,單詞自身的信息已經(jīng)消失,可想而知會(huì)丟失很多細(xì)節(jié)信息族阅,這也是為何要引入注意力模型的重要原因篓跛。
上面的例子中,如果引入AM模型的話坦刀,應(yīng)該在翻譯“杰瑞”的時(shí)候愧沟,體現(xiàn)出英文單詞對(duì)于翻譯當(dāng)前中文單詞不同的影響程度蔬咬,比如給出類(lèi)似下面一個(gè)概率分布值:
(Tom,0.3)(Chase,0.2)(Jerry,0.5)
每個(gè)英文單詞的概率代表了翻譯當(dāng)前單詞“杰瑞”時(shí),注意力分配模型分配給不同英文單詞的注意力大小沐寺。這對(duì)于正確翻譯目標(biāo)語(yǔ)單詞肯定是有幫助的林艘,因?yàn)橐肓诵碌男畔ⅰM砘煳耄繕?biāo)句子中的每個(gè)單詞都應(yīng)該學(xué)會(huì)其對(duì)應(yīng)的源語(yǔ)句子中單詞的注意力分配概率信息狐援。這意味著在生成每個(gè)單詞Yi的時(shí)候,原先都是相同的中間語(yǔ)義表示C會(huì)替換成根據(jù)當(dāng)前生成單詞而不斷變化的Ci究孕。理解AM模型的關(guān)鍵就是這里啥酱,即由固定的中間語(yǔ)義表示C換成了根據(jù)當(dāng)前輸出單詞來(lái)調(diào)整成加入注意力模型的變化的Ci。增加了AM模型的Encoder-Decoder框架理解起來(lái)如圖2所示厨诸。
圖2引入AM模型的Encoder-Decoder框架
即生成目標(biāo)句子單詞的過(guò)程成了下面的形式:
而每個(gè)Ci可能對(duì)應(yīng)著不同的源語(yǔ)句子單詞的注意力分配概率分布镶殷,比如對(duì)于上面的英漢翻譯來(lái)說(shuō),其對(duì)應(yīng)的信息可能如下:
其中微酬,f2函數(shù)代表Encoder對(duì)輸入英文單詞的某種變換函數(shù)绘趋,比如如果Encoder是用的RNN模型的話,這個(gè)f2函數(shù)的結(jié)果往往是某個(gè)時(shí)刻輸入xi后隱層節(jié)點(diǎn)的狀態(tài)值颗管;g代表Encoder根據(jù)單詞的中間表示合成整個(gè)句子中間語(yǔ)義表示的變換函數(shù)陷遮,一般的做法中,g函數(shù)就是對(duì)構(gòu)成元素加權(quán)求和忙上,也就是常常在論文里看到的下列公式:
假設(shè)Ci中那個(gè)i就是上面的“湯姆”拷呆,那么Tx就是3,代表輸入句子的長(zhǎng)度疫粥,h1=f(“Tom”)茬斧,h2=f(“Chase”),h3=f(“Jerry”),對(duì)應(yīng)的注意力模型權(quán)值分別是0.6,0.2,0.2梗逮,所以g函數(shù)就是個(gè)加權(quán)求和函數(shù)项秉。如果形象表示的話,翻譯中文單詞“湯姆”的時(shí)候慷彤,數(shù)學(xué)公式對(duì)應(yīng)的中間語(yǔ)義表示Ci的形成過(guò)程類(lèi)似下圖:
圖3 Ci的形成過(guò)程
這里還有一個(gè)問(wèn)題:生成目標(biāo)句子某個(gè)單詞娄蔼,比如“湯姆”的時(shí)候,你怎么知道AM模型所需要的輸入句子單詞注意力分配概率分布值呢底哗?就是說(shuō)“湯姆”對(duì)應(yīng)的概率分布:
(Tom,0.6)(Chase,0.2)(Jerry,0.2)
是如何得到的呢岁诉?
為了便于說(shuō)明,我們假設(shè)對(duì)圖1的非AM模型的Encoder-Decoder框架進(jìn)行細(xì)化跋选,Encoder采用RNN模型涕癣,Decoder也采用RNN模型,這是比較常見(jiàn)的一種模型配置前标,則圖1的圖轉(zhuǎn)換為下圖:
圖4 RNN作為具體模型的Encoder-Decoder框架
那么用下圖可以較為便捷地說(shuō)明注意力分配概率分布值的通用計(jì)算過(guò)程:
圖5 AM注意力分配概率計(jì)算
對(duì)于采用RNN的Decoder來(lái)說(shuō)坠韩,如果要生成yi單詞距潘,在時(shí)刻i,我們是可以知道在生成Yi之前的隱層節(jié)點(diǎn)i時(shí)刻的輸出值Hi的只搁,而我們的目的是要計(jì)算生成Yi時(shí)的輸入句子單詞“Tom”音比、“Chase”、“Jerry”對(duì)Yi來(lái)說(shuō)的注意力分配概率分布氢惋,那么可以用i時(shí)刻的隱層節(jié)點(diǎn)狀態(tài)Hi去一一和輸入句子中每個(gè)單詞對(duì)應(yīng)的RNN隱層節(jié)點(diǎn)狀態(tài)hj進(jìn)行對(duì)比洞翩,即通過(guò)函數(shù)F(hj,Hi)來(lái)獲得目標(biāo)單詞Yi和每個(gè)輸入單詞對(duì)應(yīng)的對(duì)齊可能性,這個(gè)F函數(shù)在不同論文里可能會(huì)采取不同的方法明肮,然后函數(shù)F的輸出經(jīng)過(guò)Softmax進(jìn)行歸一化就得到了符合概率分布取值區(qū)間的注意力分配概率分布數(shù)值菱农。圖5顯示的是當(dāng)輸出單詞為“湯姆”時(shí)刻對(duì)應(yīng)的輸入句子單詞的對(duì)齊概率缭付。絕大多數(shù)AM模型都是采取上述的計(jì)算框架來(lái)計(jì)算注意力分配概率分布信息柿估,區(qū)別只是在F的定義上可能有所不同。
上述內(nèi)容就是論文里面常常提到的Soft Attention Model的基本思想陷猫,你能在文獻(xiàn)里面看到的大多數(shù)AM模型基本就是這個(gè)模型秫舌,區(qū)別很可能只是把這個(gè)模型用來(lái)解決不同的應(yīng)用問(wèn)題。那么怎么理解AM模型的物理含義呢绣檬?一般文獻(xiàn)里會(huì)把AM模型看作是單詞對(duì)齊模型足陨,這是非常有道理的。目標(biāo)句子生成的每個(gè)單詞對(duì)應(yīng)輸入句子單詞的概率分布可以理解為輸入句子單詞和這個(gè)目標(biāo)生成單詞的對(duì)齊概率娇未,這在機(jī)器翻譯語(yǔ)境下是非常直觀的:傳統(tǒng)的統(tǒng)計(jì)機(jī)器翻譯一般在做的過(guò)程中會(huì)專門(mén)有一個(gè)短語(yǔ)對(duì)齊的步驟墨缘,而注意力模型其實(shí)起的是相同的作用。在其他應(yīng)用里面把AM模型理解成輸入句子和目標(biāo)句子單詞之間的對(duì)齊概率也是很順暢的想法零抬。
當(dāng)然镊讼,我覺(jué)得從概念上理解的話,把AM模型理解成影響力模型也是合理的平夜,就是說(shuō)生成目標(biāo)單詞的時(shí)候蝶棋,輸入句子每個(gè)單詞對(duì)于生成這個(gè)單詞有多大的影響程度。這種想法也是比較好理解AM模型物理意義的一種思維方式忽妒。
圖6是論文“A Neural Attention Model for Sentence Summarization”中玩裙,Rush用AM模型來(lái)做生成式摘要給出的一個(gè)AM的一個(gè)非常直觀的例子。
圖6句子生成式摘要例子
這個(gè)例子中段直,Encoder-Decoder框架的輸入句子是:“russian defense minister ivanov called sunday for the creation of a joint front for combating global terrorism”吃溅。對(duì)應(yīng)圖中縱坐標(biāo)的句子。系統(tǒng)生成的摘要句子是:“russia calls for joint front against terrorism”鸯檬,對(duì)應(yīng)圖中橫坐標(biāo)的句子决侈。可以看出模型已經(jīng)把句子主體部分正確地抽出來(lái)了京闰。矩陣中每一列代表生成的目標(biāo)單詞對(duì)應(yīng)輸入句子每個(gè)單詞的AM分配概率颜及,顏色越深代表分配到的概率越大甩苛。這個(gè)例子對(duì)于直觀理解AM是很有幫助作用的。