課堂補充:老師上課強調、考試可能考的 10 個觀念

結論:作業只用到 Word2Vec 的「結果」,但老師上課講了它「怎麼來的」。閉書考試會考你能不能把作業跟上課內容串起來。下面每一點都附投影片頁碼或上課時間,可以回去對照。

1. 為什麼不用 one-hot:因為所有字都一樣「不像」

one-hot 是每個字一個格子,cat=[1,0,0…]、dog=[0,1,0…]。任兩個不同的字,相似度都是 0:cat 跟 dog 和 cat 跟 truck 一樣不像。

詞向量(dense vector)的數字是學出來的,不是數出來的,所以相近的字可以有相近的數字。個別的維度(第 37 個數字代表什麼)不需要、也很難解釋。

依據:W1 p57–58、p64;W3 00:03:20–00:04:16。

2. 分布假說:前後文相似 → 意思相似

「A word is characterized by the company it keeps」(Firth 1957)。注意定義是出現在相似的前後文,不是「兩個字常一起出現」:

依據:W1 p70、W2 p24。

3. Skip-gram 的訓練資料是「自己做出來的」

拿一句話,每個字輪流當中心字,跟它前後 window 範圍內的字配成一對:

句子:the cat licked its fur  window = 1
(the, cat)  (cat, the)  (cat, licked)  (licked, cat)  (licked, its)  (its, licked)  (its, fur)  (fur, its)

這樣沒有人標註的文章,也能變成「給輸入、猜輸出」的訓練資料。老師說這是「訓練上的一種巧思」,後來 BERT 的克漏字也是同一個想法。window 越大,配對越多。

依據:W1 p82;W3 01:13:00–01:16:05。

4. Word2Vec 的網路長什麼樣:詞向量就是第一層的權重

步驟在做什麼
輸入中心字的 one-hot(30 萬格裡只有一格是 1)
第一層(矩陣 V)乘上 one-hot 其實就是「查表」,取出這個字那一列(例如 100 個數字)
隱藏層只有一層,大小就是向量長度
第二層(矩陣 U)跟每個字的「輸出向量」做內積,再用 softmax 變成機率:每個字當鄰居的機率
學習用 cross-entropy 跟正確鄰居比,調整 V 和 U

訓練完拿來用的詞向量,就是 V(第一層權重)的每一列。

依據:W1 p83–90、W2 p37;W3 01:17:01–01:27:48。

5. Negative sampling:把「猜 30 萬選 1」改成「是不是鄰居」

第 4 點最後一步要對整本字典(30 萬字)算機率,非常慢。negative sampling 改成:每一組真的(中心字, 鄰居)當正例,再照字頻隨機抽 5 個字當負例,訓練一個「是不是真鄰居」的二元分類器(logistic regression)。每次只更新這幾個字,所以快很多。

依據:W2 p33、p38。作業設定 negative=5 就是這個。

6. 類比看的是「相對關係」,不是「絕對位置」

老師原話:「我們看的並不是字的向量的絕對的向量的東西,而是一種對比的關係」。man→woman 和 king→queen 那條線「方向斜率」很一致,但不是完全一樣。

所以會同時出現兩件事:類比題答得不錯(相對關係很好),但某個字附近的鄰居常常怪怪的(絕對位置不可靠,例如 cat 的鄰居是卡通角色名)。這正是老師說「做完作業你會發現有點問題」的意思。

依據:W3 00:27:56–00:29:34、00:04:34–00:05:43、00:25:54。

7. 字典裡沒有的字(OOV)、字首字尾、錯字 → FastText

Word2Vec、GloVe 每個字一個向量,沒看過的字就沒有向量。FastText 把字拆成字元片段(例如 un-、-ly、-ness),沒看過的字也能用片段拼出向量。老師說「這也會在 Assignment 1 討論」。

剛好對上作業:表現最差的兩類就是反義字首(un-)和副詞(-ly),論壇字典也被錯字(slary)占滿——這些都是看拼法就能幫上忙的情況。

依據:W1 p92、p94(Vector search is not robust to typos);W3 01:29:49–01:32:55。

8. 一字多義 → 上下文詞向量(BERT、GPT)

bank(銀行/河岸)是老師投影片的例子。Word2Vec、GloVe 一個字只有一個向量,叫靜態詞向量;BERT、GPT 會看整句話給不同的向量,叫上下文詞向量。

依據:W1 p60、W2 p39–40。

9. 停用詞:老師說「現在一點都不重要,也不會去做」

老師原話:以前移除停用詞「很重要,但是現在一點都不重要也不會去做」。以前是為了省 20~30% 的索引空間,而且「搞不好有一些很重要的東西被拿掉」。投影片也寫:「When to remove stop words? Avoid to broke the semantics.」

這是報告第 1 題「為什麼不刪停用詞」最好的課程依據。

依據:W2 01:39:50–01:40:54;W1 p47。

10. 維度、模型怎麼選:It depends