溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Transformers的基本概念

發(fā)布時間:2021-09-01 16:18:06 來源:億速云 閱讀:130 作者:chen 欄目:大數(shù)據(jù)

這篇文章主要講解了“Transformers的基本概念”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Transformers的基本概念”吧!

什么是 Transformers?

Transformers的基本概念

這看起來很恐怖,不是嗎?如果我告訴您所有這些都可以歸結(jié)為一個公式,是不是就簡單一些了?

Attention(Q, K, V) = ∑? (Similarity (Q, K?) * V?)

是的, 上圖的復(fù)雜體系結(jié)構(gòu)所做的一切,都是為了確保此公式正常運行。那么這些Q,K和V是什么?這些不同類型的注意力是什么?讓我們深入研究!我們將采用自下而上的方法。

輸入/輸出的嵌入

這些可以是Word2Vec,GloVe,F(xiàn)astext或任何類型的詞嵌入,我們可以在其中將文本轉(zhuǎn)換為某種形式的有意義的向量。(PS-單詞嵌入沒有上下文。每個單詞只有一個固定的嵌入)

位置編碼(PE):

在RNN(LSTM,GRU)中,時間步長的概念按順序編碼,因為輸入/輸出流一次一個。對于Transformer,作者將時間編碼為正弦波,作為附加的額外輸入。這樣的信號被添加到輸入和輸出以表示時間的流逝。

Transformers的基本概念

