Deep Learning 101, Taiwan’s pioneering and highest deep learning meetup, launched on 2016/11/11 @ 83F, Taipei 101

AI是一條孤獨且充滿惶恐及未知的旅程,花俏絢麗的收費課程或活動絕非通往成功的捷徑。
衷心感謝當時來自不同單位的AI同好參與者實名分享的寶貴經驗;如欲移除資訊還請告知。
TonTon Huang Ph.D. 發起,及其當時任職公司(台灣雪豹科技)無償贊助場地及茶水點心。

Deep Learning 101 Buy Me A Coffee

去 YouTube 訂閱 | Facebook | 回 GitHub Pages | 到 GitHub 點星 | 網站 | 到 Hugging Face Space 按愛心


大語言模型 語音處理 自然語言處理 電腦視覺
Large Language Model Speech Processing Natural Language Processing, NLP Computer Vision

用 AI 懂 AI

AI 技術 體驗/分享

手把手帶你一起踩 AI 坑https://www.twman.org/AI


AI 技術 開源/試用

Recommender System YouTube

2018/09/14 SAS


推薦系統核心概念與重要性

首先,推薦系統是什麼?簡單來說,它是一種資訊過濾工具,旨在幫助使用者從海量內容或商品中快速找到他們可能感興趣或喜歡的項目 [1-3]。為什麼它如此重要?因為在內容和商品爆炸性增長的今天,使用者很難自行從中發掘所需,推薦系統透過主動推薦來解決這個資訊過載問題 [1-3]。它的應用場景非常廣泛,從文章、新聞、電影(如 Netflix)到音樂(如 KKBOX, Spotify)、商品(如電商平台)甚至廣告,幾乎各行各業都能看到它的身影 [1, 2]。核心目標就是要找出使用者「可能或許會是喜歡的」東西 [1]。

主要的推薦方法類型

推薦系統的建構方法大致可以分為幾種主要類型,這些是我們入門時需要掌握的基礎:

  1. Content-Based Filtering (內容基礎過濾)
    • 這種方法主要依賴於商品/內容本身的特徵(metadata, features)和使用者的特徵來進行推薦 [1-3]。
    • 商品特徵可能包括標題、內容、類別、價格等 [1-3]。
    • 使用者特徵則可能包括年齡、性別、個人喜好等 [1, 2]。
    • 其基本思路是將這些特徵作為模型輸入,預測使用者對特定項目的偏好 [1-3]。
    • 從研究角度看,這可以視為一個基於特徵的預測問題,例如使用簡單的迴歸模型 [1]。
    • 挑戰在於,有時候使用者特徵難以獲取(例如,網站不一定知道使用者的年齡或性別),而商品特徵也可能不夠豐富或難以量化 [1, 4]。
  2. Collaborative Filtering (CF, 協同過濾)
    • CF 方法則走了一條不同的路徑:它不直接依賴於商品或使用者的顯性特徵,而是純粹利用使用者的行為數據來進行推薦 [1, 2]。這些行為數據可能是瀏覽、購買、點擊或明確的評分 [1-5]。
    • 在最簡化的情況下,原始數據可能只有 User ID、Item ID 和對應的行為或評分 [1, 4]。
    • 核心假設是「物以類聚,人以群分」:相似的使用者會對相似的物品給予相似的評價或展現相似的偏好;反之,相似的物品也會被相似的使用者給予相似的評價或展現相似的偏好 [1-3, 6]。這是理解CF的基石。
    • Netflix Prize 競賽是一個經典的例子,它提供了大量的使用者電影評分數據,參賽者需要預測使用者對未評分電影的偏好,這是一個典型的基於評分的 CF 問題 [2-5, 7]。

CF的子類型:記憶基礎與模型基礎

協同過濾方法又可以進一步細分為記憶基礎 (Memory-Based) 和模型基礎 (Model-Based) 兩種:

處理隱性回饋 (Implicit Feedback)

在實際應用中,我們往往沒有使用者明確的評分數據 (Explicit Feedback),更多的是隱性回饋,例如瀏覽、點擊、購買等行為 [1, 3, 11, 14, 17, 18]。這類數據的挑戰在於:

  1. 只有正面樣本:我們知道使用者對哪些項目產生了行為,但對於那些沒有行為的項目,我們不確定是使用者不感興趣,還是根本沒有看到或注意到 [1, 3, 14, 17, 18]。這不像評分數據,我們可以明確知道使用者「不喜歡」某個項目。
  2. 缺乏程度信息:即使使用者與某個項目發生了互動(如瀏覽),我們也無法直接得知其喜歡的程度,不像評分有1-5分的分級 [1, 18]。

