今天釐清了一個很容易混淆的地方:GPT-2 small 裡的 12,可能同時指 12 layers,也可能指 12 heads,但這兩個意思完全不同。
Layer 是模型的深度。GPT-2 small 有 12 層 Transformer block,意思是 token vector 會像走流水線一樣,依序通過第 1 層、第 2 層,一直到第 12 層。每通過一層,token 的向量就會被重新加工一次,吸收更多上下文資訊。
Head 則是每一層 self-attention 裡面的分工。GPT-2 small 每層有 12 個 attention heads,意思是在同一層裡,模型會用 12 組不同的 Q/K/V projection,算出 12 套不同的 attention pattern。
所以可以粗略理解成:
12 layers = 有 12 個加工站。
12 heads = 每個加工站裡有 12 組不同的注意力計算。
一開始我以為「12 個 head 從不同角度看事情」是不是代表每個 head 都有明確功能,例如 Head 1 看主詞、Head 2 看受詞、Head 3 看因果。後來才發現,這其實只是教學比喻。
更精準地說,每個 head 只是有自己的一組 Q/K/V 參數矩陣,所以它們會算出不同的 attention pattern。這些 pattern 有時候可以被人類事後解釋成「看前一個 token」、「看括號配對」、「看語法關係」、「看代名詞指代」,但這不是設計者一開始指定好的。
也就是說,head 的功能不是人工命名出來的,而是模型訓練後自然形成的高維數學分工。有些 head 可能真的學到明顯模式,有些 head 可能功能混雜,有些甚至彼此重複,很難用人類語言清楚說明。
這讓我覺得 Transformer 很有趣:它的結構很清楚,數學操作也很明確,但訓練完之後,每個 head 到底「學會了什麼」,不一定能被完整解釋。
一句話總結:
Layer 是一層一層加工 token;Head 是同一層裡多組 attention 並行運作。所謂「不同 head 從不同角度看事情」是方便理解的比喻,實際上它們只是不同的 Q/K/V 矩陣學出來的不同 attention pattern。
