L07|協同過濾:推薦系統與嵌入(Collaborative filtering)

零基礎提示

  • 先讀 數學補充:§4 指數與對數、§5 softmax
  • 看不懂的詞查 白話小辭典
  • 字幕:離線網站選「中英」(電腦翻譯,大意正確)
Collaborative filtering

推薦系統靠協同過濾,把「使用者 × 商品」矩陣中缺的格子填起來。這課也講梯度累積、多目標模型、softmax 與交叉熵、權重衰減。 (Recommendation systems use collaborative filtering to fill in missing cells of a user × item matrix. Also: gradient accumulation, multi-target models, softmax, cross-entropy and weight decay.)

項目內容
所屬Part 1:Practical Deep Learning
影片YouTube
對應書本章節第 8 章 Collab
原始頁面Lessons/lesson7
難度(F3 視角)★★★★☆ 進階

影片

本課重點

  1. 梯度累積:大模型會把 GPU 記憶體用光(CUDA out of memory)。GradientAccumulation 把一個批次拆成幾個小批次,累積梯度後才更新一次,結果幾乎等同於用大批次。
  2. 集成不同架構:把幾個不同的好架構(如 convnext、vit、swin)各自訓練,再平均預測,在稻米比賽中名列前茅。每天改進並提交,提交紀錄就是你的進度表。
  3. 多目標模型:同一個模型同時預測稻米病害和品種:輸出 20 個數字,前 10 個給病害、後 10 個給品種,各自算損失再相加。
  4. Softmax 與交叉熵:softmax 把輸出變成加總為 1 的機率;交叉熵取正確類別機率的負對數當損失,越有信心答對損失越小。缺點:softmax 一定會選一個類別,給熊分類器看一隻貓,它也會硬選一種熊。
  5. 協同過濾:不知道電影類型也沒關係:替每個使用者和每部電影各隨機給一組「潛在因子」,兩者內積當預測評分,用 SGD 學出這些因子。喜好相似的人會得到相似的因子。
  6. 嵌入(Embedding):嵌入就是「用編號去查表」。在數學上等同於 one-hot 向量乘以矩陣,但查表快得多。用 PyTorch 的 Module 類別寫出 DotProduct 模型。
  7. 偏差與權重衰減:有些人什麼都給高分、有些電影人人都愛,所以加上使用者偏差和電影偏差。加了之後過擬合,用權重衰減(在損失加上權重平方和)把權重拉小,達到正則化。

關鍵概念

英文術語中文一句話解釋
Collaborative filtering協同過濾根據相似使用者的行為來推薦
Latent factors潛在因子模型自己學出來、描述喜好或特性的數字
Embedding嵌入用索引查表取得一組向量
Dot product內積兩組數字逐項相乘再加總
SoftmaxSoftmax把一組數字轉成加總為 1 的機率
Cross-entropy loss交叉熵損失−log(正確類別的機率)
Gradient accumulation梯度累積多個小批次累積梯度後才更新一次
Bias (in collab)偏差項使用者或電影本身的整體高低傾向
Weight decay權重衰減在損失中加上權重平方和,防止權重過大
Regularization正則化減少過擬合的各種方法的統稱

認識關聯圖與重點圖

L07_關聯圖_202611041526

迷你範例:softmax 與交叉熵

原始輸出210
e^x7.3892.7181.000
softmax0.6650.2450.090

正確答案是第 1 類時,交叉熵 = −ln(0.665) ≈ 0.408;正確答案是第 3 類時,交叉熵 = −ln(0.090) ≈ 2.408。

課堂截圖(取自官方 Summary 頁)

練習題

  1. 模型對三個類別輸出 [2, 1, 0]。算出 softmax(取三位小數),並確認加總是否為 1。
  2. 承上題,如果正確答案是第 1 類,交叉熵損失是多少?如果是第 3 類呢?哪個比較大?為什麼?
  3. 使用者因子 [0.9, 0.1, −0.5],電影因子 [0.8, −0.2, −0.6]。用內積算出預測分數。
  4. 為什麼要加使用者偏差和電影偏差?加了之後模型反而變差,原因是什麼?怎麼修?
  5. GPU 只放得下批次大小 32,但你想要批次 64 的效果。梯度累積怎麼做到?

資源連結

英文延伸資源(零基礎可以先略過,點開看)

相關筆記

Built with LogoFlowershow