官方 ZIP 內 handout 完整題名是 Homework 4: Logistic Regression,屬於 written+programming。Written 題組包含 linear regression、logistic-regression warm-up/analysis/adversarial attack、vectorization and pseudocode、word embeddings and gender biases,以及 empirical questions。程式要先以 feature.py 將 Yelp sentiment text 轉成 GloVe 平均向量,再以 lr.py 訓練 logistic regression。ZIP 提供兩份 starter 與 glove_embeddings.txt;資料與部分 reference output 由課程作業環境配發,這個公開 ZIP 並未包含它們。
能力交付點
先手算單筆樣本的 logit、機率、loss 與梯度,再讓程式逐項重現。若只看最終 accuracy,sign 錯誤、平均方式或 bias 處理都可能被資料偶然掩蓋。訓練迴圈至少要能輸出每 epoch loss,並固定資料順序與初始化。
第一個可執行動作與完成判準
先解開 bundle,執行 python feature.py --help 與 python lr.py --help,確認 starter 的參數介面;公開 ZIP 缺 Yelp train/validation/test,因此不能誠實給出一條可完成官方資料流程的命令。取得合法資料後,再做 finite-difference gradient check。完成判準是 feature 檔格式可重現、單筆 gradient 通過數值檢查、train/validation/test 輸出齊全;沒有官方資料與 hidden tests 時只能算部分完成。
追蹤單筆 logistic 更新
以下是本文自編的教學例子,不是官方作業答案。
自編單筆 x=2、y=1,模型 z=wx+b,從 w=b=0 開始。sigmoid(0)=0.5,cross-entropy loss=-ln0.5≈0.693。單筆梯度為 (p-y)x=-1,bias 梯度 p-y=-0.5。若 learning rate=0.1,一步 gradient descent 得 w=0.1、b=0.05。
檢查與答案: 新 logit 是多少?答案 0.1×2+0.05=0.25,比原本零大;正標籤的機率因此上升。這不是官方 Yelp 資料結果。
更新紀錄
- 2026-10-11:補上自編例子、完整計算或推理,以及理解檢查答案。
參考資料
Loading...