12 報告第 5 題:加分實驗(配分 5%,但最能拉開差距)

結論:我做了 8 個加分實驗(實驗 ①~⑧,對照筆記本第 5 題 (a)~(h),見用語表)。最有價值的是:①先量雜訊(讓後面每個比較都知道算不算數);②停用詞實驗(整體沒超過雜訊、家人/性別卻掉 14.82 個百分點,證明只看整體會被騙);③調參數(300 維只用 5% 教材就贏過 Wiki 20% 字典);⑤錯題分析(45% 的錯題,正確答案就在第 2~10 名)。實驗 ⑧ 覆蓋率在第 10 節用到。

每個實驗都照同一個格式:想知道什麼 → 怎麼做 → 結果 → 學到什麼。

實驗 ①:先量雜訊——同樣的設定,正確率會差多少?(第 5 題 (a),In [34])

想知道什麼同樣的設定再跑一次,結果會不會一樣?差多少?
怎麼做5% 維基、參數全部一樣,只換亂數種子(42、1、2、3),訓練 4 次。第 9 節有一步一步的手算。
種子 42種子 1種子 2種子 3雜訊(最高−最低)
整體46.1246.0547.1046.341.05
語意類55.3554.1855.9854.721.80
語法類38.4539.3039.7239.371.26
各小類(見 In [34])1.50~4.74(家人/性別、比較級、-ing 最大,約 4.7)

學到什麼:整體的雜訊約 1 個百分點,小類的雜訊最大到 4.74 個百分點。所以後面每個比較,筆記本都自動印一欄「beyond noise?」,差距沒超過雜訊的,不下結論。這是讓報告可信的關鍵。

下圖把後面實驗 ②③ 的整體正確率放到這把尺上看:粉紅帶子是「基準 46.12 ± 雜訊 1.05」,落在帶子裡的分不出來,落在帶子外的才算真的有差。

⟦IMG:noise_band⟧

實驗 ②:移除停用詞到底會怎樣?(第 5 題 (b),In [35])

想知道什麼老師建議可以試「移除停用詞」,我沒做。真的做了會怎樣?
怎麼做先數考卷有幾題含停用詞(NLTK 的英文停用詞表),再拿同一份 5% 維基,一份保留、一份刪掉停用詞,一樣的參數各訓練一次。

