Netflix推薦系統模型的快速線上評估方法——Interleaving

雷鋒網 AI 科技評論按,本文作者是硅谷高級工程師王喆,雷鋒網獲授權轉載於微信號「王喆的機器學習筆記」,作者的知乎專欄地址是:https://zhuanlan.zhihu.com/p/68509372

這裡是「王喆的機器學習筆記」的第十八篇文章,今天我們關注模型的評估和線上測試。有經驗的算法工程師肯定非常清楚,在一個模型的開發週期中,佔工作量大頭的其實是特徵工程和模型評估及上線的過程。在機器學習平臺已經非常成熟的現在,模型結構的實現和調整反而僅僅是幾行代碼的事情。所以如果能夠將模型評估和線上 AB Test 的效率提高,那一定是大大解放算法工程師效率的事情。

今天這篇文章我們就介紹一下流媒體巨頭 Netflix 的「獨門線上評估祕笈」——Interleaving。

周所周知,Netflix 是美國的流媒體巨頭,其廣為人知的原因不僅是因為其多部知名的原創劇,高昂的市值,在推薦技術領域,Netflix 也一直走在業界的最前沿。那麼驅動 Netflix 實現推薦系統快速迭代創新的重要技術,就是我們今天要介紹的快速線上評估方法——Interleaving。

Netflix 推薦系統問題背景

Netflix 幾乎所有頁面都是推薦算法驅動的,每種算法針對不同的推薦場景進行優化。如圖 1 所示,主頁上的「Top Picks 行」根據視頻的個性化排名提供推薦,而「Trending Now 行」包含了最近的流行趨勢。這些個性化的行共同構成了 Netflix 將近 1 億會員「千人千面」的個性化主頁。

Netflix推薦系統模型的快速線上評估方法——Interleaving

圖 1: 個性化 Netflix 主頁示例。每一行是一個推薦類別,對於給定的行,從左到右的視頻排序由特定的排序算法確定。

對於強算法驅動的 Netflix 來說,算法的迭代創新當然是必不可少的。為了通過算法最大化 Netflix 的商業目標(這些商業指標包括每月用戶訂閱數、觀看總時長等等),需要進行大量的 AB Test 來驗證新算法能否有效提升這些關鍵的產品指標。

這就帶來一個矛盾,就是算法工程師們日益增長的 AB Test 需求和線上 AB Test 資源嚴重不足之間的矛盾。因為線上 AB Test 必然要佔用寶貴的線上流量資源,還有可能會對用戶體驗造成損害,但線上流量資源顯然是有限的,而且只有小部分能夠用於 AB Test;而算法研發這側,算法驅動的使用場景不斷增加,大量候選算法需要逐一進行 AB Test。這二者之間的矛盾必然愈演愈烈。這就迫切需要設計一個快速的線上評估方法。

為此,Netflix 設計了一個兩階段的線上測試過程(如圖 2)。

  • 第一階段利用被稱為 Interleaving 的測試方法進行候選算法的快速篩選,從大量初始想法中篩選出少量「優秀的」Ranking 算法。

  • 第二階段是對縮小的算法集合進行傳統的 AB Test,以測量它們對用戶行為的長期影響。

大家一定已經對傳統的 AB Test 方法駕輕就熟,所以這篇文章專注於介紹 Netflix 是怎樣通過 Interleaving 方法進行線上快速測試的。

Netflix推薦系統模型的快速線上評估方法——Interleaving

圖 2:使用 Inter leaving 進行快速線上測試。用燈泡代表候選算法。其中,最優的獲勝算法用紅色表示。Interleaving 能夠快速地將最初的候選算法集合進行縮減,相比傳統的 AB Test 更快地確定最優算法。

傳統 AB Test 存在的問題

傳統的 AB Test 除了存在效率問題,還存在一些統計學上的顯著性差異問題。下面用一個很典型的 AB Test 問題來進行說明。

