# 05b 內容正確性審查:示範報告(ipynb 第 29 格)+一條龍說明(HTML)
- 審查日期:2026-10-04
- 審查標準:W1 投影片 pp.81–95、W2 投影片 pp.20–41(用 pymupdf 抽文字,這台電腦沒有 pdftoppm 可以轉圖)、W2/W3 逐字稿、作業規格 PDF(37 頁)
- 另外做的查證:載入 `w2v_wiki20.model` 查字典門檻、鄰居字的出現次數、apple 的前 15 名鄰居;讀 cell 25/31/44/45/46 的程式和輸出
- 「課程依據」欄標「一般知識」的,是課程沒有講、從文獻或 gensim 文件來的
## 結論先講
兩份文件的數字都對得上筆記本的輸出,對課程的引用(Skip-gram 是重點、貓的鄰居不一定是貓、queen 可能排第 2~3 名、不要把整份維基讀進記憶體、考 insight 不考公式)也大多正確。
問題集中在兩類:
1. **解釋講得太肯定。** 報告本身就量到「同設定重跑,小類可以差 8.9 分」,但好幾個小類解釋用的差距,跟這個雜訊差不多大。
2. **有幾個解釋,實際查證後是錯的。**
- apple 的鄰居裡**沒有**水果義。
- 鄰居被少見字占滿,原因是「低頻字效應」,不是「語料偏差」。
- 不同模型的 cosine 分數不能直接比大小。
- min_count 實際上不是 5,是 30。
## 問題清單
| 編號 | 文件與位置 | 原文(短引) | 問題 | 課程依據 | 嚴重度 | 建議改法 |
|---|---|---|---|---|---|---|
| 1 | 報告第 4 題;說明第 11 節 | 「apple 同時靠近手機(blackberry、iphone)與水果(raspberry)」 | **實際查證是錯的。** Wiki 20% 的 apple 前 15 名全是科技字:blackberry、iphone、tvos、raspberry、xelibri、iigs、roxio、covox、ipad、oreo(Android 版本名)、adafruit、webos……。raspberry 在這裡幾乎一定是 Raspberry Pi。說明第 11 節自己也寫了「Raspberry Pi 巧合」,卻還是寫「一半是水果」。apple–banana 只有 0.43,apple–fruit 只有 0.39。 | 實測(本次載入模型);一詞多義的概念見 W2 02:48:17、W2 p40 | 高 | 改成「apple 在 Wiki 20% 幾乎只剩公司義,連 raspberry 都是 Raspberry Pi;水果義被常見用法蓋掉」。這正好呼應 bank 的觀察。 |
| 2 | 報告第 4 題(king 那行);說明第 11 節 | 「king 的第一名是泰國國王 nangklao……語料偏差」「我們只讀了 20%,碰巧抽到的文章」 | **解釋錯了,漏掉真正原因。** 實測鄰居字的出現次數:nangklao 34、xelibri 36、dfcu 30、suriyothai 53、sourpuss 64、tvos 102。全部卡在字典門檻 30 附近。這是 Skip-gram 已知的「低頻字效應」:一個字只出現幾十次,而且幾乎都跟目標字一起出現,它的向量就會被拉到目標字旁邊。這跟「碰巧抽到」無關,換成 100% 維基也會發生。 | 實測;一般知識(SGNS 的低頻字近鄰問題) | 高 | 改成「鄰居常被出現不到 100 次的冷門字占據(附次數),因為冷門字的向量只由少數幾個上下文決定」。可以加做一個實驗:`most_similar(..., restrict_vocab=50000)`,只看常見字的鄰居。 |
| 3 | 報告第 4 題最後一點;說明第 11 節最後一列 | 「GloVe 的相似度普遍較高(0.8~0.9 vs 0.7~0.8)……反映其訓練資料量大約 9 倍」「常見字的座標更集中、更穩」 | **概念錯誤。** 不同演算法訓練出的空間,cosine 分數的範圍本來就不一樣(向量分布的形狀、維度、目標函數都會影響)。所以不能拿兩個模型的分數絕對值比較,更不能推論成資料量的影響。能比的只有「同一個模型內的排序」。 | 一般知識 | 高 | 刪掉這一點;或改成「兩個模型的分數尺度不同,只比排名,不比分數」。 |
| 4 | 報告第 2 題、第 5 題 (b);說明第 9、12 節 | 「1~2 點的差距不應過度解讀」「這些差距(7~12 點)遠大於隨機波動(整體約 0.1 點),結論可信」 | **自相矛盾。** 報告自己量到:同設定重跑,comparative 差 8.93 分,常見國家首都差 3.75 分。所以小類的雜訊是好幾分,不是 1~2 分。但以下小類解釋用的差距,都落在這個範圍內:最高級 +8.6(第 2 題)、window=10 時 family −12.5、停用詞實驗中 comparative −5.6、過去式 −4.2、地理 +2.6~5.1。另外「7~12 點」對 window 不成立(整體只差 −3.36)。「整體約 0.1 點」只有 2 次重跑,而且量的是 20% 模型,不是 5%。 | 報告自己的實驗 (g);說明第 12 節實驗 ⑦ | 高 | ①門檻改成「整體差距 > 1 分才算數;小類要 > 10 分,或重跑 3 次以上看範圍」。②改正「7~12 點」為「3~12 點」。③「結論可信」只用在整體分數;小類解釋一律加「可能」,或補做重跑。 |
| 5 | 說明第 7 節「語法類為什麼掉比較多」 | 「GloVe 讀了大量新聞,我們沒有。第 10 節的論壇實驗會證明這件事。」 | **過度宣稱。** 論壇是口語網友留言,不是新聞,所以證明不了「新聞」的效果。而且 GloVe 跟自己訓練的模型之間,同時差了演算法、資料量(9 倍)、訓練方式、字典,四件事混在一起。 | 一般知識(控制變因,說明第 10 節自己就在講這件事) | 高 | 改成「推論:新聞文體可能有比較多比較級;論壇實驗顯示『文體會影響語法類』,但沒有直接驗證新聞」。 |
| 6 | 報告第 1 題超參數、第 2 題 OOV;說明第 6 節 min_count 列、第 9 節 | 「min_count=5:出現少於 5 次的字不收進字典」「5% 有 107 題 OOV:部分字出現不到 min_count=5 次」 | **跟實際不符。** 因為 `max_final_vocab=300000` 卡住了,gensim 自動把門檻往上調。實測 20% 模型 `effective_min_count = 30`,字典最低頻的字出現 30 次。5% 模型沒有存檔,所以實際門檻不確定,但應該也高於 5。 | 實測 `m.effective_min_count`;gensim 文件(一般知識) | 中 | 第 1 題寫「min_count=5,但因為 max_final_vocab 的限制,實際門檻是 30(20% 模型)」。OOV 的原因改成「出現次數低於實際門檻」。這本身就是一個好 insight。 |
| 7 | 說明第 1 節「這個觀念也解釋了詞向量的缺點」框、第 11 節結論與 taiwan 列、第 14 節 Q4 | 「電腦學的是『誰跟誰一起出現』,不是『意思』」「常一起出現」「只代表它們常一起被提到」 | **把兩件事混在一起了。** 「兩個字直接一起出現」(一階共現)跟「兩個字出現在相似的前後文」(分布相似)不一樣。詞向量近,靠的是後者:同義詞很少同句出現,向量卻很近。第 1 節觀念 4 寫對了,但同一節的缺點框和 Q4 又寫回「一起出現」。閉書考試很可能被抓這一點。 | W2 p24 Distributional Hypothesis:「Words that occur in **similar contexts** tend to have similar meanings」;W3 00:37:29 | 中 | 一律改成「前後文相似」「出現在類似的位置」。taiwan 那句改成「常出現在相似的上下文(地理、歷史)」。 |
| 8 | 報告第 5 題 (b);說明第 12 節實驗 ④、第 14 節 Q15、第 0 節總表 | 「語意類甚至超過 GloVe-100」「向量容量比資料量更關鍵」 | **比較不公平,又過度概括。** ①拿 300 維去比 GloVe-100 不公平。公平的對手是 `glove-wiki-gigaword-300`;GloVe 論文的 6B/300d 語意類約 77%,遠高於 68%。②只做一次 5%+300 維,就推論出「容量比資料量重要」太快。Mikolov 2013 的結論是維度和資料量要一起加大。老師也說維度不是越大越好。 | W3 01:04:18~01:05:13(「了不起到 1K」「通常幾百維」)、W3 01:22:16(「設一萬……效果不會比較好」)、W2 02:40:12(維度是預算概念);一般知識(GloVe 論文 Table 2) | 中 | 改成「在本設定下,300 維用 5% 資料就超過 100 維用 20%」。刪掉「贏過 GloVe」,或加做 GloVe-300 對照。結論加上老師「維度要看預算,太大不一定更好」。 |
| 9 | 報告第 5 題 (b) CBOW 那點;說明第 14 節 Q3 | 「CBOW 以上下文預測中間字,對『此位置該放哪種字形』特別敏感」「跟一般說法『Skip-gram 對少見字比較好』不一定一致」 | ①報告把這句當成事實寫(說明第 12 節有標「推論」,報告沒有)。②Q3 的推理不成立:實驗沒有分開測少見字,所以 CBOW 整體分數比較高,跟「Skip-gram 對少見字好」並不衝突。③漏了老師的說法和原論文的結果。原論文是 Skip-gram 語意類明顯較好、CBOW 語法類略好且訓練快;本實驗 CBOW 連語意類都贏,值得說明是「本設定的結果」。 | W3 01:12:12~01:12:22(「CBOW 訓練比較不直覺……一般我們會做 Skip-gram」);W1 p81;一般知識(Mikolov 2013 Table 3) | 中 | 報告加「(推論)」。Q3 改成「本次 5% 單次實驗 CBOW 較好(語法類差最多);原論文是 Skip-gram 語意類較好;老師上課以 Skip-gram 為主。結果會因資料和題型而不同」。 |
| 10 | 報告第 5 題 (b) window 那點;說明第 6 節考題、第 12 節 | 「視窗越大越偏向主題相關(king–kingdom),而非功能相似(king–queen)」 | ①報告寫成事實,king–kingdom 並沒有在模型裡驗證。②這個解釋跟數據有一部分對不上:「大視窗偏主題」照理應該讓首都、國籍這類主題關係變好,但實際上語意類整體下降(53.93→50.70),只有 nationality 上升。③gensim 的 window 是「最大值」,實際每次會在 1~window 之間隨機取。 | 一般知識(Levy & Goldberg 2014 依存句法詞向量;gensim 文件) | 中 | 標「推論」;寫明「與語意類整體下降不完全吻合」;可以用 `most_similar('king')` 比較兩個模型來佐證。 |
| 11 | 報告第 5 題 (a);說明第 12 節實驗 ①、第 14 節 Q8 | 「移除後首都與國家在視窗中更靠近,地理關係反而好學」 | ①報告寫成事實,說明有標推論,報告沒有。②漏掉一個重要的交互作用:`sample=1e-3` 本來就會隨機跳過 the、of 這類高頻字,效果跟部分移除停用詞類似。這很可能是整體分數幾乎不變的原因之一。③plural-verbs 沒有任何一題含停用詞,卻掉了 11 分;plural 反而升 5 分。這類變化跟雜訊(見第 4 點)分不開。④漏了老師的直接支持:停用詞是以前為了省索引空間才做,現在不做。 | W2 01:39:50~01:40:47(「以前很重要,但現在一點都不重要也不會去做」「省 20~30% 索引空間」「搞不好重要的被拿掉」);一般知識(Mikolov 2013b subsampling) | 中 | 報告加「(推論)」,並補一句 `sample` 的交互作用。Q8 答案補上老師這段話,作為課程依據。 |
| 12 | 說明第 6 節 negative 列 | 「額外抽 5 個『不是鄰居』的字來對照……讓訓練變快」 | **不完整,而且有一處不精確。** 負樣本是照詞頻(0.75 次方)隨機抽的,不保證「不是鄰居」。課程講的核心是:把「對整本字典算 softmax」換成「分辨真鄰居和隨機字的二元分類(logistic regression)」,所以才變快。 | W2 p33(positive/negative examples+logistic regression);W1 p85、p88(softmax over vocabulary) | 中 | 改成「每組真的(中心字, 鄰居字)配 5 個隨機抽的字,訓練一個『是不是真鄰居』的二元分類器,取代對 30 萬字做 softmax,所以快很多」。 |
| 13 | 說明第 14 節 Q4 | 「③沒看過的字(OOV)完全沒有座標。這些是後面 BERT 要解決的。」 | **對應錯了。** 一詞多義靠 contextual embedding(BERT)解決;OOV、字形變化、錯字,課程明講是 FastText(字元/子詞)的強項,而且老師說「這也會在 Assignment 1 討論」。 | W1 p92;W3 01:29:49~01:32:55;W1 p94(Vector search is not robust to typos) | 中 | 改成「①一詞多義 → BERT 等上下文模型;③OOV、錯字、字首字尾 → FastText 用字元 n-gram 拼出向量」。 |
| 14 | 說明第 14 節 Q2 | 「因為用法相似的字座標會靠近,而且同一種關係在空間裡會形成大致相同的方向」 | 答案是**循環論證**:用現象解釋現象。 | W3 00:27:56~00:29:54(看的是「相對關係」,無監督學出來)、W3 00:32:01(「不是這麼 exactly 一樣,但趨勢很接近」);W2 p24 | 中 | 改成「訓練目標是預測前後文;king/queen 前後文的差別,跟 man/woman 前後文的差別很像(例如 he/his 和 she/her),所以兩組差向量方向接近。這只是近似,所以答題時要排除 a、b、c,queen 也常排第 2~3 名」。 |
| 15 | 報告第 3.3 題;說明第 10 節 3.3 | 「比較級、最高級、-ing、第三人稱動詞反而贏:……字形出現越多,座標越準」 | 只提一個原因,**漏了兩個替代解釋**:①論壇字典只有 100,310 字,對照組有 224,050 字,候選字少了一半,第 1 名比較容易猜中;②最高級在對照組的覆蓋率是 94.1%,論壇是 100%,有一小部分差距來自 OOV。頻率證據很好,但頻率是相關,不是因果。 | 報告第 3.2 題自己的字典大小與覆蓋率表;一般知識 | 中 | 補一句「另一個可能:論壇字典小一半,干擾字少」。可以加做「只算四個字都在字典裡的題目」的正確率。 |
| 16 | 說明第 4 節 t-SNE 解讀 | 「意思是:在這張地圖上,『性別』只是同一群裡的一小步。所以『king − man + woman』走一小步就到 queen。」「t-SNE 只保證……」 | ①從 t-SNE 圖推論 100 維空間的向量運算,是越界推論(同一節後面自己也說距離不可靠)。②t-SNE 是「盡量保留」局部鄰居,不是「保證」。 | W3 01:54:22(「降維本身就會有點誤差」);一般知識 | 低 | 刪掉「所以……就到 queen」;「保證」改成「盡量保留」。 |
| 17 | 說明第 6 節 seed 列;報告第 1 題 | 「seed 42:讓結果可以重現」 | 跟實驗 ⑦ 矛盾。gensim 文件說,要完全重現必須 `workers=1`,而且要固定 `PYTHONHASHSEED`。抽樣用的 `random.seed` 確實能重現,訓練用的 seed 在多執行緒下不行。 | 一般知識(gensim Word2Vec 文件) | 低 | 改成「固定抽樣與初始值;但 workers=15 時訓練結果仍會小幅不同(見實驗 ⑦)」。 |
| 18 | 說明第 6 節 sample 列 | 「學了也沒什麼資訊,跳過可以加速」 | 少講一半。原論文指出 subsampling 除了加速,也會**提升少見字向量的品質**,而且等於把有效視窗拉大。這也跟第 11 點的停用詞實驗有關。 | 一般知識(Mikolov et al. 2013b) | 低 | 補「也讓少見字學得更好」。 |
| 19 | 說明第 7 節考題 | 「你自己訓練的詞向量為什麼比 GloVe 差?→ ……訓練輪數少」 | GloVe 是在共現矩陣上迭代(6B/100 維約 50 次),跟 word2vec 讀語料的 epochs 不是同一種東西,不能直接比「讀幾遍」。 | 一般知識(GloVe 論文);W3 01:29:00(GloVe 用全域統計) | 低 | 改成「方法不同(全域共現統計 vs 局部視窗)」,拿掉輪數比較。可以補老師說的「一般會覺得 GloVe 比 word2vec 好」(W3 01:32:25)。 |
| 20 | 報告第 3.3 題;說明第 10 節 | 「錯字與正確字的前後文完全相同」 | 「完全相同」說太滿。 | W1 p94 | 低 | 改成「高度相似」,並引用投影片「Vector search is not robust to typos」。 |
| 21 | 報告第 5 題 (e);說明第 12 節實驗 ⑤ | 「3CosMul(Levy & Goldberg 2014)……整體 48.29 → 44.61」 | 出處正確(CoNLL 2014)。gensim `most_similar_cosmul` 的實作也對(cos 平移到 [0,1],乘除再加 ε)。但只測了一個模型,原論文在 SGNS 上 3CosMul 通常較好。14 小類全部下降有點反常,可能跟字典裡 30 萬個冷門字有關(見第 2 點)。 | 一般知識(課程未提 3CosMul) | 低 | 補「可能原因未驗證;可加 restrict_vocab 再比一次」。 |
| 22 | 說明第 1 節觀念 2 表格 | 「負的:方向相反」 | 讀者容易誤解成「意思相反」,但同一節也說反義詞的 cosine 其實很高。 | 一般知識 | 低 | 加一句「方向相反 ≠ 意思相反;反義詞反而常常很接近」。 |
| 23 | 說明第 1 節觀念 3 | 「方向和長度幾乎一樣」 | 老師的說法比較保守:「不是這麼 exactly 一樣,但趨勢非常 close」。 | W3 00:28:34~00:28:41、00:32:01 | 低 | 「幾乎一樣」改成「大致一樣」。 |
| 24 | 報告第 4 題(bank);說明第 11 節 | 「bank 只剩金融義,河岸義被較常見的用法蓋過」 | 只看了前 5 名,不能說「只剩」。 | 一般知識 | 低 | 改成「前 5 名都是金融義」;可以補查 bank–river 的相似度。 |
| 25 | 說明第 0 節觀念 3 公式 | 「queen − king + man ≈ woman」 | 公式正確。但作業規格 p2 寫成「King + Queen − Man ≈ Woman」(筆誤),考前看投影片的人會混淆。 | 作業規格 PDF p2 | 低 | 加一句註:「規格投影片 p2 的式子是筆誤,正確是 B − A + C」。 |
| 26 | 說明第 12 節實驗 ⑥ | 「PCA 保留全域方向,t-SNE 保留局部鄰居」 | 正確,但少了跟作業最相關的一點:PCA 是線性投影,平行的差向量投影後仍然平行,所以 PCA 才看得出平行四邊形;t-SNE 是非線性,看不出來。 | W3 01:54:11~01:54:27(可比較降維方法);一般知識 | 低 | 補這一句,Q14 的答案也一起補。 |
## 課程強調但文件沒提到的
以下是老師上課或投影片明確講過、閉書考試很可能考,但兩份文件都沒有寫(或只帶過一句)的內容。**依重要性排序。**
1. **Skip-gram 的訓練資料怎麼產生。** 給一句話和 window size,列出 (center, context) 配對。例:「The cat licked its fur」、window=1 → (the,cat)、(cat,the)、(cat,licked)…;window 變大,配對變多。老師特別說這是「訓練上的巧思」:從沒有標註的語料自動做出監督式資料,後來 BERT 的克漏字(MLM)也是同一個想法。
- 依據:W1 p82;W3 01:13:00~01:16:05
2. **word2vec 的網路結構。** 只有一層 hidden layer:one-hot 輸入 → V 矩陣(其實就是查表,取出一列)→ 隱藏層(大小=向量維度,例如 300)→ U 矩陣(output embeddings)→ 對整本字典做 softmax → cross-entropy loss。**最後拿來用的詞向量是 V(第一層權重)。** 說明第 1 節只寫了「一直微調座標」。
- 依據:W1 pp.83–90;W2 p37;W3 01:17:01~01:27:48
3. **FastText 和 OOV。** 用字元 n-gram 拼出沒看過的字的向量;也適合處理字首字尾(剛好對應作業裡最差的 un- 反義字首、-ly 副詞兩類),以及論壇錯字。老師明說「這也會在 Assignment 1 討論」。說明第 4 節講到「詞向量看不到字的拼法」,卻沒有接上 FastText。
- 依據:W1 p92;W3 01:29:49~01:32:55
4. **Negative sampling 是二元分類。** 把真的鄰居當正例、隨機抽的字當負例,用 logistic regression 分辨;另外,SGD 每次只更新視窗內的字(稀疏更新)。
- 依據:W2 p33、p38
5. **「相對關係」vs「絕對關係」。** 這是老師對這份作業最核心的提醒:類比題看的是相對關係(平行四邊形),這部分很神奇;但某個字附近的鄰居(絕對位置)常常跟它無關。說明第 11 節有引用「貓的鄰居不一定是貓」,但沒有把它整理成這組對比。
- 依據:W3 00:27:56~00:30:38、00:04:47~00:05:43、00:25:54
6. **為什麼不用 one-hot。** one-hot 下貓跟狗、貓跟卡車的相似度都是 0;dense 向量的數字是「學出來的」,不是「數出來的」;個別維度不需要、也很難解釋。說明第 1 節只寫了「字變數字」。
- 依據:W2 02:30:18~02:30:31、02:42:28~02:43:47;W3 00:03:20~00:04:16
7. **維度怎麼選。** 通常幾百維,最多到約 1K;不是越大越好;維度是預算問題。這可以拿來支持、也可以拿來節制第 5 題「300 維」的結論。
- 依據:W3 01:04:18~01:05:33、01:22:05~01:22:22;W2 02:40:12
8. **停用詞為什麼「現在不做」。** 以前是為了省 20~30% 索引空間,而且可能刪掉重要的東西。這是報告第 1 題「刻意不移除停用詞」最好的課程依據,但兩份文件都沒有引用。
- 依據:W2 01:39:50~01:40:54
9. **What vectors should I use? — It depends。** 有很多 OOV、或是特殊領域(例如文言文)時,才自己訓練;要在自己的任務上試不同的向量。可以直接用在第 3 題:例如查 iqama 在不在 GloVe 字典裡。
- 依據:W1 p93
10. **其他評估方式。** 類比只是內在評估(intrinsic evaluation,不接下游任務、直接測詞向量本身)的一種,還有 WordSim353(人工評分的字對相似度)、MTEB。考題可能問「還能怎麼評估詞向量」。
- 依據:W1 p93–94;W3 01:33:03~01:33:39
11. **Static vs contextual,以及「相似不等於相關」。** 說明有提 BERT,但沒有引用「Similar does not necessarily mean relevant」「Out-of-domain is not the same as out-of-vocabulary」這兩句。前者可以用來呼應 good–bad,後者可以用來呼應論壇實驗。
- 依據:W1 p94;W2 p39;W3 01:40:50~01:44:55
12. **詞義會隨時間改變。** 舊的預訓練向量不一定符合現在的用法(GloVe 是 2014 年的資料)。可以用來補充 apple、tvos 這類觀察。
- 依據:W2 p31;W2 02:53:57~02:54:52
13. **GloVe 和 word2vec 的課程說法。** 名稱裡的 Global 對比 word2vec 的 Local;老師說「一般會覺得 GloVe 比 word2vec 好」。說明 Q5 只寫了「不細講」。
- 依據:W1 p91;W3 01:28:55~01:29:44、01:32:25
---
本審查的每一項判斷,都來自實際查證(讀投影片與逐字稿原文、讀筆記本程式與輸出、載入 `w2v_wiki20.model` 實測)。標「一般知識」的項目來自文獻或 gensim 文件,不是課程內容。第 6 點「5% 模型的實際字典門檻」沒有實測(模型沒有存檔),所以寫「不確定」。