pos是單詞的位置i是這個向量的維數(shù)。也就是說,PE的每一個維度對應(yīng)一個正弦曲線。波長以幾何級數(shù)的形式從2倍級到1萬·2倍級。對于偶數(shù)(2i)我們使用正弦,對于奇數(shù)(2i + 1)我們使用余弦。通過這種方式,我們能夠為輸入序列的每個標(biāo)記提供不同的編碼,因此現(xiàn)在可以并行地傳遞輸入。這個博客(https://kazemnejad.com/blog/transformer_architecture_positional_encoding/)很好地解釋了PE背后的數(shù)學(xué)原理。

但是,最近的體系結(jié)構(gòu)使用的是“學(xué)習(xí)的” PE,而不是可以推廣到任意長度序列的PE。而且效果很好。也就是說,他們不需要將序列推廣到比訓(xùn)練中看到的序列更長的序列。那是因為這些模型的輸入大小是固定的(例如BERT的512個令牌)。因此,在測試期間,他們不會看到更長的序列作為輸入。

注意力的類型

編碼器自注意力

Transformers的基本概念

這是一種雙向注意(也是唯一一種雙向注意力機制,這就是為什么它是BERT中使用的唯一注意力類型),其中每個單詞都彼此關(guān)聯(lián)。它確實捕獲了一個句子中的雙上下文信息,甚至bi-LSTM也無法捕獲(因為bi-LSTM將Forward AR和Backward AR的結(jié)果結(jié)合在一起,而不是在其核心生成雙上下文信息。這也是從本質(zhì)上有些人認為ELMo嵌入不是真正的雙向的原因。

這種關(guān)注的主要目的是在輸入中所有其他單詞的基礎(chǔ)上,根據(jù)每個單詞在其上下文中的重要性加權(quán),提供按比例表示。

解碼器自注意力

Transformers的基本概念

Transformer中的解碼器本質(zhì)上是自回歸的,也就是說,輸出中的每個單詞都與其所有先前的單詞相關(guān)聯(lián),但在進行預(yù)測時不與任何將來的單詞相關(guān)聯(lián)(AR也可以相反,也就是說,給定將來的單詞 ,預(yù)測前一個字)。如果將其與將來的單詞聯(lián)系起來,最終將導(dǎo)致數(shù)據(jù)泄漏,并且該模型將無法學(xué)到任何東西。

編碼器-解碼器注意:(交叉注意而不是自注意)

Transformers的基本概念

使用注意力的目的是找到輸入中所有單詞的當(dāng)前輸出單詞的鏈接?;旧?,我們試圖在這里找到的是每個輸入字對當(dāng)前輸出字的影響。

通過僅使用最后一個解碼器層中的“查詢”部分以及使用編碼器中的“鍵和值”部分,可以做到這一點。(因為Query用作所考慮單詞的表示形式,Key是所有單詞的表示形式,并且用于查找所有單詞相對于所考慮單詞的權(quán)重,Value也是所有單詞的表示形式,但 用于找到最終的加權(quán)和)

下面的GIF很好地總結(jié)了所有三種類型的注意力。

查詢(Q),鍵(K)和值(V)

查詢,鍵和值的概念來自檢索系統(tǒng)。例如,當(dāng)您鍵入查詢以在YouTube上搜索某些視頻時,搜索引擎將針對數(shù)據(jù)庫中與候選視頻相關(guān)的一組鍵(視頻標(biāo)題,說明等)映射您的查詢,然后向您顯示最匹配的視頻(值)。

Q,K和V基本上是原始單詞嵌入之上的線性層,可減小原始單詞嵌入的尺寸(為什么要縮減?我稍后會討論原因)。我們已經(jīng)將原始單詞嵌入投影到了三個不同的(也許是相同的)低維空間中。

基本上,這樣想。每當(dāng)您需要查找兩個向量之間的相似性時,我們只需獲取它們的點積即可。為了找到第一個單詞的輸出,我們只考慮第一個單詞的表示形式Q,并將其點積與輸入中每個單詞的表示形式K取乘積。這樣,我們就可以知道輸入中每個單詞相對于第一個單詞的關(guān)系。

取點積后,我們將結(jié)果除以sqrt(d?),其中d?是向量K的維數(shù)。這樣做是為了穩(wěn)定梯度,因為點積可能非常大。

我們將上述值的softmax歸一化。這樣做是因為現(xiàn)在將這些術(shù)語視為每個單詞相對于第一個單詞的權(quán)重。

還記得我在帖子開頭所說的話嗎?那個Transformers就是關(guān)于∑?(相似度(Q,K?)*V?)的。好了,我們現(xiàn)在已經(jīng)完成了方程的∑?相似度(Q,K?)部分?,F(xiàn)在,我們有了一個分布,該分布描述了輸入中每個單詞相對于第一個單詞的重要性。

為了使方程完整,我們將權(quán)重(softmax)與相應(yīng)的表示V相乘,然后將它們加起來。因此,我們對第一個單詞的最終表示將是所有輸入的加權(quán)總和,每個輸入單詞均通過相對于第一個單詞的相似性(重要性)加權(quán)。

我們對所有單詞重復(fù)此過程。以矢量形式,我們可以用下面給出的方程式來表示它。

Transformers的基本概念

下圖很好地總結(jié)了整個過程。(稍后我會講到mask遮罩,它只出現(xiàn)在解碼器部分)

Transformers的基本概念

多頭注意力

直到現(xiàn)在,我們的談話都是關(guān)于單頭的注意力的。單頭注意力能夠?qū)⒆⒁饬性谔囟ǖ囊唤M單詞上。如果我們想擁有多個集合,每個集合對不同的單詞集合給予不同的關(guān)注呢?(有點類似于我們所做的集合體,有多個類似的模型,但他們每個人都學(xué)習(xí)不同的東西)一旦我們有多個擴展點積的注意,我們連接結(jié)果,多個權(quán)重矩陣(因此每個頭可以基于其重要性加權(quán))來產(chǎn)生最終的輸出Self-Attention層。

Transformers的基本概念

有一個問題仍然沒有得到回答。為什么Q、V和K需要被降維向量,即使這樣可能會導(dǎo)致原始單詞的信息丟失?答案就是多頭的自我注意力。假設(shè)來自Word2Vec的嵌入輸入是(1 x 512),并且我們有8個頭注意力。然后我們保持Q K V的維數(shù)是1x(512/8)也就是1x64。這樣,我們就可以在不增加任何計算能力的情況下使用多頭注意力?,F(xiàn)在,它學(xué)習(xí)了24種不同的權(quán)重,而不是僅僅3種。

自我注意力的mask遮罩(僅適用于解碼器):

Transformers解碼器本質(zhì)上是自回歸的,因為如果我們讓它在自我注意的過程中看所有的單詞,它就學(xué)不到任何東西。為了避免這種情況,我們在計算自我注意的同時,在序列中隱藏未來詞。

一旦我們計算出序列中所有單詞的縮放分數(shù),我們就應(yīng)用“向前看”遮罩來獲得遮罩分數(shù)。

Transformers的基本概念

現(xiàn)在當(dāng)我們計算隱藏分數(shù)的softmax時,負無窮被歸零,留下零的注意力分數(shù)給序列中所有未來的記號。

Transformers的基本概念

總結(jié)一下(6個簡單要點):

通過剛才的介紹,我們對Transformer的所有構(gòu)建塊都非常熟悉,那么現(xiàn)在該對它們進行總結(jié)了!到現(xiàn)在為止做得很好。:)

