Author : 講者:Brad Li| 機器學習軟體工程師 Software Engineer — Machine Learning @ Facebook
Brad Li,目前在 Facebook 擔任機器學習工程師;主要負責 Facebook 中影片 (Facebook Watch) 推薦系統的模型演算法。先前在 Linkedin 負責用戶搜尋排序演算法;更之前在 Medallia 負責自然語言處理(NLP) 模型訓練。
推薦系統分兩類
- Search engine : 使用者搜尋結果排序(Google, LinedIn),算法必須連結三個元素
- User
- Query
- Item
- Feed engine : 與使用者欲相關的物件排在越上面(例如臉書的塗鴉牆),僅需連結兩個元素
- User
- Item
如何排序
使用者行為回饋
- Positive feeback : e.g. 送出交友邀請,送訊息,分享文章
- Negtive feedback : e.g. 沒有任何行為,舉報
Training a ranking model
- X : 使用行為, Y : 物件 --> 使用者對某個個人檔案送出邀請 / 訊息
- Metrics - 著重在,使用者黏著度(user engagement),相關指標 DAU, MAU, 點擊數, 分享數
- 有時候不容易直接訓練模型優化黏著度,可以找代理指標,該代理指標和最終想要的結果高度相關
- Pointwise : 搜尋出來的每一個物件是獨立物件,類似 supervised-learning
- Pairwise - 搜尋出來的物件,依照使用者回應分成正面和負面,正面的樣本高分,負面的樣本低分
- Listwise - 正面/越相關的樣本排越上面越好
- 人口統計學類別 : 年齡、性別、國籍、語言、使用者分層、使用者目的
- 使用環境類別 : 裝置、週間週末、一天中什麼時段、節慶假日、使用者是付費會員還是訪客
- 使用者過去行為 : 點擊率、搜尋歷史
- 物件品質 - 點擊率、廣告/垃圾郵件分數
- 分類 - 主題、作者
- 時事 - 最近發生的時事、話題、文章是否剛出爐(recency)
- embedding : 文字、圖像
- User-item相似度
- Embedding 相似度
- CF - 很大的User-item rating matrix
- Content-based
- rule-based
- GBDT
- NN
In-general : 粗到細,準的放在後面,廣的filtering 放前面,Business Rule 放最後
- PM, DS 討論、設定目標
- 根據目標制定行動計畫
- 根據所需的付出和預期的影響,排定優先順序
- 訂出 20 項,最後可能做3項
- 會議,與合作夥伴達成共識
- 了解資料
- Label data在哪裡,怎麼拿
- 每個欄位的意義
- 該資料的意義是否符合我們使用的標準
- 建立 data pipeline
- 給模型用的訓練資料pipeline
- 建立模型
- 審視論文、部落格、公司內部其他成功案例,同時考量複雜度
- 等結果的時候
- 和其他夥伴開會
- 面試
- 其他
- 檢查模型結果
- 看結果而定,可能要重新拿資料或調整
- 線上測試
- 看結果而定,可能要重新拿資料或調整
- 部署模型
- 仔細瞭解工作職稱,目前做的事情太多分兩種
- Hybird - 同時要訓練模型、上線模型,線下測試 & 線上測試都要做 - FB, LinkedIN
- Decouple - 線下訓練 & 上線後的工作是不同人做 - Amazon
面試
- 寫Code
- 系統設計
- 行為問題
- 過去工作經驗
- 北極星指標 - 模型到底成功還失敗
- Label
- Feature
- Data
- Model
- Offline Eval
- Online Eval
到底要怎麼衡量這個模型上線之後成不成功;如果不容易直接衡量,要找代理指標(proxy indicator)。例如我們要設計一個推薦用戶他/她可能認識的朋友的系統,代理指標可以是送出的邀請數量、邀請被接受的數量。
要找出可以模擬北極星指標(True north metric)或者代理指標的標籤。例如北極星指標(True north metric)是被接受的邀請數量。 以二分法來貼標籤:
- 正面標籤:被接受的邀請。
- 負面標籤:沒有被接受的邀請。
- 常見的有協同過濾或是以內容為基礎的推薦。
- 訓練模型排序的方法:單點、成對、排序。
- 要用哪個模型? 線下的衡量指標(要用什麼樣的衡量指標來衡量這個模型成不成功?)
- AUC:指在 ROC 曲線(Receiver Operator Characteristic Curve,接收者操作特性曲線)之下的面積(Area Under Curve)。面積大於 0.5 表示模型效果優於隨機猜測,面積愈大代表模型愈有效。
- AUC(PR):在 PR 曲線(Precision-Recall Curve,精確召回曲線)之下的面積。精確召回曲線以召回率(Recall)為X軸,精確率(Precision)為Y軸。一般來說,精確率與召回率越高,代表模型的效益越高,也就是PR曲線,越往右上方靠近越好。
- 排序依據: a. NDCG(Normalized Discounted Cumulative Gain):給予不同相關程度的物件不同分數。 b. MRR(Mean Reciprocal Rank):第一個正確答案排序平均。把第一個正確答案出現的排序,取倒數;即評量第一個正確答案多早出現,越早越高分。 c. Recall@P90:精確率為 90% 的情況下,召回率(模型能夠判斷出相關物件的比率)
- 如果延遲太久?解決方法包括 a. Model compression b. Feature selection
- 如果不像在線下一樣好?解決方法包括 a. 看看線上和線下所使用的 feature logging/computation 是否一致。 b. Data distribution shift:線下訓練模型用的數據,跟上線之後遇到的數據,分佈是不一樣的,所以模型結果不同。例如因為時間不同,所以遇到不同分佈的數據。
- A/B test 相關問題 a. Size b. A/A test
- Metric discrepancy