我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。
在 AI說書 - 從0開始 - 52 中,我們已經解析完 Attention 機制如何運作的,以下延伸至 Multi-Head Attention:
Head 1 說明:
Head 2 說明:
合併:
然後有一點要注意,我們為了方便說明,在向量乘法中,我們忽略了一個項目,現實情況的 Transformer 的向量乘法會除上「根號 矩陣維度」,而矩陣維度有兩個,其一是 Input Embedding 的維度,而我們選另一個維度,以避免向量越來越長,引起乘法結果越來越大的議題。
講完數學,現在我們來打一點程式說明一下 Multi-Head Attention 的運作機制,為了方便說明,我們把 Input Embedding 的維度由 512 改成 4,此外我指定一個句子只有 3 個字,這樣的小規模,讓大家比較不會害怕:
import numpy as np
from scipy.special import softmax
x = np.array([[1.0, 0.0, 1.0, 0.0], # Word 1
[0.0, 2.0, 0.0, 2.0], # Word 2
[1.0, 1,0, 1,0, 1,0]]) # Word 3