1、將輸入序列中所有單詞的單詞嵌入添加到它們各自的位置編碼中,以獲取我們的Transformer的最終輸入。

2、Transformer是一個Seq2Seq模型,因此它由編碼器和解碼器兩部分組成。編碼器由N個相同的層組成(原論文中N = 6)。每層包含以下組件:

  • 多頭自我注意力層(編碼器):獲取每個單詞的輸入向量,并將其轉(zhuǎn)換為表示形式,其中包含有關(guān)每個單詞應(yīng)如何與序列中所有其他單詞相伴的信息。

  • 加法和歸一化:多頭自我關(guān)注層和位置前饋網(wǎng)絡(luò)的輸出均由該層處理。它包含一個殘差連接(以確保漸變不會被卡住并保持流動)和歸一化層(以防止值變化太大,從而可以更快地進行訓(xùn)練并充當(dāng)正則化功能)。

  • 逐點完全連接層:此層分別且相同地應(yīng)用于每個單詞向量。它由兩個線性變換組成,兩個線性變換之間使用ReLU激活。

3、計算完所有N層編碼器的輸出后,最終(鍵,值)對將傳遞到解碼器的每個“編碼器-解碼器注意”塊。這樣就完成了我們的Transformer的編碼器部分。

4、由于解碼器本質(zhì)上是自回歸的,因此它將先前輸出的列表作為輸入。然后將令牌轉(zhuǎn)換為詞嵌入,然后將其添加到它們各自的位置編碼中,以獲取解碼器的最終輸入。

5.解碼器還包含N個相同的層(原始論文中N = 6)。每層包含以下組件:

  • 多頭自我注意力層(解碼器):為解碼器中的每個位置生成表示形式,以對解碼器中的所有位置進行編碼,直到該位置為止。我們需要阻止解碼器中的向左信息流,以保留自回歸屬性。

  • 多頭交叉注意力層(編碼器-解碼器):這是Transformer的一部分,其中輸入和輸出字之間發(fā)生映射。(K,V)對來自Encoder,Q值來自Decoder的上一層,然后計算交叉注意力。

  • 加法和歸一化:類似于編碼器。

  • 逐點完全連接層:類似于編碼器。

6.計算完解碼器所有N層的輸出后,該輸出將通過一個用作分類器的線性層。分類器的大小與vocab大小一樣大。然后將其饋入softmax層,以在解碼器的所有輸出上獲得概率分布。然后,我們采用概率最高的索引,該索引處的單詞就是我們的預(yù)測單詞。

Transformer的缺點

所有的好事都有不好的一面。Transformer也是如此。

不用說,Transformer是非常大的模型,因此它們需要大量的計算能力和大量的數(shù)據(jù)進行訓(xùn)練。(與Transformers相比,reformer的存儲效率更高且速度更快。它們基本上已經(jīng)用局部敏感哈希(LSH)代替了點積的關(guān)注。而且,他們使用了可逆殘差層而不是標(biāo)準(zhǔn)殘差。)

對于用于諸如解析之類的任務(wù)的分層數(shù)據(jù),RNN似乎要優(yōu)于Transformers。一些相關(guān)的工作可以在本文(https://www.aclweb.org/anthology/D18-1503/)中找到。

Transformer處理圖片

圖像不是序列。但是可以將圖像解釋為一系列區(qū)塊,然后通過Transformer編碼器對其進行處理。只需將圖像劃分為小塊,并提供這些小塊的線性嵌入序列即可作為Transformer Encoder的輸入。圖像區(qū)塊與NLP下游任務(wù)中的標(biāo)記(單詞)的處理方式相同。此方法可以用來替代當(dāng)前廣泛使用的基于CNN的圖像處理管道中的特征提取方法。視覺處理的Transformer基于此概念。

Transformers的基本概念


感謝各位的閱讀,以上就是“Transformers的基本概念”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Transformers的基本概念這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI