transformer架構(gòu)可能看起來很恐怖,您也可能在YouTube或博客中看到了各種解釋。但是,在我的博客中,我將通過提供一個全面的數(shù)學(xué)示例闡明它的原理。通過這樣做,我希望簡化對transformer架構(gòu)的理解。 那就開始吧!
Inputs and Positional Encoding
讓我們解決最初的部分,在那里我們將確定我們的輸入并計算它們的位置編碼。
Step 1 (Defining the data)
第一步是定義我們的數(shù)據(jù)集(語料庫)。
在我們的數(shù)據(jù)集中,有3個句子(對話) 取自《權(quán)力的游戲》電視劇。盡管這個數(shù)據(jù)集看起來很小,但它已經(jīng)足以幫助我們理解之后的數(shù)學(xué)公式。
Step 2 (Finding the Vocab Size)
為了確定詞匯量,我們需要確定數(shù)據(jù)集中的唯一單詞總數(shù)。這對于編碼(即將數(shù)據(jù)轉(zhuǎn)換為數(shù)字) 至關(guān)重要。 ? 其中N是所有單詞的列表,并且每個單詞都是單個token,我們將把我們的數(shù)據(jù)集分解為一個token列表,表示為N。
獲得token列表(表示為N) 后,我們可以應(yīng)用公式來計算詞匯量。 具體公式原理如下:
使用set操作有助于刪除重復(fù)項,然后我們可以計算唯一的單詞以確定詞匯量。因此,詞匯量為23,因為給定列表中有23個獨特的單詞。
Step 3 (Encoding and Embedding)
接下來為數(shù)據(jù)集的每個唯一單詞分配一個整數(shù)作為編號。
在對我們的整個數(shù)據(jù)集進行編碼之后,是時候選擇我們的輸入了。我們將從語料庫中選擇一個句子以開始: ? “When you play game of thrones”
作為輸入傳遞的每個字將被表示為一個編碼,并且每個對應(yīng)的整數(shù)值將有一個關(guān)聯(lián)的embedding聯(lián)系到它。
這些embedding可以使用谷歌Word2vec (單詞的矢量表示) 找到。在我們的數(shù)值示例中,我們將假設(shè)每個單詞的embedding向量填充有(0和1) 之間的隨機值。
此外,原始論文使用embedding向量的512維度,我們將考慮一個非常小的維度,即5作為數(shù)值示例。
現(xiàn)在,每個單詞embedding都由5維的embedding向量表示,并使用Excel函數(shù)RAND() 用隨機數(shù)填充值。
Step 4 (Positional Embedding)
讓我們考慮第一個單詞,即“when”,并為其計算位置embedding向量。位置embedding有兩個公式:
第一個單詞“when”的POS值將為零,因為它對應(yīng)于序列的起始索引。此外,i的值(取決于是偶數(shù)還是奇數(shù)) 決定了用于計算PE值的公式。維度值表示embedding向量的維度,在我們的情形下,它是5。
繼續(xù)計算位置embedding,我們將為下一個單詞“you” 分配pos值1,并繼續(xù)為序列中的每個后續(xù)單詞遞增pos值。
找到位置embedding后,我們可以將其與原始單詞embedding聯(lián)系起來。
我們得到的結(jié)果向量是e1+p1,e2+p2,e3+p3等諸如此類的embedding和。 ?
Transformer架構(gòu)的初始部分的輸出將在之后用作編碼器的輸入。 ?
在編碼器中,我們執(zhí)行復(fù)雜的操作,涉及查詢(query),鍵(key)和值(value)的矩陣。這些操作對于轉(zhuǎn)換輸入數(shù)據(jù)和提取有意義的表示形式至關(guān)重要。
在多頭注意力(multi-head attention)機制內(nèi)部,單個注意層由幾個關(guān)鍵組件組成。這些組件包括:
請注意,黃色框代表單頭注意力機制。讓它成為多頭注意力機制的是多個黃色盒子的疊加。出于示例的考慮,我們將僅考慮一個單頭注意力機制,如上圖所示。
Step 1 (Performing Single Head Attention)
注意力層有三個輸入
Query
Key
Value
在上面提供的圖中,三個輸入矩陣(粉紅色矩陣) 表示從將位置embedding添加到單詞embedding矩陣的上一步獲得的轉(zhuǎn)置輸出。另一方面,線性權(quán)重矩陣(黃色,藍色和紅色) 表示注意力機制中使用的權(quán)重。這些矩陣的列可以具有任意數(shù)量的維數(shù),但是行數(shù)必須與用于乘法的輸入矩陣中的列數(shù)相同。在我們的例子中,我們將假設(shè)線性矩陣(黃色,藍色和紅色) 包含隨機權(quán)重。這些權(quán)重通常是隨機初始化的,然后在訓(xùn)練過程中通過反向傳播和梯度下降等技術(shù)進行調(diào)整。所以讓我們計算(Query, Key and Value metrices):
一旦我們在注意力機制中有了query, key, 和value矩陣,我們就繼續(xù)進行額外的矩陣乘法。
現(xiàn)在,我們將結(jié)果矩陣與我們之前計算的值矩陣相乘:
如果我們有多個頭部注意力,每個注意力都會產(chǎn)生一個維度為(6x3) 的矩陣,那么下一步就是將這些矩陣級聯(lián)在一起。
在下一步中,我們將再次執(zhí)行類似于用于獲取query, key, 和value矩陣的過程的線性轉(zhuǎn)換。此線性變換應(yīng)用于從多個頭部注意獲得的級聯(lián)矩陣。
編輯:黃飛
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4346瀏覽量
63022 -
Transformer
+關(guān)注
關(guān)注
0文章
146瀏覽量
6056
原文標(biāo)題:圖解!逐步理解Transformers的數(shù)學(xué)原理
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
手機通信原理解析
如何更改ABBYY PDF Transformer+界面語言
解析ABBYY PDF Transformer+三種類型PDF文檔
解析Transformer中的位置編碼 -- ICLR 2021
![<b class='flag-5'>解析</b><b class='flag-5'>Transformer</b>中的位置編碼 -- ICLR 2021](https://file.elecfans.com/web1/M00/E8/E1/pIYBAGBlgSSAP_GCAAAfg6oxhdg841.png)
基于Transformer的目標(biāo)檢測算法
![基于<b class='flag-5'>Transformer</b>的目標(biāo)檢測算法](https://file1.elecfans.com/web2/M00/90/AB/wKgZomTcOjWAOmr4AAA5eUWRJ3E280.png)
BEV人工智能transformer
基于Transformer的目標(biāo)檢測算法難點
![基于<b class='flag-5'>Transformer</b>的目標(biāo)檢測算法難點](https://file1.elecfans.com/web2/M00/95/3C/wKgaomTmzL6AABM6AAA5eUWRJ3E880.png)
大模型基礎(chǔ)Transformer結(jié)構(gòu)的原理解析
![大模型基礎(chǔ)<b class='flag-5'>Transformer</b>結(jié)構(gòu)的原<b class='flag-5'>理解析</b>](https://file1.elecfans.com/web2/M00/A1/F7/wKgZomT5Ox-Acp10AAAOVwTp0RQ244.png)
更深層的理解視覺Transformer, 對視覺Transformer的剖析
![更深層的<b class='flag-5'>理解</b>視覺<b class='flag-5'>Transformer</b>, 對視覺<b class='flag-5'>Transformer</b>的剖析](https://file1.elecfans.com/web2/M00/B3/02/wKgaomVxIrqAKQr-AAAe1bccpmM623.png)
評論