處理隱性回饋的常用方法包括 [1, 3, 14, 15, 17]:

進階的推薦方法與技術

隨著研究的深入和數據的複雜化,出現了更多先進的推薦系統方法:

  1. Word2Vec 等 Embedding 方法的應用: 將使用者瀏覽或互動的物品序列視為一個「句子」,將物品視為「詞」[1, 14, 16]。應用 Word2Vec (如 Skip-gram) 或其變種(如 Meta-Prod2Vec)來學習物品的 Embedding 向量 [1, 14, 16]。這樣可以將物品轉換為低維度的密集向量表示,捕捉物品之間的語義或關聯性 [1, 14, 16]。如果將使用者行為表達為圖結構,也可以使用 Node2Vec 等圖嵌入方法 [1, 16]。
  2. 深度學習 (Deep Learning, DL): DL 模型可以構建更深層次的結構,以學習使用者和物品之間更複雜的交互關係抽象高層次特徵 [1, 14, 16].
    • Wide & Deep Learning (Google): 結合了 Wide 部分(類似線性模型,擅長記憶處理稀疏的交叉特徵)和 Deep 部分(深度神經網絡,擅長從特徵中泛化學習隱含模式),旨在結合兩者的優勢以獲得更好的性能 [1, 14, 16].
    • RNN (循環神經網絡): 在序列推薦中表現出色。將使用者的瀏覽或購買歷史視為一個序列,RNN 可以捕捉使用者興趣的短期或長期演變,特別適用於 Session-based 推薦,即根據使用者在一個特定時間段內的行為序列進行推薦 [1, 11, 14, 19]. Session 的定義通常基於時間間隔(如 30 分鐘無活動則 Session 結束)[7, 11, 19].
  3. 強化學習 (Reinforcement Learning, RL): 將推薦過程建模為一個序列決策問題,智能體(推薦系統)在不同的狀態(使用者當前的狀態/瀏覽歷史)下採取動作(推薦物品),並根據使用者的反應獲得獎勵(點擊、購買等),目標是學習一個策略來最大化長期的累積獎勵 [1, 11, 14, 19-21].
    • 淘寶有將整個購物流程視為一個RL過程,優化使用者最終購買的機率的應用案例 [1, 14, 19].
    • 挑戰:RL 需要大量的在線互動試錯來學習,這在實際線上環境中成本很高且風險大 [1, 22]. 數據稀疏和 Off-policy Evaluation (在舊策略下評估新策略) 也是難點 [1, 20, 22].

推薦系統面臨的實際挑戰與進階問題

