pg棋牌 圖深度學(xué)習(xí)入門教程(六)——注意力機制與圖注意力
概括:
我還沒學(xué)完深度學(xué)習(xí)。為什么深度學(xué)習(xí)又來了?別害怕,這里有系統(tǒng)教程,可以帶你零基礎(chǔ)知識直接上圖深度學(xué)習(xí)。它還將定期更新。
本教程是免費教程系列,我們力爭每月更新2到4篇文章。
主要是基于圖深度學(xué)習(xí)的入門內(nèi)容。描述了最基本的基礎(chǔ)知識,包括深度學(xué)習(xí)、數(shù)學(xué)、圖神經(jīng)網(wǎng)絡(luò)等相關(guān)內(nèi)容。本教程摘錄自 Code Doctor Studio 出版的所有書籍。強調(diào)完整的知識體系和學(xué)習(xí)指南。實踐方面,不會涉及太多基礎(chǔ)內(nèi)容(實踐和體驗內(nèi)容請參考原書)。
文章中使用的框架主要是PyTorch和TensorFlow。默認情況下,讀者已經(jīng)掌握了Python和TensorFlow的基礎(chǔ)知識。如果涉及到PyTorch,會順便介紹一下相關(guān)的入門使用。
本教程主要針對:
本文主要介紹注意力機制模型以及注意力機制在圖神經(jīng)網(wǎng)絡(luò)領(lǐng)域的應(yīng)用——圖注意力模型(GAT)。
1 神經(jīng)網(wǎng)絡(luò)中的注意力機制
神經(jīng)網(wǎng)絡(luò)的注意力機制與人類處理事物時的“注意力”含義相同,即關(guān)注一堆信息中的一部分信息,并對這部分信息進行處理和分析。
在生活中,注意力的應(yīng)用隨處可見:當(dāng)我們看某物時,我們通常會關(guān)注眼前圖像中的某個地方;在閱讀一篇文章時,我們常常會關(guān)注文章的部分文字。聽音樂時,你也會根據(jù)音樂中不同的旋律產(chǎn)生不同強度的情緒,甚至?xí)涀∧承┬善巍?/p>
在神經(jīng)網(wǎng)絡(luò)中,利用注意力機制可以達到更好的擬合效果。注意力機制使得神經(jīng)網(wǎng)絡(luò)能夠忽略不重要的特征向量,專注于計算有用的特征向量。在丟棄干擾擬合結(jié)果的無用特征的同時,也提高了計算速度。
1.1 注意力機制技術(shù)的興起
注意力機制并不是一個非常新的技術(shù),但只是近年來才受到廣泛關(guān)注。將其推上頂峰的事件主要是一篇論文《Attention is All You Need》(arXiv: 1706.03762,其中附有 Transformer 模型)。 2017)
Transformer模型是NLP中的經(jīng)典模型。它放棄了傳統(tǒng)的RNN結(jié)構(gòu),而是使用注意力方法來處理序列任務(wù)。
循環(huán)神經(jīng)網(wǎng)絡(luò)的最大缺陷是其序列依賴性。上一時刻的隱狀態(tài)輸出(以及LSTM的記憶單元)和此時的輸入一起作為新一輪的晶胞處理材料,以此類推。由于自回歸的特性,僅僅依靠一兩個矩陣來完整、無偏地記錄過去幾十甚至上百個時間步的序列信息顯然是不可能的。在訓(xùn)練過程中反復(fù)調(diào)整權(quán)重pg麻將胡了試玩平臺,這可能是不可能的。它只需應(yīng)用于測試集的要求即可。更不用說訓(xùn)練過程中梯度消失帶來的優(yōu)化難度。這些缺陷從LSTM的單元公式中可以清楚地看出。后續(xù)新模型的創(chuàng)建者從未推出能夠在保證特征提取能力的同時完美解決上述問題的解決方案,直到 Transformer 出現(xiàn)。
利用帶有Attention機制的循環(huán)神經(jīng)網(wǎng)絡(luò)進行各種變形形成Encoder,然后連接一個Decoder作為輸出層pg電子賞金試玩app,形成Encoder-Decoder架構(gòu),是前夕各種主流NLP神經(jīng)網(wǎng)絡(luò)的設(shè)計思路變壓器的誕生。
例如,動態(tài)協(xié)同注意力網(wǎng)絡(luò)(DCN)使用單向LSTM+協(xié)作注意力編碼器作為Encoder,對文本和問題中的隱藏狀態(tài)進行多次線性/非線性變換、合并和乘法,以獲得聯(lián)合矩陣,然后將其放入由單向LSTM、雙向LSTM和Highway Maxout Networks(HMN)組成的Dynamic Pointing Decoder中得出預(yù)測結(jié)果;雙向注意力網(wǎng)絡(luò)流(BiDAF)除了由循環(huán)神經(jīng)網(wǎng)絡(luò)組成的特殊結(jié)構(gòu)之外,還使用問題到文本和文本到問題的注意力矩陣來提取特征。在問答領(lǐng)域,還包括DrQA、AoA、r-Net、改造后性能提升的各種模型,以及其他領(lǐng)域的更多。但無論怎樣,你永遠擺脫不了RNN或CNN的陰影。 Transformer 是第一個使用 self-attention 機制來完全擺脫對循環(huán)或卷積神經(jīng)網(wǎng)絡(luò)的依賴的模型。其結(jié)構(gòu)如下
1.2 什么是注意力機制?
神經(jīng)網(wǎng)絡(luò)中的注意力機制主要是通過注意力分?jǐn)?shù)來實現(xiàn)的。注意力分?jǐn)?shù)是一個從0到1的值,受注意力機制影響的所有分?jǐn)?shù)的總和為1。每個注意力分?jǐn)?shù)代表分配給當(dāng)前項目的注意力權(quán)重。
注意力分?jǐn)?shù)往往是在模型訓(xùn)練時從神經(jīng)網(wǎng)絡(luò)的權(quán)重參數(shù)中學(xué)習(xí)到的,最終使用 SoftMax 進行計算。該機制可以在任何神經(jīng)網(wǎng)絡(luò)模型中發(fā)揮作用。例如:
(1)注意力機制可以作用于RNN模型中的每個序列,使得RNN模型對序列中的各個樣本給予不同的關(guān)注。
該方法常用于RNN模型中RNN層輸出結(jié)果之后。
暗示:
注意機制也可以用在 RNN 模型中的 Seq2Seq 框架中。
(2)注意力機制還可以作用于模型輸出的特征向量。
這種對特征向量進行注意力計算的方法有著更廣泛的應(yīng)用。它不僅可以應(yīng)用于循環(huán)神經(jīng)網(wǎng)絡(luò),還可以應(yīng)用于卷積神經(jīng)網(wǎng)絡(luò)甚至圖神經(jīng)網(wǎng)絡(luò)。
1.3 注意力機制的軟、硬模式
實際應(yīng)用中,注意力計算模式有兩種:軟模式和硬模式。
Soft Attention:所有數(shù)據(jù)都會被關(guān)注,計算相應(yīng)的注意力權(quán)重,不設(shè)置過濾條件。
Hard Attention:生成注意力權(quán)重后,會篩選掉一部分不滿足條件的注意力,使其注意力權(quán)重為0,可以理解為不再關(guān)注不滿足條件的部分狀況。
1.4 注意力機制模型原理
注意力機制模型是指完全利用注意力機制構(gòu)建的模型。除了輔助其他神經(jīng)網(wǎng)絡(luò)之外,注意力機制本身也具有擬合能力。
1.注意力機制模型原理
注意力機制模型的原理描述起來非常簡單:將具體任務(wù)視為三個角色:query、key、value(分別縮寫為q、k、v)。其中,q是要查詢的任務(wù),k和v是一對一的鍵值對。目的是利用q求出k中對應(yīng)的v值。
在具體實現(xiàn)上,會比基本原理稍微復(fù)雜一些,見下面的公式。
2.注意力機制模型的應(yīng)用
注意力機制模型非常適合序列到序列(Seq2Seq)擬合任務(wù)。例如:在閱讀理解任務(wù)中,文章可以看作是Q,閱讀理解問題和答案可以看作是K和V組成的鍵值對。下面以翻譯任務(wù)為例介紹一下詳細裝修流程:
1.5.多頭注意力機制
多頭注意力機制技術(shù)是對原有注意力機制模型的改進。也是Transformer模型的主要技術(shù)。該技術(shù)可以表示為:Y=MultiHead(Q,K,V)。原理如圖所示。
多頭注意力機制的工作原理如下:
(1) 使用參數(shù)矩陣將Q、K、V映射到全連接層。
(2) 對步驟(1)中變換后的三個結(jié)果進行點積運算。
(3)重復(fù)步驟(1)和(2)h次,每執(zhí)行一次步驟(1),就使用一個新的參數(shù)矩陣(參數(shù)不共享)。
(4)使用concat函數(shù)連接計算h次后的最終結(jié)果。
其中,步驟(4)的操作與多分支卷積(將在下卷中詳細介紹)技術(shù)非常相似,其理論可以解釋為:
(1)每一次注意力機制操作都會引起原始數(shù)據(jù)中某一方面特征的注意力變換(獲得局部注意力特征)。
(2)多次注意力機制操作發(fā)生后,將獲得更多方向的局部注意力特征。
(3)結(jié)合所有局部注意力特征,通過神經(jīng)網(wǎng)絡(luò)將其轉(zhuǎn)化為整體特征,達到擬合效果。
1.6.自注意力機制
自注意力機制也稱為內(nèi)部注意力機制,用于發(fā)現(xiàn)序列數(shù)據(jù)的內(nèi)部特征。具體方法是將Q、K、V改成X。即Attention(X,X,X)。
使用多頭注意力機制訓(xùn)練的自注意力特征可以用于各種任務(wù),例如Seq2Seq模型(輸入和輸出都是序列數(shù)據(jù)的模型,將在下卷中詳細介紹)、分類模型,并且可以達到很好的效果,即Y=MultiHead(X,X,X)。
1.7 什么是位置向量詞嵌入
由于注意力機制的本質(zhì)是鍵值搜索機制,它無法反映查詢時Q的內(nèi)部關(guān)系特征。因此,谷歌在實現(xiàn)注意力機制的模型中加入了位置向量技術(shù)。
帶位置向量的詞嵌入是指在現(xiàn)有的詞嵌入技術(shù)中添加位置信息。實施時,具體步驟如下:
(1)使用sin(正弦)和cos(余弦)算法計算詞嵌入中的每個元素。
(2)使用concat函數(shù)將步驟(1)中sin和cos計算的結(jié)果連接起來,作為最終的位置信息。
位置信息的轉(zhuǎn)換公式比較復(fù)雜,這里不再展開。詳細請看下面的代碼:
代碼語言:javascript
復(fù)制
def Position_Embedding(inputs, position_size):
batch_size,seq_len = tf.shape(inputs)[0],tf.shape(inputs)[1]
position_j = 1. / tf.pow(10000., \
2 * tf.range(position_size / 2, dtype=tf.float32 \
) / position_size)
position_j = tf.expand_dims(position_j, 0)
position_i = tf.range(tf.cast(seq_len, tf.float32), dtype=tf.float32)
position_i = tf.expand_dims(position_i, 1)
position_ij = tf.matmul(position_i, position_j)
position_ij = tf.concat([tf.cos(position_ij), tf.sin(position_ij)], 1)
position_embedding = tf.expand_dims(position_ij, 0) \
+ tf.zeros((batch_size, seq_len, position_size))
return position_embedding
在示例代碼中,函數(shù)Position_Embedding的輸入和輸出為:
通過函數(shù)Position_Embedding的輸入和輸出,可以清楚地看到詞嵌入中添加了位置向量信息。轉(zhuǎn)換后的結(jié)果可以像普通的詞嵌入一樣在模型中使用。
2. Attention機制和Seq2Seq框架
具有注意力機制的Seq2Seq(attention_Seq2Seq)框架通常用于解決Seq2Seq任務(wù)。為了避免讀者混淆概念,下面對Seq2Seq相關(guān)的任務(wù)、框架、接口、模型進行統(tǒng)一解釋。
2.1.了解Seq2Seq框架
Seq2Seq任務(wù)的主流解決方案是使用Seq2Seq框架(即Encoder-Decoder框架)。
Encoder-Decoder框架的工作機制如下。
(1) 使用Encoder將輸入編碼映射到語義空間,得到固定維度的向量。該向量表示輸入的語義。
(2) 使用解碼器對語義向量進行解碼,得到所需的輸出。如果輸出是文本,則解碼器通常是語言模型。
Encoder-Decoder框架的結(jié)構(gòu)如圖所示。
該網(wǎng)絡(luò)框架擅長解決:語音到文本、文本到文本、圖像到文本、文本到圖像等轉(zhuǎn)換任務(wù)。
2.2.了解帶有注意力機制的Seq2Seq框架
注意力機制可以用來計算輸入和輸出之間的相似度。一般應(yīng)用于Seq2Seq框架中的編碼器(Encoder)和解碼器(Decoder)之間,通過對輸入到編碼器的每個詞賦予不同的注意力權(quán)重來影響最終的生成結(jié)果。這種網(wǎng)絡(luò)可以處理更長的序列任務(wù)。其具體結(jié)構(gòu)如圖所示。
圖中的框架只是注意力機制之一。在實際應(yīng)用中pg電子麻將胡了,注意力機制還有許多其他變體。其中包括LuongAttention、BahdanauAttention、LocationSensitiveAttention等。有關(guān)注意力機制的更多信息,還可以參考論文:
2.3.理解 BahdanauAttention 和 LuongAttention
在TensorFlow的Seq2Seq接口中,實現(xiàn)了兩個注意力機制類接口:BahdanauAttention和LuongAttention。在介紹這兩種注意力機制的區(qū)別之前,我們首先系統(tǒng)地介紹一下注意力機制的幾種實現(xiàn)方法。
1.注意力機制實現(xiàn)總結(jié)
注意力機制的實現(xiàn)大致可以分為四種方法:
2.4. BahdanauAttention 和 LuongAttention 的區(qū)別
兩種注意力機制 BahdanauAttention 和 LuongAttention 分別由 Bahdanau 和 Luong 兩位作者實現(xiàn)。前者采用通用方法實現(xiàn),見式(9.3);后者是使用神經(jīng)網(wǎng)絡(luò)方法實現(xiàn)的,見方程(9.6)。相應(yīng)論文如下:
2.5. normed_BahdanauAttention 和scaled_LuongAttention
BahdanauAttention類中有一個權(quán)重歸一化版本(normed_BahdanauAttention),可以加快隨機梯度下降的收斂速度。使用時只需將初始化函數(shù)中的參數(shù)normalize設(shè)置為True即可。
詳細信息請參考以下論文:
相應(yīng)的權(quán)重歸一化版本(scaled_LuongAttention)也在 LuongAttention 類中實現(xiàn)。使用時只需將初始化函數(shù)中的參數(shù)scale設(shè)置為True即可。
2.6 理解單調(diào)注意力機制
單調(diào)注意機制在原有注意機制的基礎(chǔ)上增加了單調(diào)約束。這個單調(diào)約束的內(nèi)容是:
(1) 假設(shè)在生成輸出序列的過程中,模型從左到右處理輸入序列。
(2)當(dāng)某個輸入序列對應(yīng)的輸出被聚焦時,出現(xiàn)在該輸入序列之前的其他輸入在后續(xù)輸出中將不會被聚焦。
即已經(jīng)關(guān)注的輸入序列在之前的序列中將不再被關(guān)注。
我要評論