編碼器是Transformer體系結構的基本組件。編碼器的主要功能是將輸入標記轉換為上下文表示。與早期獨立處理token的模型不同,Transformer編碼器根據整個序列捕獲每個token的上下文。
其結構組成如下:
把它的工作流程分解成最基本的步驟:
步驟1 -輸入嵌入
嵌入只發生在最底部的編碼器中。編碼器首先使用嵌入層將輸入標記(詞或子詞)轉換為向量。這些嵌入捕獲符號的語義并將其轉換為數值向量。
所有編碼器接收一個向量列表,每個向量的大小為512(固定大小)。在底部的編碼器中,這將是單詞嵌入,但在其他編碼器中,是直接在它們下面的編碼器的輸出。
步驟2 -位置編碼
由于transformer沒有像RNN那樣的遞歸機制,因此它們使用添加到輸入嵌入中的位置編碼來提供有關序列中每個標記的位置的信息。這使他們能夠理解每個單詞在句子中的位置。
為了做到這一點,研究人員建議使用各種正弦和余弦函數的組合來創建位置向量,使這種位置編碼器能夠用于任何長度的句子。在這種方法中,每個維度由波的唯一頻率和偏移量表示,其值范圍從-1到1,有效地表示每個位置。
步驟3 -編碼器層堆棧
Transformer編碼器由一堆相同的層組成(在原始Transformer模型中為6層)。
編碼器層用于將所有輸入序列轉換為連續的抽象表示,該表示封裝了從整個序列中學習到的信息。該層包括兩個子模塊:
一個完全連接的網絡。
此外,它結合了每個子層周圍的剩余連接,然后進行層規范化。
步驟3.1Multi-HeadSelf-Attention機制
在編碼器中,Multi-Headattention利用了一種特殊的attention機制,即Self-Attention。這種方法使模型能夠將輸入中的每個單詞與其他單詞關聯起來。例如,在給定的示例中,模型可能會學習將單詞“are”與“you”聯系起來。
這種機制允許編碼器在處理每個標記時專注于輸入序列的不同部分。它計算attention分數的基礎是:
查詢是一個向量,表示attention機制中輸入序列中的特定單詞或標記。
在attention機制中,鍵也是一個向量,對應于輸入序列中的每個單詞或標記。
每個值都與一個鍵相關聯,并用于構造注意力層的輸出。當一個查詢和一個鍵匹配得很好,這基本上意味著它們有很高的attention分數,相應的值在輸出中被強調。
第一個Self-Attention模塊使模型能夠從整個序列中捕獲上下文信息。而不是執行單一的attention功能,查詢,鍵和值是線性投影h次。在查詢、鍵和值的每個投影版本上,attention機制并行執行,產生h維輸出值。
詳細架構如下:
矩陣乘法——查詢和鍵的點積
一旦查詢、鍵和值向量通過線性層,在查詢和鍵之間執行點積矩陣乘法,從而創建分數矩陣。
分數矩陣建立了每個單詞對其他單詞的強調程度。因此,在同一時間步長內,每個單詞相對于其它單詞被分配一個分數。分數越高,說明attention越集中。
這個過程有效地將查詢映射到相應的鍵。
降低attention分數的大小
然后通過將分數除以查詢維度和關鍵向量的平方根來縮小分數。這一步的實現是為了確保更穩定的梯度,因為值的乘法可能導致過大的影響。
將Softmax應用于調整后的分數
然后,對調整后的分數應用softmax函數得到關注權重。這導致概率值范圍從0到1。softmax函數強調高分,淡化低分,從而增強了模型有效判斷哪些詞應該得到更多關注的能力。
結合Softmax結果與值向量
attention機制的下一步是將softmax函數的權重與值向量相乘,得到一個輸出向量。
在這個過程中,只有呈現高softmax分數的單詞被保留。最后,這個輸出向量被送入一個線性層進行進一步處理。
我們終于得到了attention機制的輸出!
所以,你可能想知道為什么它被稱為Multi-Headattention?
請記住,在所有進程開始之前,我們會中斷查詢、鍵和值h次。這個過程被稱為Self-Attention,在每個小階段中(heads)分別發生。每個head都獨立發揮其魔力,召喚出一個輸出向量。
這個整體經過最后的線性層,就像一個過濾器,對集體表現進行微調。這里的美妙之處在于每個head的學習多樣性,豐富了編碼器模型,具有強大的和多方面的理解。
步驟3.2歸一化和殘留連接
編碼器層中的每個子層后面都有一個規范化步驟。此外,每個子層的輸出被添加到它的輸入(殘余連接),以幫助緩解梯度消失問題,允許更深入的模型。這個過程在前饋神經網絡之后也會重復。
步驟3.3前饋神經網絡
歸一化剩余輸出通過點向前饋網絡導航,這是額外細化的關鍵階段。
把這個網絡想象成兩個線性層,在它們之間有一個ReLU激活,作為一個橋梁。一旦處理完畢,輸出就會走上一條熟悉的路徑:它循環回去,并與點向前饋網絡的輸入合并。
這次團聚之后是另一輪歸一化,確保一切都調整得很好,并與下一步同步。
步驟4 -編碼器的輸出
最終編碼器層的輸出是一組向量,每個向量表示具有豐富上下文理解的輸入序列。然后將該輸出用作Transformer模型中解碼器的輸入。
這種編碼為解碼器鋪平了道路,指導它在解碼時注意輸入中的正確單詞。
可以把它想象成建造一座塔,在那里可以堆疊N個編碼器層。這個堆棧中的每一層都有機會探索和學習attention的不同方面,就像知識層一樣。這不僅使理解多樣化,而且可以顯著增強Transformer網絡的預測能力。
-
編碼器
+關注
關注
45文章
3779瀏覽量
137226 -
模型
+關注
關注
1文章
3495瀏覽量
50039 -
Transformer
+關注
關注
0文章
151瀏覽量
6405
原文標題:Transformer架構詳細解析——編碼器
文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
光電編碼器,光電編碼器的工作原理
編碼器工作原理和選型方法
拉線編碼器的工作原理
工作流程圖怎么用?有哪些繪制工作流程圖的軟件
基于transformer的編碼器-解碼器模型的工作原理

磁性直線編碼器工作原理
NX CAD軟件:數字化工作流程解決方案(CAD工作流程)

Transformer架構中解碼器的工作流程

評論