8 報告怎麼寫:總原則+第 1 題(5%)

結論:報告每一題都照「數字 → 觀察 → 原因」三步寫。第 1 題要交代三件事:用了哪個模型、做了哪些前處理(和刻意沒做的)、參數怎麼設。

總原則:每一題都這樣寫

步驟寫什麼例子
1. 數字貼表格或寫出成績「論壇的語意類 12.84%,維基對照組 45.77%」
2. 觀察用一句話說你看到什麼「論壇在語意類大輸,但比較級反而贏」
3. 原因解釋為什麼,最好有證據「better 在論壇出現的次數是維基的 8.5 倍」

只有數字沒有解釋,拿不到分;只有解釋沒有數字,老師會懷疑你沒跑(老師說過這件事)。

這幾節怎麼讀
繳交版筆記本的報告已經寫好。第 8~12 節是在解釋「每一題為什麼這樣寫、數字從哪裡來、原因是什麼」,讓你看得懂、考試答得出來。

第 1 題:要點

要交代的我的示範
Part II 用的模型glove-wiki-gigaword-100:史丹佛 GloVe,用維基百科+Gigaword 新聞約 60 億字訓練,40 萬字、每字 100 維、全部小寫。
Part III 用的模型Gensim Word2Vec,Skip-gram。
做了的前處理只留 a~z 組成的字(資料已經是小寫、去標點);字典只留最常見的 30 萬字。
刻意沒做的前處理(加分重點)沒移除停用詞:考卷有 he/she/his/her、won(韓圜)等答案;沒做詞形還原:語法類就是考字形變化。第 12 節有實驗數據證明。
超參數vector_size=100(跟 GloVe 一樣,公平比較)、window=5、sg=1、negative=5、sample=1e-3、min_count=5、max_final_vocab=300,000、epochs=5、seed=42。每一個都寫一句「為什麼」(見第 6 節的表)。
抽樣方式以文章為單位、random.seed(42)、5%⊂10%⊂20%(同一個亂數)。
答題方式3CosAdd(b − a + c,Gensim most_similar),題目先轉小寫,查不到的字算答錯。

14 考試可能怎麼問(從作業出題)

結論:老師說考試「不考公式,考做作業時的 insight」。下面是從這份作業整理出來的題目,每一題都附「答案要點」。先自己想答案,再打開看。

這些是我根據老師上課說的方向和作業內容推測的,不是考古題。

觀念題

Q1. 什麼是 word analogy?怎麼用詞向量做?

「A 之於 B,等於 C 之於 D」的題目。用 B − A + C 算出一個向量,在字典裡找最近的字(排除 A、B、C)當答案。例:queen − king + man ≈ woman。

Q2. 為什麼詞向量可以做加減?

訓練目標是「用一個字預測它的前後文」。king 和 queen 前後文的差別(例如 he/his 換成 she/her),跟 man 和 woman 前後文的差別很像,所以兩組「差向量」的方向接近。這只是近似:老師說「不是這麼 exactly 一樣,但趨勢很接近」,所以答題要排除 a、b、c,正確答案也常排第 2~3 名。

Q3. Skip-gram 和 CBOW 差在哪?你的實驗哪個比較好?

Skip-gram:用中間字猜旁邊的字;CBOW:用旁邊的字猜中間的字(像克漏字)。老師上課說 CBOW 訓練比較不直覺,「我們會做 Skip-gram」(W3 01:12:12)。我的實驗(5% 維基、單次):⟦R:exam_cbow⟧ 這是「本設定」的結果,換資料或題型可能不同。

Q4. 詞向量最大的限制是什麼?舉作業裡的例子。

①一個字只有一組座標,bank(銀行/河岸)分不開;作業裡 apple 的鄰居全是科技字、bank 前 5 名全是金融義 → 這是上下文詞向量(BERT、GPT)要解決的。②學的是「前後文相似」不是「意思」:反義詞(good/bad)會很近;論壇的錯字(slary)會變成 salary 最像的字。③沒看過的字(OOV)、字首字尾、錯字 → FastText 用字元片段拼出向量(老師說「這也會在 Assignment 1 討論」)。

Q5. GloVe 和 Word2Vec 差在哪?

