摘要
本文要解決的核心問題是在Netflix的推薦系統中,為給用戶推薦的每部劇集選擇不同的封面圖片,以提高用戶的點擊和觀看時長。
▌1、What & Why
本文要解決的核心問題是在Netflix的推薦系統中,為給用戶推薦的每部劇集選擇不同的封面圖片,以提高用戶的點擊和觀看時長。為什麼需要將展示圖片做個性化呢?因為劇集的題目很多時候並不足以給出足夠的信息,以吸引用戶的觀看,而如果圖片能夠投其所好的話,則可以提高用戶感興趣的概率。有的用戶喜歡某個演員,那麼在劇集圖片裡展示該演員的劇照會更有效;有的演員喜歡喜劇,那麼通過圖片來告訴用戶這是一部喜劇,則更有可能吸引用戶;此外,不同用戶可能有著不同的審美,那麼對其展示更符合其審美的圖片也會有更好的效果。
▌2、Challenges
第一個挑戰,在於每個劇集只能展示一張圖片,如果用戶點擊並觀看了這部劇集,我們並不能確認是因為圖片選得好起了作用,還是用戶無論如何都會觀看這部劇集。用戶沒有點擊的情況也是類似。所以第一個要解決的問題時如何正確地對結果進行歸因,對於確定算法的好壞至關重要。
第二個挑戰,在於正確理解session之間切換展示圖片的影響。所謂切換,指的是用戶第一次看到這個劇集時使用的是圖片A,後面經過算法學習,在第二次看到時使用了圖片B。這種做法是好還是壞呢?壞的一面在於,圖片切換不利於用戶定位劇集,下次看到時會以為是不同的劇集。而好的一面在於,優化後的圖片展示可能會導致對用戶產生更大的吸引力。顯然我們如果能找到更好的圖片的話是會起到正面作用的,但是頻繁地切換也會讓用戶困惑,還會導致無法正確地將用戶的點擊和觀看進行歸因。
第三個挑戰,在於理解一副封面圖和同一頁面或同一session中其他封面圖和展 示元素之間的關係。一張包含主角大幅特寫的圖片可能會非常吸引人,因為這可以使得該圖片脫穎而出。但如果整個頁面中都是這樣的圖片,這個頁面作為一個整體就不那麼吸引人了。此外,封面圖的效果可能和故事梗概和預告片的效果也緊密相關。所以候選圖片需要能夠涵蓋該劇集吸引用戶的多個方面。
第四個挑戰,是每個劇集都需要一組優秀的候選圖片。這些圖片要有信息量和吸引力,同時還要避免成為“clickbait[1]”。同時這組圖片還要有足夠的差異化,能夠覆蓋不同喜好和審美的人。設計師不僅要考慮以上因素,同時還要考慮圖片推薦的個性化算法,畢竟他們創作出來的圖片是通過這些算法推送到用戶面前的。
最後一個挑戰,就是大規模工程化的挑戰。Netflix面臨的是千萬級每秒級別的請求,這個量級上圖片的實時渲染非常有挑戰,也對算法的實時性提出了挑戰。同時算法還需要適應用戶和劇集的不斷演化。
Contextual bandits approach
經典的策略升級採用的是基於ABTest的方法,簡單來說,就是離線訓練新算法,上線ABTest和老算法進行比較,如果效果優於老算法,則將新算法全量切換。這種方法有個問題,就是會導致regret[2]:長時間內很多用戶都無法享受到新算法的更好體驗。這個過程如下圖所示:
上圖中綠色標了REGRET的用戶和流量,都無法享技術,這種技術的核心優勢在於可以無偏地對算法效果進行離d線衡量,使得算法在上線abtest之前就可以對其效果有了解。具體做法如下圖所示:,使用的是Contextual bandits框架。Contextual bandits不是一個具體的算法,而是一類算法框架。在這種框架下,模型會快速學習到每個用戶的圖片偏好。Contextual bandits的做法簡單來講就是用線上一部分流量來實時收集樣本 ,然後實時訓練,然後將實時訓練更新的模型應用到該用戶身上。簡單來講,Contextual bandits犧牲了收集足夠數據以及訓練出的無偏模型,換來了可以對每個用戶生效的實時更新模型。
Contextual bandits的核心目標是要最小化regret。其本質就是通過可控隨機注入來獲取訓練數據。具體的隨機策略可以根據數據的數據規模來確定。這個過程也就是數據探索(data exploration)的過程,也就是傳說中ee中的一個e。在這種探索策略下,我們需要儘可能詳細地記錄日誌,這些日誌不僅可以用來訓練實時模型,還可以用來在離線做無偏的效果評估。
數據探索是有代價的,那就是用戶的一部分展示沒有使用我們預測的最優結果,而是使用了隨機結果,也就是regret,這樣做的影響是什麼呢?如果整體用戶量達到千萬級以上的話,這種regret平均到每個用戶其實是很小的,同時這些用戶還為整體提供了訓練數據,所以這種代價是完全可以接受的。但如果數據探索的代價比較大的話,這種隨機和探索策略可能就不太合適了。
此外,在這個過程中還需要控制用戶在同一劇集中看到圖片的變化頻率,以及仔細控制標註數據的質量,以免引起clickbait。
▌3、模型訓練
模型訓練中值得一提的是,作者將“為每個用戶的不同劇集的候選圖片分別排序”問題簡化為“為每個用戶的所有候選圖片整體排序”。這樣學習起來更簡單,同時也能夠學習到足夠的信息。具體學習方法可適用有監督學習、湯普森採樣或者LinUCB等等。我們的公眾號上也介紹過相關算法,點擊“閱讀原文”瞭解。
廣告
查看詳情
▌4、潛在信號
所謂信號也就是特徵,值得一提的是除了圖片本身的特徵,例如風格和用戶歷史記錄等,作者還將劇集推薦算法中與圖片無關的特徵加了進去一起訓練。
▌5、效果評測
在衡量效果方面使用了基於日誌的replay[3]技術,這種技術的核心優勢在於可以無偏地對算法效果進行離線衡量,使得算法在上線abtest之前就可以對其效果有了解。具體做法如下圖所示:
這種做法的流程如下:
在線上留出部分隨機流量,對這些流量展現隨機結果,而不是算法計算出來的結果,在這個場景下,就是展現一個劇集的隨機封面。這是整個環節中最重要的一環,也是保證評測無偏的基礎。(這裡的偏指的是什麼?留給讀者想一想)。
離線評測時,計算出新算法的推薦結果,並在1中的日誌裡尋找推薦結果與新算法結果一致的數據,也就是上圖中的用戶1、2和4,然後計算這個集合中用戶的點擊率,上圖中也就是2/3。
這種做法可以讓我們得知如果線上展現的是新算法的結果的話,用戶會如何反饋,是點擊還是不點擊。下圖展示了不同bandit算法的效果:
下圖是一個具體的例子:
▌6、線上表現
與離線評估一致,算法上線後確實表現出了明顯的提升,同時作者也觀察到了在replay技術下離線指標的提升和線上指標提升之間是存在相關性的。同時也觀察到了一些有趣的事實,例如對於那些用戶之前沒展示過的劇集提升要更大,這是因為該算法對於用戶不瞭解劇集的情況更有效。
▌7、總結
這個工作是Netflix對於“如何推薦”而不僅是“推薦什麼”的第一次嘗試,在此之後還有很多可做的工作,例如對於冷啟動圖片和劇集的處理,對於其他UI層面元素的個性化,甚至幫助設計是設計出更加有吸引力和個性化的圖片。
clickbait從字面上可理解為釣魚圖片,指的是用和內容關係不大但吸引人的圖片吸引用戶點擊,但用戶點擊後常常會很快跳出。典型的如一些新聞客戶端上的標題黨。
這個場景下的regret是bandit問題中一個概念,指的是由於沒有利用到較好的結果而造成的損失,例如為了探索中獎率更高的老虎機而沒有選擇當前已知中獎概率較大的老虎機,這種行為造成的可能的損失,叫做regret。
閱讀更多 智能推薦系統 的文章