這裡設計一個 AB Test 來驗證用戶群體是否對「可口可樂」和「百事可樂」存在口味傾向。那麼按照傳統的做法,我們會將測試人群隨機分成兩組然後進行「盲測」,即在不告知可樂品牌的情況下進行測試。第一組只提供可口可樂,第二組只提供百事可樂,然後根據大家一定時間內的可樂消耗量來觀察人們是更喜歡「可口可樂」還是「百事可樂」。

這個實驗一般意義上確實是有效的,很多時候我們也是這麼做的。但也確實存在一些潛在的問題:

  1. 總的測試人群中,對於可樂的消費習慣肯定各不相同,從幾乎不喝可樂到每天喝大量可樂的人都有。

  2. 可樂的重消費人群肯定只佔總測試人群的一小部分,但他們可能佔整體汽水消費的較大比例。

這兩個問題導致了,即使 AB 兩組之間重度可樂消費者的微小不平衡也可能對結論產生不成比例的影響

在互聯網場景下,這樣的問題同樣存在。比如 Netflix 場景下,非常活躍用戶的數量是少數,但其貢獻的觀看時長卻佔較大的比例,因此 Netflix AB Test 中活躍用戶被分在 A 組的多還是被分在 B 組的多,將對結果產生較大影響,從而掩蓋模型的真實效果。

那麼如何解決這個問題呢?一個方法是不對測試人群進行分組,而是讓所有測試者都可以自由選擇百事可樂和可口可樂(測試過程中仍沒有品牌標籤,但能區分是兩種不同的可樂)。在實驗結束時,統計每個人可口可樂和百事可樂的消費比例,然後進行平均後得到整體的消費比例。

這個測試方案的優點在於:

  1. 消除了 AB 組測試者自身屬性分佈不均的問題;

  2. 通過給予每個人相同的權重,降低了重度消費者對結果的過多影響。

這個測試思路應用於 Netflix 的場景,就是 Interleaving。

Netflix 的快速線上評估方法——Interleaving

圖 3 描繪了 AB Test 和 Interleaving 之間的差異。

  • 在傳統的 AB Test 中,Netflix 會選擇兩組訂閱用戶:一組接受 Ranking 算法 A 的推薦結果,另一組接受 Ranking 算法 B 的推薦結果。

  • 在 Interleaving 測試中,只有一組訂閱用戶,這些訂閱用戶會接受到通過混合算法 A 和 B 的排名生成的交替排名。

這就使得用戶同時可以在一行裡同時看到算法 A 和 B 的推薦結果(用戶無法區分一個 item 是由算法 A 推薦的還是算法 B 推薦的)。進而可以通過計算觀看時長等指標來衡量到底是算法 A 好還是算法 B 好。

Netflix推薦系統模型的快速線上評估方法——Interleaving

圖 3:傳統 AB Test 和 Interleaving 在傳統 AB Test 中,測試用戶分為兩組,一組暴露於排名算法 A,另一組暴露於算法 B,在兩組之間進行比較觀看時長等核心評估指標。另一方面,Interleaving 將所有測試用戶暴露於算法 A 和 B 的混合排名,再比較算法相對應的 item 的指標

當然,在用 Interleaving 方法進行測試的時候,必須要考慮位置偏差的存在,避免來自算法 A 的視頻總排在第一位。因此需要以相等的概率讓算法 A 和算法 B 交替領先。這類似於在野球場打球時,兩個隊長先通過扔硬幣的方式決定誰先選人,然後在交替選隊員的過程。

Netflix推薦系統模型的快速線上評估方法——Interleaving

圖 4:使用「隊長選人」的方式來混合兩個排名算法的視頻。ranking 算法 A 和 B 分別產生了推薦視頻列表。通過隨機拋硬幣確定是 ranking 算法 A 還是 B 貢獻第一個視頻。然後,輪流從算法 A 和 B 中從高到底選擇視頻。

在清楚了 Interleaving 方法之後,還需要驗證這個評估方法到底能不能替代傳統的 AB Test,會不會得出錯誤的結論。Netflix 從兩個方面進行了驗證,一是 Interleaving 的「靈敏度」,二是 Interleaving 的「正確性」。

Interleaving 與傳統 AB Test 的靈敏度比較

