LING5006 · W04 向量表徵 · 第二部 統計基礎與邏輯迴歸 2-1
第二部 · 統計基礎
統計機率 101
Probability, conditioning, distributions, logs
先不用擔心沒修完統計學。接下來每一頁只會用到這4個高中數學概念,而其中第三個 - 機率分布 - 正是 LLM 每一步的輸出。
① 機率:0 到 1 之間的數
所有可能結果的機率加起來=1。
② 條件機率 P (A |B )
「把世界縮小到 B 發生的那一塊,再看 A 佔多少。」1-3 的「只看深色格子」就是在做這件事。
注意:P (負|爛) ≠ P (爛|負)。
③ 機率分布:把 1 分給所有可能ELI5
「我今天想吃__」空格裡可能是什麼?一個好的猜測不是單一答案,而是一整排加起來等於 1 的機率 :
飯
0.31
麵
0.22
火鍋
0.14
早餐
0.09
甜點
0.07
其他
0.17
合計 1.00(數字為示意)
④ 對數 log
機率 p log p
1 0
0.5 −0.69
0.1 −2.30
0.01 −4.61
0.0001 −9.21
機率越小,log 越負。 確定的事 log 是 0。
乘法變加法。 一句話有 10 個詞,每個詞機率 0.01,整句機率是 0.01 連乘 10 次=10−20 這樣小到電腦會四捨五入成 0。取 log 後變成 −4.61 加 10 次=−46.1,好算又不會消失。
本講義的 log 以 e (≈ 2.718)為底。
動手試試 兩個互不相干的事件,各自機率 0.1。一起發生的機率是多少?用上表的 log 算算看,結果對得上嗎?
參考:0.1 × 0.1 = 0.01;log 版本:−2.30 + (−2.30) = −4.61,正好是 log 0.01。
→ 通往 LLM
LLM 每產生一個詞元,都先算出③這樣一條分布,再從中挑一個。「溫度」和「取樣」就是在調整這條分布(2-4);而訓練時計算的,正是④裡「正確答案的 log 機率」(2-5)。
對應 SLP3 各章的數學預備;log 下溢問題見 SLP3 n-gram 章 2-1
LING5006 · W04 向量表徵 · 第二部 統計基礎與邏輯迴歸 2-2
第二部 · 本週最重要的一個運算
向量與內積
Vectors and the dot product
向量就是一排數字。 內積就是「對應位置相乘,再全部加起來」——它衡量兩排數字有多同調 。
一份文件可以是一個向量
3 正面詞數
2 負面詞數
1 有沒有 no
3 你我代名詞數
0 有沒有 !
4.19 log 字數
這是 2-3 那則影評的 x 。一個詞也可以是向量(第三部)。
內積:你和誰口味相近? 替三部電影打分,−2 討厭 … +2 超愛 ELI5
電影 A 電影 B 電影 C
你 +2 −1 +2
小明 +2 −2 +1 → 4 + 2 + 2 = 8
小華 −2 +1 −1 → −4 − 1 − 2 = −7
你‧小明=(2×2) + (−1×−2) + (2×1)=8:意見一致的地方越多、越強烈,內積越大。你‧小華=−7:處處唱反調,內積是負的。
同一個運算,本週之後會出現四次
2-3 w ·x 邏輯迴歸:把特徵的證據加權加總
3-3 cos(v , w ) 兩個詞向量有多相似
3-4 c ·w word2vec:c 像不像 w 的鄰居
W05 q ·k Transformer 注意力:這個詞該多注意那個詞
動手試試 [2, 1] · [3, −2] = ?
參考:2×3 + 1×(−2) = 4
→ 通往 LLM
LLM 的計算大多是矩陣乘法=一次做很多個內積 ;GPU 擅長的正是這件事。
出處:logreg25aug p.16–18;vector25aug p.47;nn25aug p.4 2-2
LING5006 · W04 向量表徵 · 第二部 統計基礎與邏輯迴歸 2-3
第二部 · 零件②:分類函數
邏輯迴歸:加權投票,換成機率
Logistic regression for one observation
每個特徵是一位評審,權重 是他講話的音量與立場。把所有意見加總成一個分數 z ,再用 sigmoid 換成機率。
一則英文影評(SLP3 範例)
It’s hokey . There are virtually no surprises, and the writing is second-rate . So why was it so enjoyable ? For one thing, the cast is great . Another nice touch is the music. I was overcome with the urge to get off the couch and start dancing. It sucked me in, and it’ll do the same to you .
特徵(評審) 值 x 權重 w x × w
正面詞 的個數3 2.5 7.5
負面詞 的個數2 −5.0 −10.0
有沒有 “no” 1 −1.2 −1.2
第一、二人稱代名詞數 3 0.5 1.5
有沒有 “!” 0 2.0 0
log(字數 66) 4.19 0.7 2.93
偏差項 b (主席本來的傾向) 0.1
總分 z = w ·x + b 0.83
怎麼讀權重 ELI5
正號 替「正面」說話,負號 替「負面」說話;數字越大,音量越大。
負面詞的 −5.0 比正面詞的 2.5 大聲一倍:一個負面詞抵得過兩個正面詞。
這些權重不是人訂的,而是從資料學 來的(2-5、2-6)。
1 特徵 x = [3, 2, 1, 3, 0, 4.19]
→
2 加權加總 z = w ·x + b = 0.83
→
3 壓成機率 σ (0.83) = 0.70
→
4 判定 0.70 > 0.5 → 正面
動手試試 如果評論最後多了一個「!」(x 5 從 0 變 1),z 變成多少?對照 2-4 的曲線,機率大約變成多少?
參考:z = 0.83 + 1 × 2.0 = 2.83;σ (2.83) ≈ 0.94。一個驚嘆號讓模型更有把握是正面。
→ 通往 LLM
神經網路裡的每一個「神經元」都在做這個計算:w ·x + b ,再過一個非線性函數(2-7)。LLM 有幾十億到上兆個 w ——差別只在規模,以及特徵不再由人設計。
出處:logreg25aug p.15–22、30–35(數值取自 SLP3 範例) 2-3
LING5006 · W04 向量表徵 · 第二部 統計基礎與邏輯迴歸 2-4
第二部 · 零件②:分類函數(續)
Sigmoid 與 softmax:把分數變成機率
Squashing scores into probabilities
總分 z 可以是任何數字,但機率必須在 0 到 1 之間。sigmoid 是一台壓縮機 ;softmax 是它的多類別版本。
1
0.5
0
−6
0
+6
z
z = 0.83 → 0.70
z = 4 → 0.98
z = −4 → 0.02
σ (z ) = 1 ⁄ (1 + e −z )
不用背公式,記住形狀 ELI5
分數很大 → 幾乎確定「是」;分數很小 → 幾乎確定「不是」;分數 0 → 一半一半。中間最敏感,兩端幾乎不動。
判定規則:σ (z ) > 0.5 就說「正面」。而 P (負面) = 1 − σ (z )。
超過兩類:softmax 三步驟
正面/負面/中立,各有一個分數。先用 e z 把分數都變成正數,再除以總和,讓它們加起來等於 1。
① 分數 z ② 取 e z (變正數) ③ ÷ 總和 11.22 → 機率
正面 2.0 7.39
負面 1.0 2.72
中立 0.1 1.11
動手試試 看圖回答:z = 0 時機率是多少?z = −0.83 呢?(提示:曲線左右對稱)
參考:0.5;1 − 0.70 = 0.30。
→ 通往 LLM
LLM 的最後一層就是 softmax,只是類別有幾萬到十幾萬個詞元。你在聊天介面調的「temperature」,就是上面這個 T 。
出處:logreg25aug p.19–27;nn25aug p.31(softmax) 2-4
LING5006 · W04 向量表徵 · 第二部 統計基礎與邏輯迴歸 2-5
第二部 · 零件③:目標函數
損失函數:模型有多「驚訝」?
Cross-entropy loss
學習的第一步,是量出「錯得多離譜」。交叉熵損失只有一句話:−log(模型給正確答案的機率) 。
氣象主播的驚訝度 ELI5
主播說「明天 90% 會下雨」,結果真的下了——他不驚訝,損失 0.11。另一位說「只有 10%」,結果也下了——他很糗,損失 2.30。給正確答案的機率越低,懲罰越重 ;而且懲罰不是線性的,越接近 0 爆衝得越快。
給正確答案的機率 → 1
0
損失
p = 0.1 → 2.30
p = 0.3 → 1.20
p = 0.7 → 0.36
接續 2-3 的影評
模型說 P (正面) = 0.70。
若正確答案是正面 :L = −log 0.70 = 0.36 小,猜得不錯
若正確答案是負面 :模型只給它 0.30L = −log 0.30 = 1.20 大,該好好修正
課本上的樣子
L = −[ y log ŷ + (1 − y ) log(1 − ŷ ) ]
別被嚇到:y 只能是 1 或 0。y = 1 時後半消失,只剩 −log ŷ ;y = 0 時前半消失,只剩 −log(1 − ŷ )。就是上面那一句話。
為什麼是 −log?
我們想讓「正確答案的機率」越大越好。取 log 讓連乘變連加(2-1);加負號則把「越大越好」翻成「越小越好」,方便下一頁的下山演算法。
動手試試 模型對正確答案只給 0.5(完全沒把握),損失是多少?(查 2-1 的表)
參考:−log 0.5 ≈ 0.69
→ 通往 LLM
LLM 預訓練的目標就是這一行:對語料裡每一個位置,L = −log P (真正的下一個詞 | 前文)。常聽到的困惑度 perplexity = e 平均損失 :平均損失 2.3 ≈ 困惑度 10,好比模型每一步都在 10 個詞之間猶豫。
出處:logreg25aug p.38–48 2-5
LING5006 · W04 向量表徵 · 第二部 統計基礎與邏輯迴歸 2-6
第二部 · 零件④:最佳化
梯度下降:在濃霧裡下山
Gradient descent
損失告訴我們錯多少;梯度 告訴我們權重往哪邊調,錯誤會變小。一小步一小步地走,就是「學習」。
w
損失
起點
虛線=此處坡度
谷底:損失最小
蒙著眼睛下山 ELI5
看不見谷底,只能用腳感覺坡度。腳下往右是下坡,就往右跨一小步;再感覺、再跨。
w 新 = w 舊 − η × 坡度
減號=往坡度的反方向 走。η (學習率)是步伐大小:太大會跨過谷底來回震盪,太小則走到天荒地老。
實際走一步(只看一則評論)
特徵:正面詞 3 個、負面詞 2 個;正確答案 y = 1(正面)。起點所有權重都是 0,η = 0.1。
1 先猜:z = 0,σ (0) = 0.5 猜 0.5,答案是 1:少了 0.5
2 坡度 = (0.5 − 1) × [3, 2, 1] = [−1.5, −1.0, −0.5] 白話:「猜錯多少」×「這個特徵有多少」。最後的 1 是給 b 的。
3 新權重 = 0 − 0.1 × 坡度 = [0.15, 0.10, 0.05 ] 所有權重都往「更像正面」調了一點。
咦,負面詞的權重也變大了?因為只看了一則正評。看過成千上萬則負評之後,它會被拉成負的——所以要看很多 例子。
隨機梯度下降 SGD 每看一則例子就走一步。
小批次 mini-batch 每看一小批(如 64 則)平均一下再走。
超參數 η 、批次大小由人決定,不是學出來的。
→ 通往 LLM
訓練 LLM=對幾十億個權重做同一件事,重複上兆個詞元。多出來的只有一招:反向傳播 ——用微積分的連鎖律,把坡度從輸出層一路傳回每一層的每個權重。
出處:logreg25aug p.51–78(例題取自 p.68–73);nn25aug p.72–95(反向傳播) 2-6
LING5006 · W04 向量表徵 · 第二部 統計基礎與邏輯迴歸 2-7
第二部 · 橋樑
從邏輯迴歸到神經網路
One unit is a logistic regression; stack them and features learn themselves
一個「神經元」=一次邏輯迴歸。把很多個疊起來,網路就能自己發明特徵 ,不再需要人去數「正面詞有幾個」。
x₁ x₂ x₃ w₁ w₂ w₃ b σ y
Σ
一個神經元 =2-3 的邏輯迴歸加權加總 → 非線性壓縮 → 輸出
正 負 輸入 隱藏層 h softmax
兩層網路 :中間多一層「隱藏層」每個圓圈都是左邊那一個神經元
0 1
XOR:一條線切不開 ELI5
「你我
只有一個人 去,派對才好玩」:兩人都去或都不去都不行。深色點(好玩)在對角,沒有任何一條直線能把它們和白點分開。單一神經元只會畫直線;加一層隱藏層,網路先把輸入
換個表示法 ,問題就變得能切了。
表徵學習:從「嵌入表」開始
不再手工設計特徵。每個詞在一張大表 E 裡有自己的一列數字(嵌入)。輸入 “dessert was great”:
dessert was great → 查 E 取三列 → 平均 → 分類器
這張表 E 裡的數字,也用梯度下降一起學。第三部要講的,就是這張表。
神經語言模型:用前三個詞猜第四個
for all the
→
查嵌入 E
→
隱藏層 h
→
softmax:|V | 個詞的機率
→
fish
為什麼比 n-gram 好?訓練資料只見過 “cat gets fed”,沒見過 “dog gets fed”。n-gram 對後者一無所知;神經語言模型卻因為 cat 和 dog 的嵌入很接近,能把學到的東西類推 過去。
動手試試 模型沒有人告訴它「貓和狗很像」。它是怎麼讓 cat 和 dog 的嵌入變得接近的?(提示:想想它們常出現在哪些句子裡)
參考:兩個詞常出現在相似的上下文(feed、pet、vet…),用它們去預測下一個詞時,梯度會把它們推向相似的位置。這就是第三部的「分布假說」。
→ 通往 LLM
把上面這條管線的「隱藏層」換成幾十層 Transformer,讓每個詞都能參考前面所有的詞(不只三個),就是 GPT 類 LLM 的骨架(W05)。
出處:nn25aug p.3–7、15–25(XOR)、28–35、55–62(嵌入與池化)、65–69(神經語言模型) 2-7
LING5006 · W04 向量表徵 · 第二部 統計基礎與邏輯迴歸 2-8
第二部 · 動畫與實驗
神經網路怎麼「學」:看一遍,再自己調
Forward pass, loss, gradient descent, backpropagation — in two and a half minutes
把 2-3 到 2-7 串成一部 2 分半的動畫:同一則影評走完「猜 → 算錯多少 → 找坡度 → 分責任 → 調一點點」,最後連回 LLM。
自己調調看:學習率 η 與訓練步數 同一批 24 則影評、同一個小網路
動手試試 把 η 拉到最大,損失和答對率會怎樣?再拉到最小,300 步夠不夠學會?
參考:η 太大時每一步都跨過谷底,損失卡在高處、答對率掉到一半左右;η 太小時損失降得很慢,300 步後仍明顯偏高。這就是動畫裡「來回彈跳」與「走好慢」的兩顆球。
→ 通往 LLM
訓練 LLM 時,學習率同樣是最要緊的超參數之一:通常先由小慢慢調大(warm-up),再逐漸調小。
出處:logreg25aug p.51–78;nn25aug p.72–95(反向傳播)。資料為示意用的 24 則合成影評。 2-8