??每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎?訂閱我們的簡報,深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同,從行業內部的深度分析和實用指南中受益。不要錯過這個機會,成為AI領域的領跑者。點擊訂閱,與未來同行! 訂閱:https://rengongzhineng.io/
要提出像GPT這類大型語言模型的概念,并從事嚴肅的人工智能研究,確實需要扎實的數學功底。然而好消息是,如果只是想理解這些模型的工作原理,所需的數學并不復雜。只要曾經在1960年代以后接受過高中數學教育,就已經掌握了基本的知識,比如向量、矩陣等內容。
需要注意的是,本文講解的是理解“推理”過程所需的數學知識——也就是如何使用一個已經訓練好的人工智能模型,而不是關于如何訓練它的過程。雖然訓練所需的數學也并不復雜,但那部分內容將留待后續文章介紹。
明確這一點后,正式開始深入講解。
向量與高維空間
博主使用了“向量”一詞,基本等同于軟件工程師所說的“數字數組”。但在數學意義上,一個長度為 n 的向量不僅是一個數組,它還表示一個 n 維空間中的方向和距離,或者等價地,可以看作是從原點出發,沿著這個向量到達某個點。
在二維空間中,向量 (2, -3) 意味著“向右兩單位,下移三單位”,也就是從原點出發移動后所處的位置。三維空間中的向量 (5, 1, -7) 則意味著“向右五單位、上移一單位、遠離觀察者七單位”(某些情況下可能表示向觀察者移動七單位)。當維度更高時,人類無法直觀想象,但概念上是一致的。
在LLM中,向量用于表達各種含義。例如,模型輸出的logits向量(見上一篇)代表了對下一個token的不同可能性的預測。在這種情形下,可以將logits看作存在于一個高維空間中,這個空間表示了“意義”的分布。
詞匯空間(Vocab Space)
每個token對應的logits值是一組數字,每個數字表示該token在當前上下文中作為下一個token的可能性。在書中分析的GPT-2模型中,其tokenizer包含50,257個token,因此每個logits向量的長度也是50,257。比如,token ID為464的是“The”,那么logits向量中第464位的數值表示“The”作為下一個token的相對概率。
可以將每一個logits向量視為一個存在于50,257維空間中的點。這個空間的每一個位置都代表了對下一token的各種可能性組合。本文將這個空間稱為“詞匯空間”。
不過,這是一個“混亂”的詞匯空間。假設一個簡化的LLM,其詞匯表中只有三個token,那么兩個logits向量 (1, 2, 3) 和 (-9, -8, -7) 雖然數值不同,但表達的是相同的排序:第一個token最不可能,第二個次之,第三個最可能。
為了整理這種冗余,可以將logits向量傳入softmax函數,從而得到一組真實的概率分布。這組概率數值介于0到1之間,總和為1。這樣,所有表達相同排序的logits向量將映射為同一個概率向量。例如,(1, 2, 3) 和 (-9, -8, -7) 都會被softmax映射為大約 (0.09, 0.24, 0.66)。
需要指出的是,其他向量也可能表達相同的排序,但概率分布不同。例如,(1, 2, 5) 雖然仍是“第三個token最可能”的排序,但其softmax結果會是類似 (0.02, 0.05, 0.94) 的分布,顯示出第三個token的優勢更加明顯。
因此,可以將詞匯空間分為兩類:一種是“混亂”的、未經歸一化的向量空間;另一種是經過softmax函數后得到的、表示真實概率分布的“整潔”空間。
還有一種特殊情況是所謂的“one-hot向量”,其中只有一個數值為1,其余均為0,表示某個token的概率為100%。這種向量在下一篇文章中將發揮關鍵作用。
嵌入空間(Embedding Space)
嵌入空間是另一種高維空間,向量在此代表“意義”。如果將這些向量視為點,那么在語義上相近的詞匯會在空間中聚集在一起。
“意義”的定義因任務而異。比如,在一個為動物學家設計的嵌入空間中,“家貓”、“獅子”和“老虎”可能聚集成一個簇,而“狗”、“狼”和“郊狼”則形成另一個簇。這種分類體現了對貓科動物和犬科動物的區分。
而在日常應用中,可能更希望看到“家貓”和“狗”聚在一起,遠離“獅子”或“狼”等野生動物。這種嵌入空間更適合用于普通文本的處理和分析。
嵌入空間的維度和定義方式是靈活多樣的,可以從表達復雜概念的“豐富空間”,一直到僅根據詞性(如動詞、名詞、形容詞)來聚類的“簡單空間”。
一個可能令人困惑的事實是,在嵌入空間中,向量的長度往往并不重要。比如,(1, 2) 和 (8, 16) 方向一致,因此可視為表達相同的意義。
矩陣乘法實現空間投影
復習一下:矩陣本質上是多個向量的集合。例如,將兩個二維向量 (2, -3) 和 (5, 1) 并排組合成矩陣:
[2 5]
[-3 1]
或按行排列:
[2 -3]
[5 1]
矩陣的維度用“行×列”表示。上面兩個都是2×2矩陣。另一個例子是2×3矩陣:
[ 2 -3 7]
[ 5 1 -8]
矩陣可以相乘。這種乘法可用于幾何變換。例如,下面這個2×2旋轉矩陣:
[cosθ -sinθ]
Shortcode
可以將點繞原點逆時針旋轉θ度。將所有點放入一個n×2矩陣X(每行一個點),與旋轉矩陣R相乘得到結果矩陣Y:
Y = X · R
在傳統數學教學中,點通常是列向量組成的2×n矩陣,此時矩陣乘法寫作R · X。但在機器學習中,更常采用“行優先”的格式,將每個點表示為行向量,組合成n×2矩陣,再與R右乘,即X · R。本文從此將采用這一方式。
可以將這個旋轉矩陣R理解為一種函數,將輸入的點變換成另一個空間中的點。也可以將其看作是將點從一個二維空間投影到另一個旋轉過θ度的空間中。
更廣泛地說,矩陣乘法可用于在不同維度的空間之間進行投影。例如:
3×2矩陣可將三維空間中的點投影到二維平面(用于圖形顯示)
50,257×768矩陣可將50,257維空間投影到768維空間
768×50,257矩陣則實現從768維空間到50,257維空間的投影
這種投影可能是“有損”的,也就是說,在降維過程中會丟失一部分信息,即使再投影回來,也無法恢復原始數據。例如將兩個不同遠近的正方體投影到二維平面后,可能變成大小相同的圖形。
神經網絡的本質
一個神經網絡的單層可以簡化表示為:
Z = ?(XW? + B)
其中?是激活函數,B是偏置項。若忽略這兩個部分,則簡化為:
? = XW?
其中:
X 是輸入數據,形狀為 n × d_in
W 是權重矩陣,形狀為 d_out × d_in,轉置后為 d_in × d_out
? 是輸出矩陣,形狀為 n × d_out
因此,神經網絡中的一層實質上就是一個矩陣乘法過程,即從一個輸入維度的空間投影到輸出維度的空間。偏置項B僅僅是一個線性平移,激活函數則可選。
總結
以上便是目前為止理解大型語言模型所需的基本數學概念。正如文章開頭所述,這些內容基本不超出高中數學的范疇。盡管涉及的矩陣較大、空間維度較高,但核心數學原理仍然相對簡單。