Word2Vec 一次看一小段文字(視窗)來學;GloVe 先統計整份資料「哪兩個字一起出現幾次」,再用這張統計表來學。名稱裡的 Global 就是對比 word2vec 的 Local(W3 01:28:57);老師說「一般來講我們會覺得 GloVe 比 word2vec 好」(W3 01:32:25),細節請看論文(W3 01:29:33)。

Q5b. 給「the cat licked its fur」、window=1,Skip-gram 的訓練資料是什麼?

(the, cat)、(cat, the)、(cat, licked)、(licked, cat)、(licked, its)、(its, licked)、(its, fur)、(fur, its)。每個字當中心字,跟前後 1 個字配對。這樣不用人工標註就能做出「給輸入、猜輸出」的訓練資料(W1 p82、W3 01:13:00)。

Q5c. Word2Vec 訓練完,我們拿來用的詞向量是哪個部分?

第一層的權重矩陣 V(輸入 one-hot 乘上 V 就是查表取出一列)。網路只有一層隱藏層,大小就是向量維度(W1 p83–90)。

Q5d. Negative sampling 在做什麼?為什麼比較快?

原本每次要對整本字典(例如 30 萬字)算 softmax 機率。改成:真的(中心字, 鄰居)當正例,照字頻隨機抽幾個字當負例,訓練「是不是真鄰居」的二元分類(logistic regression),每次只更新少數幾個字(W2 p33、p38)。

作業過程題

Q6. 為什麼答題前要先轉小寫?

GloVe 和助教清好的維基資料都是小寫。考卷有大寫字(Athens),不轉會查不到(OOV)。

Q7. 抽樣時怎麼避免記憶體不夠?

一行一行讀(串流),每讀一篇就擲亂數決定留不留,留的直接寫到檔案。不要整份讀進來再挑。

Q8. 你有移除停用詞嗎?為什麼?

沒有。①考卷有 ⟦R:n_stop_q⟧ 題含停用詞(he、she、his、her、won…),移除後這些題目必錯;②老師上課說停用詞「以前很重要,但是現在一點都不重要也不會去做」(老師是在講搜尋引擎建索引時說的;本作業的停用詞實驗也支持同樣的結論),以前是為了省索引空間,而且可能刪掉重要的東西(W2 01:39:50);③投影片 W1 p47:「Avoid to broke the semantics」。我實際試過:⟦R:exam_stop⟧

Q9. 資料量從 5% 增加到 20%,結果怎麼變?

⟦R:exam_q2⟧

Q10. 用論壇資料訓練,結果跟維基差在哪?為什麼?

一樣大小下,論壇語意類大輸(capital 只有維基的 0.27 倍、illinois 0.01 倍);國籍類也大輸(但 brazilian 有 0.79 倍,不只是頻率問題);語法類加總略低 1.34,只比雜訊大一點,其中比較級、最高級、-ing 還贏(網友常說 better、cheapest、looking)。教材的主題和文體決定字典學到什麼。

Q11. 為什麼要做「一樣大小的對照組」?

為了控制變因:讓兩份教材只差在種類、不差在數量,才能說差異是「種類」造成的。

Q12. 為什麼有些類別特別差(例如貨幣)?

①字很少見(kwanza、dram),座標學不準;②有些字平常有別的意思(won、real);③(只在小語料時)字根本不在字典裡,例如論壇的貨幣覆蓋率只有 39%。GloVe 和 Wiki 20% 的貨幣覆蓋率都是 100%,所以它們錯在 ① ②。

Q13. 只算「第一名猜對」公平嗎?

很嚴格。我算過:答案在前 10 名的比例 ⟦R:exam_topk⟧。很多時候正確答案只差一點點,排第二、第三。

Q14. t-SNE 圖可以怎麼看?有什麼要注意?

看「誰跟誰是一群」:男女配對黏在一起、按角色分群。注意:群與群之間的距離沒有意義,每次跑圖形可能不同;PCA 是線性投影,保留整體方向(原本平行的差向量,例如 man→woman、king→queen,投影後仍然平行),但比較擠;t-SNE 是非線性的,保留局部鄰居。

Q15. 訓練參數裡,window 和 vector_size 代表什麼?調大會怎樣?

window:看前後幾個字當鄰居;vector_size:每個字用幾個數字表示。我的實驗:⟦R:exam_hparams⟧