天天看點

圖解!逐漸了解 Transformers 的數學原理

作者:AI觀察室
圖解!逐漸了解 Transformers 的數學原理

transformer架構可能看起來很恐怖,您也可能在YouTube或部落格中看到了各種解釋。但是,在我的部落格中,我将通過提供一個全面的數學示例闡明它的原理。通過這樣做,我希望簡化對transformer架構的了解。

那就開始吧!

Inputs and Positional Encoding

讓我們解決最初的部分,在那裡我們将确定我們的輸入并計算它們的位置編碼。

圖解!逐漸了解 Transformers 的數學原理
圖解!逐漸了解 Transformers 的數學原理

Step 1 (Defining the data)

第一步是定義我們的資料集 (語料庫)。

圖解!逐漸了解 Transformers 的數學原理

在我們的資料集中,有3個句子 (對話) 取自《權力的遊戲》電視劇。盡管這個資料集看起來很小,但它已經足以幫助我們了解之後的數學公式。

Step 2 (Finding the Vocab Size)

為了确定詞彙量,我們需要确定資料集中的唯一單詞總數。這對于編碼 (即将資料轉換為數字) 至關重要。

圖解!逐漸了解 Transformers 的數學原理
圖解!逐漸了解 Transformers 的數學原理

其中N是所有單詞的清單,并且每個單詞都是單個token,我們将把我們的資料集分解為一個token清單,表示為N。

圖解!逐漸了解 Transformers 的數學原理
圖解!逐漸了解 Transformers 的數學原理

獲得token清單 (表示為N) 後,我們可以應用公式來計算詞彙量。

具體公式原理如下:

圖解!逐漸了解 Transformers 的數學原理
圖解!逐漸了解 Transformers 的數學原理

使用set操作有助于删除重複項,然後我們可以計算唯一的單詞以确定詞彙量。是以,詞彙量為23,因為給定清單中有23個獨特的單詞。

Step 3 (Encoding and Embedding)

接下來為資料集的每個唯一單詞配置設定一個整數作為編号。

圖解!逐漸了解 Transformers 的數學原理
圖解!逐漸了解 Transformers 的數學原理

在對我們的整個資料集進行編碼之後,是時候選擇我們的輸入了。我們将從語料庫中選擇一個句子以開始:

“When you play game of thrones”

圖解!逐漸了解 Transformers 的數學原理
圖解!逐漸了解 Transformers 的數學原理

作為輸入傳遞的每個字将被表示為一個編碼,并且每個對應的整數值将有一個關聯的embedding聯系到它。

圖解!逐漸了解 Transformers 的數學原理
圖解!逐漸了解 Transformers 的數學原理
  • 這些embedding可以使用谷歌Word2vec (單詞的矢量表示) 找到。在我們的數值示例中,我們将假設每個單詞的embedding向量填充有 (0和1) 之間的随機值。
  • 此外,原始論文使用embedding向量的512次元,我們将考慮一個非常小的次元,即5作為數值示例。
圖解!逐漸了解 Transformers 的數學原理
圖解!逐漸了解 Transformers 的數學原理

現在,每個單詞embedding都由5維的embedding向量表示,并使用Excel函數RAND() 用随機數填充值。

Step 4 (Positional Embedding)

讓我們考慮第一個單詞,即 “when”,并為其計算位置embedding向量。位置embedding有兩個公式:

圖解!逐漸了解 Transformers 的數學原理

第一個單詞 “when” 的POS值将為零,因為它對應于序列的起始索引。此外,i的值 (取決于是偶數還是奇數) 決定了用于計算PE值的公式。次元值表示embedding向量的次元,在我們的情形下,它是5。

圖解!逐漸了解 Transformers 的數學原理
圖解!逐漸了解 Transformers 的數學原理

繼續計算位置embedding,我們将為下一個單詞 “you” 配置設定pos值1,并繼續為序列中的每個後續單詞遞增pos值。

圖解!逐漸了解 Transformers 的數學原理
圖解!逐漸了解 Transformers 的數學原理

找到位置embedding後,我們可以将其與原始單詞embedding聯系起來。

圖解!逐漸了解 Transformers 的數學原理
圖解!逐漸了解 Transformers 的數學原理

我們得到的結果向量是e1+p1,e2+p2,e3+p3等諸如此類的embedding和。

圖解!逐漸了解 Transformers 的數學原理
圖解!逐漸了解 Transformers 的數學原理

Transformer架構的初始部分的輸出将在之後用作編碼器的輸入。

編碼器

在編碼器中,我們執行複雜的操作,涉及查詢(query),鍵(key)和值(value)的矩陣。這些操作對于轉換輸入資料和提取有意義的表示形式至關重要。

圖解!逐漸了解 Transformers 的數學原理
圖解!逐漸了解 Transformers 的數學原理

在多頭注意力(multi-head attention)機制内部,單個注意層由幾個關鍵元件組成。這些元件包括:

圖解!逐漸了解 Transformers 的數學原理
圖解!逐漸了解 Transformers 的數學原理

請注意,黃色框代表單頭注意力機制。讓它成為多頭注意力機制的是多個黃色盒子的疊加。出于示例的考慮,我們将僅考慮一個單頭注意力機制,如上圖所示。

Step 1 (Performing Single Head Attention)

注意力層有三個輸入

  • Query
  • Key
  • Value
圖解!逐漸了解 Transformers 的數學原理
圖解!逐漸了解 Transformers 的數學原理

在上面提供的圖中,三個輸入矩陣 (粉紅色矩陣) 表示從将位置embedding添加到單詞embedding矩陣的上一步獲得的轉置輸出。另一方面,線性權重矩陣 (黃色,藍色和紅色) 表示注意力機制中使用的權重。這些矩陣的列可以具有任意數量的維數,但是行數必須與用于乘法的輸入矩陣中的列數相同。在我們的例子中,我們将假設線性矩陣 (黃色,藍色和紅色) 包含随機權重。這些權重通常是随機初始化的,然後在訓練過程中通過反向傳播和梯度下降等技術進行調整。是以讓我們計算 (Query, Key and Value metrices):

圖解!逐漸了解 Transformers 的數學原理
圖解!逐漸了解 Transformers 的數學原理

一旦我們在注意力機制中有了query, key, 和value矩陣,我們就繼續進行額外的矩陣乘法。

圖解!逐漸了解 Transformers 的數學原理
圖解!逐漸了解 Transformers 的數學原理
圖解!逐漸了解 Transformers 的數學原理
圖解!逐漸了解 Transformers 的數學原理
圖解!逐漸了解 Transformers 的數學原理
圖解!逐漸了解 Transformers 的數學原理

現在,我們将結果矩陣與我們之前計算的值矩陣相乘:

圖解!逐漸了解 Transformers 的數學原理
圖解!逐漸了解 Transformers 的數學原理

如果我們有多個頭部注意力,每個注意力都會産生一個次元為 (6x3) 的矩陣,那麼下一步就是将這些矩陣級聯在一起。

圖解!逐漸了解 Transformers 的數學原理
圖解!逐漸了解 Transformers 的數學原理

在下一步中,我們将再次執行類似于用于擷取query, key, 和value矩陣的過程的線性轉換。此線性變換應用于從多個頭部注意獲得的級聯矩陣。

圖解!逐漸了解 Transformers 的數學原理
圖解!逐漸了解 Transformers 的數學原理