91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Transformers的基本概念

發布時間:2021-09-01 16:18:06 來源:億速云 閱讀:136 作者:chen 欄目:大數據

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

什么是 Transformers?

Transformers的基本概念

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

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

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

輸入/輸出的嵌入

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

位置編碼(PE):

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

Transformers的基本概念

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

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

注意力的類型

編碼器自注意力

Transformers的基本概念

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

這種關注的主要目的是在輸入中所有其他單詞的基礎上,根據每個單詞在其上下文中的重要性加權,提供按比例表示。

解碼器自注意力

Transformers的基本概念

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

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

Transformers的基本概念

使用注意力的目的是找到輸入中所有單詞的當前輸出單詞的鏈接。基本上,我們試圖在這里找到的是每個輸入字對當前輸出字的影響。

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

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

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

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

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

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

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

我們將上述值的softmax歸一化。這樣做是因為現在將這些術語視為每個單詞相對于第一個單詞的權重。

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

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

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

Transformers的基本概念

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

Transformers的基本概念

多頭注意力

直到現在,我們的談話都是關于單頭的注意力的。單頭注意力能夠將注意力集中在特定的一組單詞上。如果我們想擁有多個集合,每個集合對不同的單詞集合給予不同的關注呢?(有點類似于我們所做的集合體,有多個類似的模型,但他們每個人都學習不同的東西)一旦我們有多個擴展點積的注意,我們連接結果,多個權重矩陣(因此每個頭可以基于其重要性加權)來產生最終的輸出Self-Attention層。

Transformers的基本概念

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

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

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

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

Transformers的基本概念

現在當我們計算隱藏分數的softmax時,負無窮被歸零,留下零的注意力分數給序列中所有未來的記號。

Transformers的基本概念

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Transformer的缺點

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

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

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

Transformer處理圖片

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

Transformers的基本概念


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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

花垣县| 始兴县| 十堰市| 涟水县| 乌拉特前旗| 民乐县| 青神县| 亳州市| 马尔康县| 彭泽县| 化隆| 周口市| 公主岭市| 德庆县| 禄丰县| 南平市| 大埔县| 临沧市| 和田市| 台中县| 武邑县| 浑源县| 宽甸| 赤水市| 怀化市| 桑植县| 东兰县| 奉新县| 辽源市| 沙湾县| 大埔县| 上栗县| 博客| 紫金县| 崇明县| 正定县| 昌都县| 黎川县| 民乐县| 长春市| 东阳市|