Netflix 的這組實驗希望驗證的是 Interleaving 方法相比傳統 AB Test,需要多少樣本就能夠驗證出算法 A 和算法 B 的優劣。我們之前一再強調線上測試資源的緊張,因此這裡自然希望 Interleaving 能夠利用較少的線上資源,較少的測試用戶就解決評估問題。這就是所謂的「靈敏度比較」。

圖 5 是實驗結果,橫軸是參與實驗的樣本數量,縱軸 Netflix 沒有給出非常精準的解釋,但我們可以理解為是判定算法 A 是否比算法 B 好的「錯誤」概率。可以看出的是 interleaving 的方法利用 10^3 個樣本就能夠判定算法 A 是否比 B 好,而 AB test 則需要 10^5 個樣本才能夠將錯誤率降到 5% 以下。這就意味著利用一組 AB Test 的資源,我們可以做 100 組 Interleaving 實驗。這無疑大大加強了線上測試的能力。

Netflix推薦系統模型的快速線上評估方法——Interleaving

圖 5:對 Interleaving 與傳統 AB Test 指標的靈敏度。與最敏感的 AB Test 指標相比,Interleaving 也只需要 1/100 的訂閱用戶樣本就能夠確定用戶更偏愛哪個算法

Interleaving 指標與 AB Test 指標的相關性

除了能夠利用小樣本快速進行算法評估外,Interleaving 的判斷結果是否與 AB Test 一致,也是檢驗 Interleaving 能否在線上評估第一階段取代 AB Test 的關鍵。

圖 6 顯示了 Interleaving 中的實驗指標與 AB Test 指標之間的相關性。每個數據點代表一個 Ranking 算法。我們發現 Interleaving 指標與 AB Test 評估指標之間存在非常強的相關性,這就驗證了在 Interleaving 實驗中勝出的算法也極有可能在之後的 AB Test 中勝出。

Netflix推薦系統模型的快速線上評估方法——Interleaving

圖 6:Interleaving 指標與 AB Test 指標的相關性。每個點表示一個 Ranking 算法的實驗結果。Interleaving 指標與 AB Test 指標存在很強的相關性

結論

通過實驗我們已經知道 Interleaving 是一種強大快捷的算法驗證方法,它加速了 Netflix 各類 Ranking 算法的迭代創新。

但我們也要清楚的是 Interleaving 方法也存在一定的侷限性,主要是下面兩點:

  1. 工程實現的框架較傳統 AB Test 複雜。由於 Interleaving 實驗的邏輯和業務邏輯糾纏在一起,因此業務邏輯可能會被幹擾。而且為了實現 Interleaving,需要將大量輔助性的數據標示添加到整個數據 pipeline 中,這都是工程實現的難點;

  2. Interleaving 畢竟只是對用戶對算法推薦結果偏好程度的相對測量,不能得出一個算法完整的表現。比如我們想知道算法 A 能夠將用戶整體的觀看時長提高多少,使用 Interleaving 是無法得出這樣的結論的。為此 Netflix 才設計了 Interleaving+AB Test 兩級實驗結構,完善整個線上測試的框架。

文章最後按慣例跟大家討論幾個問題,希望大家能分享自己的觀點,討論出真知:

  1. 文中的靈敏度測試到底是在進行什麼測試?縱軸是 P value 嗎?(可以參考文末的原文鏈接)

  2. 除了 AB Test 和 Interleaving,工作中你還是使用過哪些線上測試方法?

  3. 在筆者看來,Interleaving 除了最後介紹的兩個弊端外,還有一些其他潛在的問題,你覺得還有哪些?

最後歡迎大家關注我的微信公眾號:王喆的機器學習筆記(wangzhenotes),跟蹤計算廣告、推薦系統等機器學習領域前沿。

想進一步交流的同學也可以通過公眾號加我的微信一同探討技術問題。

注:文章大部分基於 Netflix 的官方技術博客原文(https://medium.com/netflix-techblog/interleaving-in-online-experiments-at-netflix-a04ee392ec5)翻譯,進行了有效補充。

相關推薦

推薦中...