L07|中文 F3 學生的學習紀錄

角色設定:我是中三學生,只看得懂中文。Python 學過變數、for 迴圈和 list,數學讀到一元二次方程。我靠中文課程筆記、YouTube 自動翻譯字幕和查字典來學。Kaggle 筆記本的操作步驟,是依官方 notebook 流程寫下的練習紀錄。

我讀懂了什麼(用自己的話)

  • 推薦系統就是猜「你會不會喜歡這個」,YouTube 和 Netflix 都在用。
  • 不用先知道電影是動作片還是愛情片,模型會自己學出代表喜好的數字(潛在因子)。
  • 嵌入聽起來很難,其實就是用編號去一個大表格裡查一列數字。
  • softmax 把分數變成機率,加起來剛好 100%。
  • 權重衰減像是罰款:權重太大就扣分,逼模型不要太極端。

我卡住的地方,和我怎麼解決

卡住的地方我怎麼解決
e 的次方算不出來用 Python 的 math.exp 計算,再自己除以總和,答案和課堂試算表一樣。
負對數 −log 是什麼我只記住它的形狀:機率接近 1 時損失接近 0;機率越小,損失越大。
Python 的 class 和 init、forward 看不懂先複習 class 的基本用法:init 準備材料,forward 是每次預測時做的事。

練習作答

Q1. 模型對三個類別輸出 [2, 1, 0]。算出 softmax(取三位小數),並確認加總是否為 1。

e² ≈ 7.389,e¹ ≈ 2.718,e⁰ = 1,總和 ≈ 11.107。softmax ≈ [0.665, 0.245, 0.090],加起來 = 1.000。

Q2. 承上題,如果正確答案是第 1 類,交叉熵損失是多少?如果是第 3 類呢?哪個比較大?為什麼?

第 1 類:−ln(0.665) ≈ 0.408。第 3 類:−ln(0.090) ≈ 2.408。第 3 類的損失大很多,因為模型只給正確答案 9% 的機率,等於很有信心地答錯,所以罰得重。

Q3. 使用者因子 [0.9, 0.1, −0.5],電影因子 [0.8, −0.2, −0.6]。用內積算出預測分數。

0.9 × 0.8 + 0.1 × (−0.2) + (−0.5) × (−0.6) = 0.72 − 0.02 + 0.30 = 1.00。

Q4. 為什麼要加使用者偏差和電影偏差?加了之後模型反而變差,原因是什麼?怎麼修?

因為有些人什麼都給高分,有些電影人人都愛,這些整體傾向用偏差項表示比較準。加了之後參數變多,模型開始背訓練資料(過擬合),驗證損失上升。用權重衰減(例如 wd=0.1)把權重壓小,就改善了。

Q5. GPU 只放得下批次大小 32,但你想要批次 64 的效果。梯度累積怎麼做到?

每次只放 32 筆進 GPU,算出梯度但先不更新參數,累積兩次(共 64 筆)的梯度後才更新一次。這樣記憶體只需要 32 筆的量,效果接近批次 64。

我的卡片盒筆記

卡片|推薦系統不用知道你是誰,只要知道誰跟你很像

協同過濾最神奇的地方是,模型不需要知道電影的類型或使用者的年齡,只看「誰給了什麼評分」,就能學出代表喜好的數字。喜好相似的人,數字也相似,所以可以把別人喜歡的東西推給你。

我想到 YouTube 首頁。我只是看了幾次羽毛球比賽精華,接下來幾天推薦的全是羽毛球教學、球拍評測,甚至還有我從沒聽過的選手。它不知道我是校隊,它只知道看這些影片的人也看了那些影片。不過我也有點擔心,推薦系統會讓我只看到同一類東西,越推越窄。課程後面的資料倫理課也提到這種回饋迴圈,我想之後再深入了解。

這週我要做的小行動:打開 YouTube 首頁,數一數前 20 個推薦裡有幾個是羽毛球,再故意看三個完全不同主題的影片,觀察推薦怎麼變。

🔗 推薦產生關聯的筆記: → 科技與生活類:「演算法看你的行為,比你說的話更準」 → 倫理類:「推薦系統可能把人困在同溫層」 → 數學類:「內積是衡量兩組數字有多相似的方法」


回到課程筆記:L07_協同過濾_202611041526

Built with LogoFlowershow