考卷裡有 206 題含停用詞:家人/性別 86 題(he、she、his、her)、形容詞→副詞 62 題、貨幣 58 題(Korea won 的 won——NLTK 把它當成 won't 的一部分)。

保留刪掉差超過雜訊?
整體46.1245.25−0.87否
語意類55.3555.41+0.06否
語法類38.4536.81−1.65是
家人/性別68.7753.95−14.82是
動詞第三人稱37.8226.55−11.26是
比較級44.1437.01−7.13是
名詞複數38.5941.89+3.30是
國名→國籍78.4280.61+2.19是
過去式44.2941.09−3.21是
查不到字的題目107284多 177 題

表裡列了 In [35] 所有「超過雜訊」的小類,加上整體、語意類;其他沒超過雜訊的小類見 In [35]。查不到字只多 177 題、不是 206 題:206 題裡有些在保留版本就已經查不到了(推論,筆記本沒有印重疊題數)。

學到什麼 整體的變化沒超過雜訊,底下卻有明顯的此消彼長。只看整體會以為「刪不刪都沒差」。
  • 家人/性別大跌:he、she、his、her 被刪了,這些題目連字都查不到。
  • 國名→國籍、名詞複數刪了反而變好(超過雜訊),所以不是每一類都受害——但受害的類(家人/性別 −14.82)比受益的類大得多。
  • 語法類下跌(推論):停用詞(is、has、more、than)是判斷字形的線索。
  • 整體差異小的另一個可能(推論):參數 sample=1e-3 本來就會隨機跳過 the、of 這類高頻字,效果有點像「部分刪掉停用詞」。
結論:支持不刪停用詞。也呼應老師說停用詞「現在一點都不重要也不會去做」(老師是在講搜尋引擎建索引時說的;本作業的停用詞實驗也支持同樣的結論),投影片也說「Avoid to broke the semantics」。

實驗 ③:調參數——一次只改一個設定(第 5 題 (c),In [36])

想知道什麼Skip-gram 換 CBOW、視窗變大、向量變長,各會怎樣?
怎麼做都用 5% 維基,以「Skip-gram、window 5、100 維」為基準,每次只改一個(控制變因)。
設定訓練時間整體語意類語法類整體差
基準9.1 分46.1255.3538.45—
CBOW9.3 分52.5858.6047.58+6.46
window=1015.2 分41.7551.2233.87−4.37
vector_size=30017.9 分57.4468.5448.22+11.32

三個整體差距(4.37~11.32 個百分點)都遠大於雜訊 1.05。

學到什麼
  • 300 維最驚人:只讀 5% 教材(57.44%)就贏過 Wiki 20% 字典(48.39%)。在這個設定下,維度的影響比教材字數大(教材 5%→20% 只多 2.27 個百分點)。但只做了一次,老師也說維度不是越大越好(「設一萬……效果不會比較好」),所以不推到其他設定。
  • CBOW 在語法類大勝:比較級 +25.00、最高級 +20.59。老師上課以 Skip-gram 為主,原論文也是 Skip-gram 語意類較好(外部知識);這裡 CBOW 在整體、語意類、語法類都較好,但 14 個小類裡有 3 類較差(國名→國籍 −1.81,超過雜訊)——這是「這份教材、這組參數」的結果(單次實驗)。
  • 視窗變大反而變差:家人/性別 −18.18、常見國家首都 −9.29。(推論)一般說法是大視窗偏向「主題相關」而非「用法相似」;但語意類整體也下降,跟這個說法不完全吻合,只能當可能的解釋。
如果你想讓 Wiki 20% 字典正確率更高
改成 300 維或 CBOW 都會大幅提高正確率。但作業評分看的是分析,不是正確率;而且改了 Wiki 20% 字典,報告其他題的數字都要重跑重寫。我維持 100 維 Skip-gram(跟 GloVe-100 同維度、是老師教的重點),把這個發現放在加分題。

實驗 ④:前 k 名正確率(第 5 題 (d),In [37])

定義(照做):電腦列出相似度最高的 k 個字,正確答案只要在這 k 個裡面,這題就算對。k=1 就是原本的正確率。

用第 7 節那一題走一次:boy girl father mother,電腦第 1 名 stepmother(錯)、第 2 名 mother(對)。

規則這一題算
只看第 1 名(k=1)錯
前 3 名(k=3)對

19,544 題都這樣算,就得到下表:

第 1 名前 3 名前 5 名前 10 名
GloVe 字典63.1173.6877.7382.01
Wiki 20% 字典48.3961.5366.3271.74

學到什麼:Wiki 20% 字典從第 1 名到前 3 名,正確率多了 13.14 個百分點(GloVe 多 10.57)。很多題不是「完全不懂」,而是「差一點」——呼應老師說 queen「可能在前三名」(W3 00:31:24)。

實驗 ⑤:錯題分析——電腦答錯時猜了什麼?(第 5 題 (e),In [38])

Wiki 20% 字典答錯 10,087 題。其中 0 題是因為查不到字,4,563 題(45%)正確答案在第 2~10 名。錯法很有規律:

錯法例子(題目第三個字 → 電腦答 / 考卷答案)說明
拼法不同Argentina → argentinian / argentinean
Belarus → belarusian / belorussian
Slovakia → slovak / slovakian
電腦其實答對了,是考卷用另一種拼法。考卷本身也有限制。
方向相反large → smaller / larger
long → shorter / longer
反義詞的詞向量太近,加減時走到對面(推論)。
同類、選錯一個Baghdad → syria / iraq
Armenia → hryvnia(烏克蘭的錢)/ dram
Cambodia → kyat(緬甸的錢)/ riel
知道答案是「一個國家」「一種貨幣」,但對不到正確那個。
近親字father → stepmother / mother
groom → bridesmaid / bride
用法太像(推論)。
被別的意思帶走great → britain / greater
child → childbearing / children
(推論)great 常出現在 Great Britain 這類專有名詞裡,詞向量被這個用法拉走;沒有回教材驗證。

學到什麼:錯題分析把「分數低」拆成好幾種原因:有的是詞向量的缺點(反義詞),有的是教材的偏差,有的根本是考卷的問題(拼法)。這種拆解,就是老師說考試要看的「做作業的過程跟 insight」(W3 02:48:55)。

實驗 ⑥:換一種算答案的公式(3CosMul)(第 5 題 (f),In [39])

想知道什麼b − a + c(3CosAdd)之外,學術界還提過 3CosMul(用乘除,Levy & Goldberg 2014)。會更好嗎?
結果同一份 Wiki 20% 字典:48.39 → 44.66,14 個小類全部下降。
學到什麼論文說常常比較好的方法(外部知識:Levy & Goldberg 2014),換到你的教材不一定成立。原因沒驗證(推論:可能跟字典裡很多冷門字有關)。
進階:3CosMul 的公式(外部知識)

3CosAdd 是「算出 ★ = b − a + c,找最靠近 ★ 的字」。

3CosMul 是對每個候選字 d 算:相似度(d, b) × 相似度(d, c) ÷(相似度(d, a) + 一個很小的數),挑最大的。gensim 會先把相似度換到 0~1。

白話:要「像 b、也像 c,但不像 a」,用乘除而不是加減。

實驗 ⑦:同一批字,PCA 和 t-SNE 畫出來一樣嗎?(第 5 題 (g),In [40])

⟦IMG:pca_tsne⟧

PCA(左)t-SNE(右)
它在做什麼找「點分布最長的方向」,用前兩個方向當畫圖的座標(線性)盡量讓「原本是鄰居的點」畫出來還是鄰居(非線性)
圖上看到什麼上下方向只有微弱的男女傾向:he、his、king 在最上;mom、grandma、aunt 在下。但分不乾淨(she、her、queen 在上半;dad、grandpa、husband 在下半)沒有男女軸,但每一對都貼得很緊(boy/girl、groom/bride、dad/mom、king/queen),分群清楚
適合看什麼有沒有一條「關係方向」誰跟誰是一群
進階:PCA 怎麼找方向(三步)
  1. 把所有點畫出來,找出點分布最長的方向,那條線就是第 1 主成分。
  2. 跟它垂直的方向就是第 2 主成分。
  3. 把每個點投影到這兩條線上,得到的兩個數字就是 PCA 圖上的位置。

因為只是「換個角度看」(線性),原本平行的線投影後還是平行;t-SNE 會把空間扭曲,所以不保證。

實驗 ⑧:覆蓋率(第 5 題 (h),In [41])

每個小類有多少題「四個字都在字典裡」。GloVe 字典和 Wiki 20% 字典的貨幣都是 100%,所以它們答錯貨幣題不是因為查不到字。這個量法在第 10 節比論壇時最有用(論壇字典的貨幣只有 39.0%)。

考試可能問
「雜訊怎麼量?為什麼要量?」→ 同設定換種子跑 4 次,最高減最低;差距要比它大才算數(第 9 節手算)。
「前 k 名正確率是什麼?為什麼前 3 名比第 1 名高很多?」→ 正確答案在前 k 個就算對;很多題正確答案排第 2、3 名,例如 boy girl father mother 的 mother 排第 2。
所以對你的影響是:加分題最值錢的是兩個發現——「先量雜訊」,和「整體沒變但小類有變」(停用詞實驗)。報告和考試都先講這兩個。