深度学习(二十四)——L2 Normalization, Attention(1)
L2 Normalization
L2 Normalization本身并不復雜,然而多數資料都只提到1維的L2 Normalization的計算公式:
x=[x1,x2,…,xd]y=[y1,y2,…,yd]y=x∑di=1x2i ̄ ̄ ̄ ̄ ̄ ̄ ̄√=xxTx ̄ ̄ ̄ ̄√x=[x1,x2,…,xd]y=[y1,y2,…,yd]y=x∑i=1dxi2=xxTx
對于多維L2 Normalization幾乎未曾提及,這里以3維tensor:A[width, height, channel]為例介紹一下多維L2 Normalization的計算方法。
多維L2 Normalization有一個叫axis(有時也叫dim)的參數,如果axis=0的話,實際上就是將整個tensor flatten之后,再L2 Normalization。這個是比較簡單的。
這里說說axis=3的情況。axis=3意味著對channel進行Normalization,也就是:
Bxy=∑z=0ZA2xyz ̄ ̄ ̄ ̄√Cxyz=AxyzBxyDxyz=Cxyz?SzBxy=∑z=0ZAxyz2Cxyz=AxyzBxyDxyz=Cxyz?Sz
一般來說,求出C被稱作L2 Normalization,而求出D被稱作L2 Scale Normalization,S被稱為Scale。
Attention
概述
眾所周知,RNN在處理長距離依賴關系時會出現問題。理論上,LSTM這類結構能夠處理這個問題,但在實踐中,長距離依賴關系仍舊是個問題。例如,研究人員發現將原文倒序(將其倒序輸入編碼器)產生了顯著改善的結果,因為從解碼器到編碼器對應部分的路徑被縮短了。同樣,兩次輸入同一個序列似乎也有助于網絡更好地記憶。
倒序句子這種方法屬于“hack”手段。它屬于被實踐證明有效的方法,而不是有理論依據的解決方法。
大多數翻譯的基準都是用法語、德語等語種,它們和英語非常相似(即使漢語的詞序與英語也極其相似)。但是有些語種(像日語)句子的最后一個詞語在英語譯文中對第一個詞語有高度預言性。那么,倒序輸入將使得結果更糟糕。
還有其它辦法嗎?那就是Attention機制。
上圖是Attention機制的結構圖。y是編碼器生成的譯文詞語,x是原文的詞語。上圖使用了雙向遞歸網絡,但這并不是重點,你先忽略反向的路徑吧。重點在于現在每個解碼器輸出的詞語ytyt取決于所有輸入狀態的一個權重組合,而不只是最后一個狀態。a是決定每個輸入狀態對輸出狀態的權重貢獻。因此,如果a3,2a3,2的值很大,這意味著解碼器在生成譯文的第三個詞語時,會更關注于原文句子的第二個狀態。a求和的結果通常歸一化到1(因此它是輸入狀態的一個分布)。
Attention機制的一個主要優勢是它讓我們能夠解釋并可視化整個模型。舉個例子,通過對attention權重矩陣a的可視化,我們能夠理解模型翻譯的過程。
我們注意到當從法語譯為英語時,網絡模型順序地關注每個輸入狀態,但有時輸出一個詞語時會關注兩個原文的詞語,比如將“la Syrie”翻譯為“Syria”。
如果再仔細觀察attention的等式,我們會發現attention機制有一定的成本。我們需要為每個輸入輸出組合分別計算attention值。50個單詞的輸入序列和50個單詞的輸出序列需要計算2500個attention值。這還不算太糟糕,但如果你做字符級別的計算,而且字符序列長達幾百個字符,那么attention機制將會變得代價昂貴。
attention機制解決的根本問題是允許網絡返回到輸入序列,而不是把所有信息編碼成固定長度的向量。正如我在上面提到,我認為使用attention有點兒用詞不當。換句話說,attention機制只是簡單地讓網絡模型訪問它的內部存儲器,也就是編碼器的隱藏狀態。在這種解釋中,網絡選擇從記憶中檢索東西,而不是選擇“注意”什么。不同于典型的內存,這里的內存訪問機制是彈性的,也就是說模型檢索到的是所有內存位置的加權組合,而不是某個獨立離散位置的值。彈性的內存訪問機制好處在于我們可以很容易地用反向傳播算法端到端地訓練網絡模型(雖然有non-fuzzy的方法,其中的梯度使用抽樣方法計算,而不是反向傳播)。
論文:
《Learning to combine foveal glimpses with a third-order Boltzmann machine》
《Learning where to Attend with Deep Architectures for Image Tracking》
《Neural Machine Translation by Jointly Learning to Align and Translate》
Neural Turing Machines
以下章節主要翻譯自下文:
https://distill.pub/2016/augmented-rnns/
Attention and Augmented Recurrent Neural Networks
distill.pub雖然blog數量不多,但篇篇都是經典。背后站臺的更有Yoshua Bengio、Ian Goodfellow、Andrej Karpathy等大牛。
該文主要講述了Attention在RNN領域的應用。
NTM是一種使用Neural Network為基礎來實現傳統圖靈機的理論計算模型。利用該模型,可以通過訓練的方式讓系統“學會”具有時序關聯的任務流。
圖靈機的詳細定義可參見:
https://baike.baidu.com/item/圖靈機
和傳統圖靈機相比,這里的memory中保存的是向量,我們的目標是根據輸入序列,確定讀寫操作。具體的步驟如下圖所示:
1.計算query vector和memory中每個vector的相似度。
2.將相似度softmax為一個分布。
3.用之前訓練好的attention模型調整分布值。
4.圖靈機的Shift操作也可以引入attention模型。
5.sharpen分布值,選擇最終的讀寫操作。sharpen操作,實際上就是選擇較大的概率值,而忽略較小的概率值。
Attentional Interfaces
以下是另外的一些Attention的用例。
上圖中,一個RNN模型可以輸入另一個RNN模型的輸出。它在每一步都會關注另一個RNN模型的不同位置。
這是一個和NTM非常類似的模型。RNN模型生成一個搜索詞描述其希望關注的位置。然后計算每條內容與搜索詞的點乘得分,表示其與搜索詞的匹配程度。這些分數經過softmax函數的運算產生聚焦的分布。
上圖是語言翻譯方面的模型。若用傳統的序列到序列模型做翻譯,需要把整個輸入詞匯串縮簡為單個向量,然后再展開恢復為序列目標語言的詞匯串。Attention機制則可以避免上述操作,RNN模型逐個處理輸入詞語的信息,隨即生成相對應的詞語。
RNN模型之間的這類聚焦還有許多其它的應用。它可以用于語音識別,其中一個RNN模型處理語音信號,另一個RNN模型則滑動處理其輸出,然后關注相關的區域生成文本內容。
Adaptive Computation Time
標準的RNN模型每一步所消耗的計算時間都相同。這似乎與我們的直覺不符。我們在思考難題的時候難道不需要更多的時間嗎?
適應性計算時間(Adaptive Computation Time)是解決RNN每一步消耗不同計算量的方法。籠統地說:就是讓RNN模型可以在每個時間片段內進行不同次數的計算步驟。
上圖是ACT的網絡結構圖。下面來分步講解一下。
這一步就是典型的RNN+輸出各個狀態的帶權重組合。
每一步的權重值由“halting neuron”決定。這個神經元事實上是一個sigmoid函數,輸出一個終止權重,可以理解為需要在當前步驟終止的概率值。
停止權重值的總和等于1,每一步結束后要減去相應的值。一旦這個值小于了epsilon,我們就停止計算。
當訓練Adaptive Computation Time模型時,可以在損失函數添加一項“ponder cost”,用來懲罰模型的累積計算時間。這一項的值越大,就更不傾向于降低計算時間。
Scaled Dot-Product Attention
以下內容摘自:
https://kexue.fm/archives/4765
《Attention is All You Need》淺讀
《Attention is All You Need》是Google 2017年的作品。論文中提出了若干Attention的變種。比如下圖所示的Scaled Dot-Product Attention。
上圖用公式表述就是:
Attention(Q,K,V)=softmax(QK?dk ̄ ̄√)VAttention(Q,K,V)=softmax(QK?dk)V
如果忽略激活函數softmax的話,那么事實上它就是三個n×dk,dk×m,m×dvn×dk,dk×m,m×dv的矩陣相乘,最后的結果就是一個n×dvn×dv的矩陣。于是我們可以認為:這是一個Attention層,將n×dkn×dk的序列Q編碼成了一個新的n×dvn×dv的序列。
那怎么理解這種結構呢?我們不妨逐個向量來看。
Attention(qt,K,V)=∑s=1m1Zexp(?qt,ks?dk ̄ ̄√)vsAttention(qt,K,V)=∑s=1m1Zexp?(?qt,ks?dk)vs
其中Z是歸一化因子。事實上q,k,v分別是query,key,value的簡寫,K,V是一一對應的,它們就像是key-value的關系,那么上式的意思就是qtqt這個query,通過與各個ksks內積的并softmax的方式,來得到qtqt與各個vsvs的相似度,然后加權求和,得到一個dvdv維的向量。其中因子dk ̄ ̄√dk起到調節作用,使得內積不至于太大(太大的話softmax后就非0即1了,不夠“soft”了)。
概括的說就是:比較Q和K的相似度,以得到合適的V。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的深度学习(二十四)——L2 Normalization, Attention(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习(三十)——Model-Free
- 下一篇: 深度学习(二十五)——Attention