本筆記基于斯坦福大學2019年冬季CS224N最新課程:基于深度學習的自然語言處理,希望可以接觸到最前沿的進展。
主要內容
今天的主題是 Transformer。Transformer 不是變形金剛,但是比變形金剛更強大。這里暫時譯作變換器。
序列表征循環神經網絡卷積神經網絡注意力文本生成變換器編碼器自注意力解碼器自注意力殘差的重要性圖像生成概率圖像生成結合注意力和局部性音樂變換器音樂的原始表征音樂的語言模型音樂生成示例音樂中的自相似性平移不變性相對注意和圖消息傳遞神經網絡總結和展望自注意力研究熱點遷移學習優化和加大模型其他自注意力研究正在進行未來展望下節預告閱讀更多
序列表征
機器學習之前的首要任務是了解數據集是什么結構,數據集是否對稱,模型是否具有歸納偏見來擬合數據集的這些屬性等等。
通過這一節,我們會看到自注意力確實能夠模擬歸納偏見,而歸納偏見對解決問題是有用的。
循環神經網絡
大多數據都是不等長數據。處理不等長數據的主力模型是循環神經網絡(RNN)。RNN天生適合處理句子和像素序列。LSTM、GRU等變體是主要的RNN模型。
RNN
RNN通常按照順序接收一個字符串、一個句子甚至一個圖像,然后在每一步產生一個連續表征,這個連續表征匯總了這一步之前處理的所有信息。但是:
RNN必須等待上一步完成,才能繼續下一步。這不利于并行計算。(當然并行計算越強,也會吸納更多數據,最后拖慢并行計算)
RNN很難把指代信息等各種長程、短程依賴信息擠壓到固定大小的向量中。
RNN無法對語言中的結構層次進行建模。
卷積神經網絡
在自注意力(self-attention)之前,卷積序列模型(CNN)在某種程度上克服了以上部分困難。
CNN
CNN可以在每個位置同時運用卷積,易于并行化。
CNN可以充分利用局部依賴關系
兩個位置之間的“交互距離”是線性或對數的
長程依賴通過增加網絡深度實現
注意力
編碼器和解碼器之間的注意力機制是神經機器翻譯取得突破的關鍵部件。
注意力是基于內容的記憶提取機制。
既然如此,為什么不將注意力用于表征學習?
下圖是注意力的大體框架:
自注意力
如果想重新表征某個單詞,可先將這個單詞與周圍所有單詞作比較,然后得到周圍所有單詞的加權組合,即所有信息的匯總。這就是注意力機制的原理。當然還可以添加前饋層,計算新的特征。
文本生成
自注意力在文本生成中起到了很大作用。
注意力允許一個單詞直接與任何位置的單詞交互,任何兩個位置之間的路徑距離是固定的。
注意力通過softmax實現門控/乘法交互
注意力易于并行化
我們知道卷積序列到序列的文本生成已經非常成功,那么注意力表征學習能否成為主力呢?
注意力在大型機器翻譯系統或大型文本生成系統中管用嗎?
變換器
變換器(Transformer)是自注意力的集大成者。
變換器
假如現在是英德翻譯。使用的是標準的編碼器-解碼器架構。
編碼器側:
首先是自注意力層,用于同步計算每個位置的表征。然后是前饋層。中間各層有殘差連接。這些結構會重復若干次。
注意:改變單詞順序不會影響注意力的實際輸出。為了保持順序,需要增加位置表征。
解碼器側:
首先是用自注意力模仿的語言模型。但是要掩蓋掉之后看見的位置。比如,第一個位置不能看見后續的位置。
然后是編碼器-解碼器注意力層(實際關注的是編碼器最后的注意力層和前饋層),重復若干層。最后是標準的交叉熵損失。
編碼器自注意力
那么如何計算注意力呢?
編碼器自注意力
假設現在要計算位置的表征。
首先對查詢()作線性變換。
然后對輸入的所有位置(鍵)作線性變換。
做點乘和softmax,最后計算所有這些位置的向量的凸組合。在凸組合之前,要對值作線性變換。
接著再作一次線性變換,整合這些信息,送入前饋層。
所有這些運算可用兩個矩陣相乘表示,平方根系數是縮放因子,防止點乘爆炸。
解碼器自注意力
解碼器側大致相同。
解碼器自注意力
不同點是將掩蓋位置的logit設為非常大的負數,讓這些位置的概率變成0。
注意力成本低廉!尤其當維度遠遠大于長度時。
length=1000 dim=1000 kernel_width=3
注意力雖好,但仍有一個問題。在語言中,我們通常想知道主語、謂語和賓語。
假設現在運用了一個卷積濾波器。實際上,根據相對位置,會有不同的線性變換。
比如綠色線性變換能從I的詞嵌入拾取主語信息;紅色線性變換能從kicked拾取謂語信息;藍色線性變換能從ball拾取賓語信息。如下圖所示:
卷積
但是單個注意力層不一樣,無法做到這一點。
自注意力:平均
注意力是凸組合,線性變換處處相同。注意力提供的是混合比例,無法從不同位置拾取不同信息。
假如現在有一個主語注意力層:
注意力頭:關注主語信息
注意力層相當于特征檢測器。注意力承載著一個線性變換,會投射到關注句法的空間,比如關注主語或賓語的空間。
我們可以增加其他注意力層,也叫注意力頭,用于關注謂語信息:
注意力頭:關注謂語信息
還可以再增加注意力頭,用于關注賓語信息:
注意力頭:關注賓語信息
所有這些都可以并行完成。
平行注意力頭
為了提高效率,我們會降低注意力頭的維度。
如果注意力頭是位置的函數,注意力幾乎可以模擬卷積。雖然增加了softmax,但計算量并未增加。因為中間有降維處理。
在機器翻譯中,變換器效果遠超之前的方法。
變換器效果
但是這里的意思并不是說注意力架構比LSTM具有更好的表現力。
理論證明,LSTM可以模擬任何函數。也許注意力架構只是便于隨機梯度下降(SGD)。
有一點需要指出:注意力確實可以直接對任何兩個詞語之間的關系進行建模。
殘差的重要性
在 變換器 架構中,層與層之間都有殘差連接,并且只在模型輸入中加入位置信息,不會在每一層都注入位置信息。
如左圖所示,殘差可以帶來非常強的對角聚焦。
殘差的重要性
當把殘差連接切斷時,得到的注意力分布如中間圖所示。顯然,沒有殘差就無法拾取到對角線。
殘差可以將位置信息攜帶至更高層,使后續層也有位置概念。
但如果切斷殘差,在每一層都添加位置信息,雖然不能準確恢復,但至少能在一定程度找回對角聚焦。如右圖所示。
所以殘差效果更好,殘差能更好地傳遞位置信息。
綜上,注意力可以模擬長短程關系,有利于文本生成。
圖像生成
在圖像和音樂中,我們經常看到某些相似結構或歸納偏見會不斷重復。
圖像中的自相似
這些主題會在不同尺度上重度。
在下面梵高的油畫中,這些球狀結構就是自相似性。
梵高:繁星之夜
它們會不斷重復,但又具有不同尺度。
音樂也是一樣,主題有時會立即重復,有時會在后面重復。
音樂中的自相似
概率圖像生成
那么,注意力機制能否有助于生成圖像和音樂?
方法是沿用標準的圖像模型或概率圖像模型,并轉換成序列模型,相當于圖像中的語言模型。
RNN(PixelCNN)和CNN(PixelRNN)都達到一流水平。融合門控機制的CNN與RNN不相上下。CNN由于并行化速度要快得多。
但是,對于圖像而言,長程依賴(如對稱性)也很重要,尤其隨著圖像尺寸不斷變大,其重要性也與日俱增。
用CNN模擬長程依賴需要:
增加層數,這會增加訓練難度
增大內核,這會增加參數和計算代價
但是注意力能減少層數,降低計算代價,同時獲得遙遠像素之間的依賴關系。
1999 年 Efros 和 Leung 在訓練集中找到自相似的像斑,然后用于補充信息。
紋理合成
這相當于在做圖像生成。
實際上,歷史上真有一種圖像降噪的方法,叫非局部均值。如果要給下圖像斑p降噪,那么需要計算該像斑與圖像中其他像斑的相似度,然后據此拉取信息。如下圖所示:
非局部均值法
這里的底層邏輯是:圖像具有非常高的自相似性。
現在,我們可以直接套用編碼器自注意力機制,只需將詞向量換成像斑。如下圖所示:
圖像自注意力
這是一種可微的非局部均值法。
圖像變換器(Image Transformer)與之前的變換器結構如出一轍。
圖像變換器
這里使用二維位置表征。
結合注意力和局部性
圖像拉平后,長度一般很長。即使32x32的圖像,拉平后也有1024像素,這限制了注意力機制。
簡單的辦法是像卷積一樣,使用局部窗口。由于圖像具有空間局部性,將注意力窗口限制在局部鄰域,仍然可以獲得較好的效果。
第二種方法是光柵化。
光柵化分成一維和二維。
在一維光柵化中,單個查詢塊沿著橫向對記憶塊做注意力。
局部一維注意力
在二維光柵化中,仍然沿用標準的二維局部性,這實際上是在按塊生成圖像。
局部二維注意力
這些圖像變換器都非常類似:
圖像變形器層
下圖是非條件圖像生成模型效果對比:
非條件圖像生成
圖像變換器可以獲得更低的困惑度。但PixelSNAIL融合了卷積和注意力,所以效果超過了圖像變換器。之所以使用困惑度度量,是因為這些是概率模型,相當于圖像中的語言模型。語言模型如何分解僅僅取決于如何光柵化。在一維光柵化中,先行后列。在二維光柵化中,先塊,然后在每塊內光柵化。
如下圖所示,注意力可以很好地捕獲結構化對象。雖然還沒有達到GAN的水平。
Cifar10樣本
在超清圖像生成中,需要大量條件信息,這時會鎖定不少模式,所以輸出端的選項會非常有限。
如下圖所示,變換器的圖像生成效果也好得多。可以得到更好的面部定位和結構。下圖是不同溫度下的樣本。
CelebA超清圖像
圖像生成使用人工評測。變換器生成的假照片欺騙率差不多是之前成果的4倍。如下表所示:
CelebA超清圖像
當然,這些成果與英偉達最新的GAN成果相比,簡直是小巫見大巫。沒辦法,起步晚,希望能趕上來。
這里的重點是兩個問題:
模型能否捕獲某些結構?
模型能否提供多樣性?極大似然本質上能提供多樣性。
于是設計了填圖任務。為什么是填圖任務?因為一旦確定一半圖像,實際上去掉了很多可能的模式。這樣更容易采樣。
在下圖中,第一列是模型輸入,最右側是真實圖片。
條件圖像生成
看第三行最左側這匹馬,乍一看,像是有人在拉。而模型輸出的某些圖像也確實有人影。模型,或者數據告訴模型要捕捉世界的某種結構。
再看第四行的小狗。模型拒絕想像整個椅子。
可見,圖像生成仍然充滿困難。
音樂變換器(Music Transformer)
圖像有很多自相似,音樂也有很多自相似。
可以想見,變換器應該也適用于音樂生成。接下來會對自注意力做個擴展,即增加相對信息,以便用于音樂生成。
音樂的原始表征
先來看一看音樂的原始表征。
我們用語言作類比。
一段文本,經朗讀后,會形成聲音。
音樂也是類似。
作曲家產生創意,寫下樂譜,演奏者演奏(顯示為MIDI鋼琴卷簾),再經過合成器后,形成音樂。如下圖所示:
音樂生成分解
本節的主要關注點是樂譜,但其實是演奏。演奏是數字鋼琴的符號化表征。所以演奏的相關信息可以記錄下來。
音樂的語言模型
演奏RNN
具體而言,音樂序列模型的每一步輸出是打開音符、推進時鐘、關閉音符諸如此類的動態信息。
傳統上都把音樂當作語言進行建模,因此大都使用循環神經網絡。
但這涉及到大量的壓縮,需要將較長序列擠壓成固定長度的向量。如果音樂重復距離很長,這種擠壓就變得非常困難。
音樂生成示例
接下來分別給出RNN、變換器、音樂變換器生成的示例。先聽一聽有什么區別,然后介紹對變換器做的改進。
給定的主題是肖邦練習曲片段:
起始主題
使用RNN做的生成:
RNN音樂生成
可以看到,在剛剛開始的時候,模型能夠能夠很好得重復主題,但很快就跑偏了。所以在經過較長距離后,RNN對于過去的記憶越來越模糊。
接下來是變換器做的生成:
注意模型訓練時的長度是所聽長度的一半,希望模型能對更長長度進行泛化。
普通變換器音樂生成
可以看到,在開始的時候,模型能夠能夠很好得重復主題,但當超出訓練長度后,模型效果開始變差,不知道如何應對更長的音樂背景。
最后是音樂變換器做的生成:
音樂變換器音樂生成
可以直觀地看到,模型能夠非常好得保持主題一致。
音樂中的自相似性
我們之前談到音樂的自相似性。從下面這張圖可以看到很多重復。
音樂中的自相似性
再看看自注意力結構,模型的確注意到了相關部分。
音樂變換器的片斷
灰色部分是主題出現的地方。不同顏色代表不同的注意力頭,這些注意力頭注意到了灰色部分。
下面是示例動畫,邊播放邊顯示預測時正在關注的音符。這種自注意力是音符級或事件級的。所以觀察時,會看到多個注意力頭在移動。
那么音樂變換器是怎么做到的?
普通的注意力機制相當于過去歷史的加權平均。如下圖所示:
注意力:加權平均
注意力的優點是,無論距離多遠,都能直接訪問。如果前面出現某個主題,那么后面可以根據相似度檢索到這些主題。但是這就像詞袋模型一樣,無法捕捉前后結構。
因此人們提出位置正弦曲線,如下圖所示:
注意力:加權平均
這基本上是把索引放入不同移動速度的正弦曲線。距離近的位置具有相似的橫截面積。
相比之下,卷積則通過固定濾波器的滑動來捕捉相對距離。如下圖所示:
卷積:相對位置的不同線性變換
從某種程度而言,卷積就像一種剛性結構,可以明確地引入距離信息。
下面的多頭相對注意力則是以上的融合:
相對注意力:多頭注意力+卷積
一方面,可以直接訪問歷史。另一方面,又能把握這個歷史的相對關系,抓住平移不變性。音樂變換器之所以能根據起始樣本,生成連貫的音樂,是因為在某種程度上依賴了這種平移不變性,將相對信息向前傳遞。
通常,變換器對比的是查詢和鍵,得到的是自相似方陣。如下圖所示:
注意力
相對注意力則增加了一項,便于每次做對比時,考慮相距多遠。
相對注意力
從英德翻譯來看,變換器有相對位置表征比無相對位置表征效果要好。
但在翻譯中,序列通常較短,可能只有50到100個單詞。但在剛才的音樂中,時間步達到了2000。由于要構建下圖所示的三維張量,這非常耗內存。
首先要計算相對距離,然后查找與之對應的嵌入。這就有LxL的矩陣。另外還要在每個位置收集嵌入,即深度。這就是三維張量。
實際上,查詢和嵌入距離可以直接相乘,這時得到按相對距離排序的查詢,但是需要按鍵排序的查詢。我們只需做一系列的歪斜,使之變成右邊的配置。如下圖所示:
下圖是兩者內存需求的差異:
其實很多情況下,真正的挑戰是提高內存效率,以便建模更長的序列。
下面欣賞一段音樂變換器生成爵士樂:
總而言之,相對注意力是做音樂生成的強大機制,當然它也有助于機器翻譯。
平移不變性
相對注意力在圖像中的作用類似于卷積,那就是實現了平移不變性。
例如,計算紅點的特征不依賴于狗在圖像中的位置,也就是不依賴于絕對位置。
卷積在平移不變性這方面做得非常好。
現在,相對注意力達到了完全相同、甚至更好的效果。
實現平移不變性對于圖像處理而言是非常重要的。
所以在圖像半監督學習中運用自注意力會是一個很好的方向。
相對注意和圖
相對注意力的另外一個用武之地是圖結構。
設想下面的相似圖。紅邊代表公司的概念;藍邊代表水果的概念。
關系歸納偏見
蘋果占了兩種形式。
相對注意力
可以想象,相對注意力可以用來建模不同元素概念的相似度。
所以圖問題可以使用相對注意力。
消息傳遞神經網絡
在圖方面,之前也有相關工作,被稱為消息傳遞神經網絡。
量子化學中的神經消息傳遞
如果看一看消息傳遞函數,其實只是在兩個節點之間傳遞消息。
實際上,可以把自注意力看成全連接雙偶圖,并在節點之間傳遞消息。
自注意力和消息傳遞網絡的唯一不同之處在于:
消息傳遞網絡是在兩個節點之間傳遞消息,自注意力是在所有節點之間都有互動。
另外,消息傳遞論文還提出了多塔的概率,這和多頭注意力如出一轍。
多塔結構
總結和展望
自注意力
總結一下,自注意力機制具有以下優點:
任何兩個位置之間的路徑長度是固定的
具有無限記憶,無需將信息壓縮到有限固定空間
易于并行化
可以模擬自相似性
相對注意力有平移不變性,能夠建模時間、音樂和圖
-
神經網絡
+關注
關注
42文章
4793瀏覽量
102039 -
cnn
+關注
關注
3文章
353瀏覽量
22547
原文標題:變換器(Transformer)和自注意力(CS224N-2019-14)
文章出處:【微信號:gh_b11486d178ef,微信公眾號:語言和智能】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
卷積神經網絡如何使用
卷積神經網絡一維卷積的處理過程
卷積神經網絡模型發展及應用
循環神經網絡注意力的模擬實現
基于異質注意力的循環神經網絡模型

評論