建構一個實用的推薦系統遠不止選擇算法那麼簡單,我們還需要面對許多實際問題:

  1. 冷啟動問題 (Cold Start): 對於新使用者新物品,由於缺乏歷史互動數據,我們無法使用 CF 方法進行推薦 [1, 3, 11, 17, 23]. 這是一個很普遍的挑戰。常見的緩解方法包括利用內容特徵、使用者註冊時提供的信息或一些啟發式規則 [1, 17, 23].
  2. 長尾效應 (Long Tail Effect): 在許多平台中,少數熱門物品佔據了大部分的互動,而絕大多數物品位於「長尾」部分 [1, 11, 23]. 如果推薦系統只優化點擊率等短期指標,往往會導致熱門更熱,冷門更冷的「馬太效應」[1, 20, 23]. 長尾物品很難被發現和推薦。
  3. 探索與利用的平衡 (Exploration vs. Exploitation, E&E): 這是解決長尾效應和冷啟動的關鍵問題之一 [1, 11, 23, 24].
    • Exploitation (利用): 推薦那些基於歷史數據已知會獲得高獎勵(如高點擊率、購買率)的物品 [1, 11, 23-25].
    • Exploration (探索): 推薦一些使用者可能感興趣但過去未曾互動過的物品,或一些系統不確定其表現的物品,以發現使用者新的興趣點或潛在的高獎勵物品 [1, 11, 23-25].
    • 只 Exploitation 會導致使用者興趣狹窄和長尾問題;只 Exploration 會導致推薦不準確,使用者體驗下降 [24].
    • Bandit 算法(源於多臂老虎機問題)被廣泛用於解決 E&E 問題,特別是在廣告和新聞推薦中 [1, 11, 17, 22-26]. 它平衡了選擇已知最佳選項和嘗試未知選項 [17, 24, 25].
    • Multi-Armed Bandit (MAB): 假設每個推薦選項(「手臂」)有固定的未知獎勵機率,目標是在有限嘗試內最大化總獎勵 [11, 17, 22, 24, 25].
    • UCB (Upper Confidence Bound): 一種經典的 MAB 算法,它選擇能夠最大化「平均獎勵 + 一個與不確定性相關的項」的選項,鼓勵探索那些不確定性高(即置信區間上界高)的選項 [1, 11, 17, 24, 25].
    • Contextual Bandit (C Bandy): 在 MAB 的基礎上引入上下文特徵(如使用者或物品的特徵),根據當前情境來決定探索與利用策略,使得推薦更具個性化 [1, 11, 17, 24-26].
    • Bandit 算法還可以巧妙地應用於 A/B Test 的決策,通過動態分配流量,逐漸偏向表現更好的算法版本 [1, 17, 26].
  4. 多目標優化: 實際系統不僅追求準確率(如 RMSE,雖然在評分預測中重要,但好的RMSE不一定等於好的Top-K排序 [27, 28]),還需要考慮許多其他重要指標,例如點擊率 (CTR)轉換率 (CVR)、使用者停留時間、多樣性 (Diversity)(避免推薦過於相似的物品 [27, 29])、新穎性 (Novelty)(推薦使用者未曾見過的好東西)等 [11, 27, 28]. 如何在這些多個目標之間找到最佳平衡是一個複雜的問題 [27].
  5. 排序問題 (Ranking): 推薦系統最終輸出的是一個排序列表 [27, 28]. 預測單個物品的偏好(點預測)與優化整個推薦列表的排序是不同的問題 [27, 28]. Top-K Ranking,即如何優化列表前K個位置的推薦效果,通常比簡單的評分預測更為重要 [26-28]. 優化 Top-K Ranking 指標本身較難,常需要特定的排序模型或損失函數 [26-28]. 不同頁面位置(如首頁、商品詳情頁)或不同使用者階段(瀏覽、購買)的推薦策略和側重點也應不同 [27-30]. 例如,商品頁可能更側重推薦相似或互補商品,而首頁可能需要更高的多樣性 [27-30].
  6. 數據挑戰:
    • 數據規模與稀疏性: 實際系統面對百萬甚至數十億的使用者和物品 [27]. 使用者-物品互動矩陣極度稀疏,已知互動可能只佔總數的不到1%或0.1% [7, 17, 27, 31]. 從如此稀疏的數據中學習準確偏好是巨大的挑戰 [7, 17, 27, 31].
    • 隱性回饋的歧義: 如前所述,無法確定未互動的真正原因 [17].
    • 數據時效性: 使用者興趣和物品流行度隨時間變化,模型需要能夠捕捉這種動態變化 [15, 17].
    • 處理極端稀疏或不規律數據: 對於某些銷售數據極度稀疏、長期沒有銷售但偶爾出現銷售的物品,精確預測非常困難,可能需要特殊處理或簡單的規則/隨機推薦 [7, 31].
  7. 實際實作與系統挑戰:
    • 實時性 (Real-time Serving): 推薦系統需要在使用者請求時快速生成推薦結果,對延遲要求很高 [27-29]. 模型通常離線訓練,但線上 Serving 必須高效 [27-29]. Item-Based CF 或 MF 可以通過預計算或利用高效的向量檢索(如 Faiss 庫,Facebook 有類似的用於快速查找近鄰特徵的庫)來實現快速 Serving [27-29]. 深度學習模型的 Serving 可能計算開銷較大 [27].
    • 系統架構: 需要設計分散式、可擴展的系統來處理大規模數據、訓練複雜模型和應對高併發請求 [27-29]. 系統能力往往限制了可以採用的算法 [5, 28, 31].
    • 數據獲取與清洗: 獲取高質量的用戶行為數據和物品特徵是基礎且至關重要的工作 [27].
    • 個性化推薦的實現門檻: 對於個人網站或部落格,由於難以獲取足夠的使用者行為數據,實現複雜的個性化推薦系統門檻較高,通常需要平台級的數據基礎支持 [7, 31].

其他相關概念與考量