LING5006 · W04 向量表徵 · 第二部 統計基礎與邏輯迴歸2-1

第二部 · 統計基礎

統計機率 101

Probability, conditioning, distributions, logs

先不用擔心沒修完統計學。接下來每一頁只會用到這4個高中數學概念,而其中第三個 - 機率分布 - 正是 LLM 每一步的輸出。

① 機率:0 到 1 之間的數

0 不可能 0.5 擲硬幣 必然 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

機率 plog p 10 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.19log 字數

這是 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:處處唱反調,內積是負的。

方向相近 → 內積大
互相垂直 → 內積 0
方向相反 → 內積為負

同一個運算,本週之後會出現四次

2-3w·x邏輯迴歸:把特徵的證據加權加總
3-3cos(v, w)兩個詞向量有多相似
3-4c·wword2vec:c 像不像 w 的鄰居
W05q·kTransformer 注意力:這個詞該多注意那個詞
動手試試 [2, 1] · [3, −2] = ? 參考:2×3 + 1×(−2) = 4
→ 通往 LLM

LLM 的計算大多是矩陣乘法=一次做很多個內積;GPU 擅長的正是這件事。

出處:logreg25aug p.16–18;vector25aug p.47;nn25aug p.42-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權重 wx × w
正面詞的個數32.57.5 負面詞的個數2−5.0−10.0 有沒有 “no”1−1.2−1.2 第一、二人稱代名詞數30.51.5 有沒有 “!”02.00 log(字數 66)4.190.72.93
偏差項 b(主席本來的傾向)0.1
總分 z = w·x + b0.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 → 正面
動手試試 如果評論最後多了一個「!」(x5 從 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 三步驟

正面/負面/中立,各有一個分數。先用 ez 把分數都變成正數,再除以總和,讓它們加起來等於 1。

① 分數 z② 取 ez(變正數)③ ÷ 總和 11.22 → 機率 正面2.07.39
0.66
負面1.02.72
0.24
中立0.11.11
0.10

「溫度」:在 softmax 之前把分數除以 T

T = 0.5 更尖、更保守
.86
.12
.02
T = 1 原樣
.66
.24
.10
T = 2 更平、更冒險
.50
.30
.19
動手試試 看圖回答: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.30
L = −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–482-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 的邏輯迴歸
加權加總 → 非線性壓縮 → 輸出

正負輸入隱藏層 hsoftmax

兩層網路:中間多一層「隱藏層」
每個圓圈都是左邊那一個神經元

01
XOR:一條線切不開ELI5
「你我只有一個人去,派對才好玩」:兩人都去或都不去都不行。深色點(好玩)在對角,沒有任何一條直線能把它們和白點分開。單一神經元只會畫直線;加一層隱藏層,網路先把輸入換個表示法,問題就變得能切了。
表徵學習:從「嵌入表」開始

不再手工設計特徵。每個詞在一張大表 E 裡有自己的一列數字(嵌入)。輸入 “dessert was great”:

dessertwasgreat→ 查 E 取三列 → 平均 → 分類器

這張表 E 裡的數字,也用梯度下降一起學。第三部要講的,就是這張表。

神經語言模型:用前三個詞猜第四個

forallthe
→
查嵌入 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)
損失 {{ lossLabel }}答對 {{ accLabel }}起點答對 {{ acc0Label }}
動手試試 把 η 拉到最大,損失和答對率會怎樣?再拉到最小,300 步夠不夠學會? 參考:η 太大時每一步都跨過谷底,損失卡在高處、答對率掉到一半左右;η 太小時損失降得很慢,300 步後仍明顯偏高。這就是動畫裡「來回彈跳」與「走好慢」的兩顆球。
→ 通往 LLM

訓練 LLM 時,學習率同樣是最要緊的超參數之一:通常先由小慢慢調大(warm-up),再逐漸調小。

出處:logreg25aug p.51–78;nn25aug p.72–95(反向傳播)。資料為示意用的 24 則合成影評。2-8