天天看點

你看到哪版電影海報,由算法決定:揭秘Netflix個性化推薦系統

一直以來Netflix都緻力于通過個性化推薦系統為每位使用者及時推薦最符合他們口味的影片。一個類别下往往有成千上萬的影片,同時我們又有來自不同使用者的超過一億個賬戶,這樣的情況下,為每位使用者推薦最對胃口的影片就十分關鍵。

但其實我們所做的推薦影片的工作不單單止步于此。為什麼你會關注我們所推薦的某部影片?如何能讓你對一個陌生、全新的影片名感興趣?如何說服你讓你覺得某部影片值得去看?解答這些問題對于幫助我們的使用者在一堆陌生的影片名中發現好的、他們所喜歡的内容來說至關重要。

要解決這一挑戰,其中一種方式是在描繪影片的配圖上花心思。當一部影片的配圖有某些吸引你的地方時,這張圖檔就是讓你了解片名背後故事的最直接途徑,也是你會喜歡這部影片的視覺“證據”。這張配圖中也許有一個你認識的演員,也許描繪了像是汽車追捕這樣緊張激動的畫面,抑或是包含一個傳達着電影或是電視劇核心的戲劇性畫面。如果我們把這張精彩絕倫的配圖展現在你的首頁(就像常說的那樣:一張圖勝過千行字),那麼也許,僅僅隻是也許,你會打開看一看。這就是Netflix和其他傳統媒體在提供影視資訊上的另一個不同: 我們沒有一個通用的影片推薦清單,而是為全球過億的使用者提供他們每個人自己的個性化影片推薦和視覺資料。

你看到哪版電影海報,由算法決定:揭秘Netflix個性化推薦系統

沒有配圖的Netflix首頁。這是之前我們推薦系統的算法所生成的首頁。

在之前的文章中,我們探讨了針對所有使用者如何為每部影片配置最合适的圖檔。通過多臂賭博機問題(Multi-armed bandit problem)的算法,我們為一部影片,比如《怪奇物語》(Stranger Things)尋找可以覆寫最大範圍使用者擷取最多點傳播放量的最佳配圖。然而,在知道不同使用者之間品位和喜好存在着巨大差異的情況下,如果能夠為每位使用者找到最吸引他們的配圖去放大影片中最可能讓他們感興趣的元素,我們是否會收獲更高的播放量?

你看到哪版電影海報,由算法決定:揭秘Netflix個性化推薦系統

《怪奇物語》在我們個性化算法中超過5%展現次數的配圖。不同配圖包含着劇情發展中的不同主題,這些資訊無法通過任何單獨一張圖檔去呈現。

把這個問題作為一個啟發,讓我們來探究一下在什麼情境下配圖的個性化設定會有意義。假設每位使用者有自己的觀影記錄,左側是某個使用者過去曾看過的三部影片,而箭頭指向的右側是我們針對這位使用者推薦某個影片所使用的配圖。

設想一下為《心靈捕手》(Good Will Hunting)配圖時,應如何選擇不同的圖檔為不同使用者去描繪這部影片。我們可以根據使用者對電影主題和種類的喜好去選擇圖檔。如果我們給一個看過很多愛情片的人展示包含馬特•達蒙(Matt Damon)和明妮•德裡弗(Minnie Driver)一起的劇照也許會讓他對《心靈捕手》感興趣。而一個看過很多喜劇片的人如果看到包含羅賓•威廉姆斯(Robin Williams,著名喜劇演員)的劇照也許會想去看這部電影。

你看到哪版電影海報,由算法決定:揭秘Netflix個性化推薦系統

再舉個例子,設想當我們為《低俗小說》(Pulp Fiction)這部電影設定個性化配圖時,不同使用者對于影片主演的喜好會如何影響我們對于圖檔的選擇?一個使用者看了很多烏瑪•瑟曼(Uma Thurman)主演的電影,那麼為他推薦《低俗小說》時如果配上烏瑪的劇照,他就很可能選擇點開去看。同理,對于一個約翰•特拉沃爾塔(John Travolta)的粉絲,《低俗小說》這部電影配上約翰的劇照就會更有吸引力。

你看到哪版電影海報,由算法決定:揭秘Netflix個性化推薦系統

當然,并非所有情境下個性化配圖的選擇都如此清晰明确。是以與其一一列舉這些人為制定的規則,倒不如讓資料說話,告訴我們如何去選擇配圖。總的來說,配圖的個性化設計使每部影片在不同使用者前呈現出最好的第一印象,進而提升使用者的使用體驗。

<b>挑戰</b>

在Netflix,我們崇尚個性化服務,并在算法上收納了使用者體驗的各方面資訊,包括主界面影片推薦清單的行數,每行不同的标題,陳列的宣傳照片和我們所發放的資訊等等。每個個性化方面的新嘗試都有各自的挑戰,配圖的個性化設定也不例外且其表現出了多種挑戰。其中一個是我們隻能為每部電影選擇一張配圖去诠釋它。然而傳統的推薦系統可以讓我們為每位使用者展示多個選項,進而根據每個人的最終選擇來了解他們的喜好。這意味着個性化配圖的選擇是一個死循環的“雞和蛋”的問題: 當一個使用者選擇播放某部影片時,他隻看到了我們選擇展示給他的那一張配圖。而我們想要知道的是:什麼時候使用者對影片的選擇(看或不看)會受配圖的影響,而什麼時候又不會受影響(不論展示什麼配圖,使用者都會選擇看或不看)。是以個性化配圖的選擇問題是在傳統推薦系統問題的頂端,這中間的算法必須協同解決這個問題。當然,要明白究竟如何個性化配圖,我們需要收集大量的資料去找尋對使用者來說一張配圖明顯好于其他配圖的信号。

另一個挑戰是去了解當我們給一個使用者推薦某部影片時變換展示多張配圖會有怎樣的影響。配圖的變換是否會使影片的辨識度降低,進而使使用者很難再次從視覺上認出這部影片,比如,使用者之前看到某張配圖覺得有意思,但還沒來得及去看。或是,變換成另一張更有吸引力的配圖使得使用者重新考慮了這部影片。顯然,當我們找到更好的配圖時肯定要更換之前的配圖,但是持續的變換配圖也可能會使使用者産生疑惑。變化的配圖也給問題的歸因帶來挑戰,因為我們不知道究竟是哪張配圖使得使用者對影片産生了興趣。

接下來的挑戰就是去了解同一頁或同一闆塊所展示的不同影片配圖之間會互相産生怎樣的影響。也許用主角英勇的特寫鏡頭作為影片配圖很合适是因為其在衆多圖檔中格外引人注目。但是如果所有的電影都是這樣的配圖,那整個頁面可能就不會很吸引人。是以把每張配圖孤立地去挑選還遠遠不夠,我們需要考慮如何使同一次展現在一個頁面上的配圖變得多種多樣。除了同一頁面上其他影片的配圖可能存在的影響,一張影片配圖的有效性也可能取決于其他對影片的介紹(比如故事梗概、預告片等)。是以,我們需要做出多樣化的選擇,強調使用者對于影片的不同興趣點,使其效果互補。

為了達到有效的個性化設定,我們還需要為每部影片準備一個圖檔集。這意味着圖檔集中的每張圖檔都是能夠吸引人的、有一定資訊量的,并有代表性的而不是“标題黨”。每部影片的圖檔之間也需要有足夠大的差異去吸引有着不同喜好興趣的潛在觀衆。歸根結底,一張配圖的有效性和資訊量其實取決于看到的不同的人。是以我們不僅需要配圖突出同一電影中的不同主題,還需要突出不同的審美。我們的畫家和設計師團隊努力地去創造在不同次元風格迥異的配圖。他們在創作過程中也把個性化配圖挑選的算法考慮其中。

最後的難題是在技術上進行大規模個性化配圖。一個挑戰是使用者體驗是通過視覺的,是以需要大量的圖像。對每個作品進行個性配圖,伺服器要處理峰值每秒超兩千萬的低延時請求。這樣的系統一定要是穩定的:不能快速完整地顯示出這些配圖會很大程度上降低了使用者體驗。我們的個性化算法也需要在新片上映時快速響應,即便是在一無所知的情況下也能快速學習。在此之後,算法需要不斷适應,因為配圖的效果可能随影片的生命周期和觀衆口味的變化而不斷變化。

<b>“上下文老虎機”方法</b>

Netflix大部分的推薦機制都是采用機器學習的算法。傳統方式上,我們會收集一組使用者如何使用我們服務的資料,然後在這組資料上采用一種新的機器學習算法。接下來我們會通過A/B測試的方式測試這個算法與目前的系統進行比較。A/B 測試通過一組随機的使用者資料去測試新的算法是否比目前的系統更好。A組的成員會得到通過現在的系統生成的圖檔而B組會得到新的算法所生成的圖檔。如果B組的使用者在Netflix有更高的轉化率,那我們就會把這個新的算法推廣到整個客戶群。但有一點不好的是,這種方式會産生損失(Regret):許多使用者在很長一段時間内無法得到這種更好的使用者體驗。下圖展示了這一過程:

你看到哪版電影海報,由算法決定:揭秘Netflix個性化推薦系統
你看到哪版電影海報,由算法決定:揭秘Netflix個性化推薦系統

為了降低損失(Regret),我們不再采用批量機器學習的方式,而是考慮線上機器學習。針對配圖的個性化定制,我們采用的線上學習架構是“上下文老虎機”(contextual bandits)。相比于以前等着收集一整批次的資料,等着學習一個模型,然後等着一個A/B測試來得出結論,“上下文老虎機”能針對每個使用者和情境快速找出最優的個性化配圖選擇。簡要地說,“上下文老虎機”是一類線上學習算法,這類算法通過在一個變化的情況下不斷将所學模型應用于每個使用者情景的好處來平衡收集足夠的資料去學習一個無偏模型的代價。在我們之前非個性化的圖檔篩選架構中,我們用的是“非上下文情境的老虎機”(non-contextual bandits),這種方法在尋找最佳配圖時不考慮上下文情境。而對于個性化來說,使用者就是上下文情境,因為我們期望不同的使用者對配圖有不同的回應。

“上下文老虎機”的一個重要屬性是它們天生就能将損失(Regret)最小化。“上下文老虎機”的訓練資料是通過在學習模型的預測中注入受控的随機化變量獲得的。随機化方案的複雜程度可以變化,從具有均勻随機性的簡單ε貪婪公式(epsilon-greedy formulations)到能夠根據模型的不确定性自适應地改變閉環方案。我們籠統地稱之為資料探索(data exploration)。一個影片的所有備選配圖數量和系統部署到的使用者總體大小決定了資料探索政策的選擇。有了這樣的探索,我們需要記錄關于每個配圖選擇的随機化的資訊。這個記錄允許我們修正偏斜的選擇傾向,進而如下所述,用不偏倚的方式執行離線模型評估。

由于實際上有的使用者的配圖呈現選擇可能并不會用那次預測中最好的圖像,是以“上下文老虎機”裡的資料探索一般都是有一定代價的(Regret)。這一随機化對于使用者體驗(進而對于我們的名額)有怎樣的影響呢?對于超過一億使用者來說,資料探索導緻的損失(Regret)一般都很小,而且被隐式地分攤到了我們龐大使用者群的每個使用者,來幫助提供目錄中的一小部配置設定圖的回報。這使得平均每個使用者的資料探索代價微不足道,這對于選擇“上下文老虎機”來運轉我們使用者體驗中的關鍵部分,是一個非常重要的考量。如果資料探索的代價很高,那用“上下文老虎機”做随機化和資料探索就會不太合适。

在我們的線上探索方案中,我們獲得的訓練資料集記錄了對于每個(使用者,影片名,圖檔)元組,其對應的影片是否被播放。此外,我們還能夠控制資料探索使得配圖篩選結果不要改變得太過頻繁。這使得特定的配圖與使用者是否播放影片之間的歸因變得清晰。我們還通過關注使用者參與的品質來仔細地确定每個觀察值的标簽,進而避免學習的模型推薦了“标題黨”圖檔:那些誘使使用者開始播放,但最終導緻低品質參與(很快就關掉)的圖檔。

<b>模型訓練</b>

在這個線上學習的設定中,我們訓練“上下文老虎機”以基于使用者的上下文情境為每個使用者選擇最好的配圖。我們一般對每個影片有幾十個備選圖檔。為了學習一個篩選模型,我們可以考慮這個問題的一個簡化情況,就是為一個使用者對各個影片所有的備選圖檔進行排序。即使是用這個簡化版本,我們依然可以學習到使用者不同影片下的圖檔偏好,因為對于每張備選圖檔,我們都有一些使用者是被展示了圖檔且選擇播放了影片,也有一些使用者是被展示了圖檔但并沒有選擇播放影片。這些偏好可以用于模組化來預測對于每個(使用者,影片名,圖檔)元組,使用者會成為高品質參與者的機率。這些可以是有監督的學習模型,或者是“上下文老虎機”結合Thompson抽樣,LinUCB或貝葉斯方法,來智能地平衡,使資料探索做出最好的預測。

<b>潛在的信号</b>

在“上下文老虎機中”,上下文情境通常作為一個特征向量輸入到模型中。對于這個問題,我們可以用許多信号來作為特征。通常,我們可以考慮許多使用者的屬性:他們已經播放過的影片名,影片的類型,使用者對于特定影片名的互動,他們的國家,語言偏好,使用者使用的裝置,登入的時間段和星期幾。既然我們的算法在選擇圖檔時結合了我們的個性化影片推薦引擎,我們就也可以用其多種算法推薦的影片(并不考慮到底用什麼圖檔來代表)來作為信号。

一個重要的考量是在備選池中,有些圖檔本身就比其他一些要更好。我們觀察了在資料探索中所有圖檔的采納頻率,就是有效播放次數除以圖檔出現的次數。我們之前的非個性化配圖篩選模型就是用圖檔的采納率差異來選擇一個對于整個使用者群最優的圖檔。在我們新的上下文個性化模型中,采納率仍然很重要,而且個性化模型依舊會重獲那些在非個性化模型排序中處于平均水準的選擇。

<b>圖檔篩選</b>

對一個使用者最佳配圖的設定問題其實是在一個影片的可選圖檔池中找到最佳圖檔的篩選問題。一旦模型像上面說的那樣訓練完成了,我們要用它對每個上下文情境中的圖檔進行排序。模型預測了在情境中一個給定使用者看到一張給定圖檔後的影片播放機率。我們用這些機率對這套備選圖檔進行排序,然後選出機率最高的那個。那就是我們展示給那個特定使用者的配圖。

<b>模型表現評估</b>

線下

在模型上線部署于真正的使用者之前我們需要對“上下文老虎機”算法(contextual bandit algorithms)進行評估,我們可以用一個叫做重播(replay)的線下評估方法[1]。這個方法允許我們根據記錄的探索資料回答反事實問題(圖表1)。換句話說,我們能夠線上下比較:如果我們無偏地使用不同的算法,在不同情況下的曆史場景中會發生什麼。

你看到哪版電影海報,由算法決定:揭秘Netflix個性化推薦系統

圖表1:一個簡單的例子,根據記錄的資料計算了重播測試的名額。對于每一個使用者,出現了一張随機的圖檔(第一行)。系統記錄了該次展示以及使用者是否播放了這個影片(綠色圈代表播放,紅色圈代表沒有播放)。一個新模型的重播測試名額是通過比對找到随機安排和模型安排一緻的使用者(黑色方塊)并計算這些使用者中的圖檔采納率得來的。

重播測試(Replay)使我們能夠看到,如果我們假設展示的圖檔是用新的算法而不是已使用的算法得出時,使用者是如何回報的。對于圖檔來說,我們對幾個名額感興趣,尤其是之前描述的采納率。圖表2展示了“上下文老虎機”方法相對于随機選擇或非“上下文老虎機”如何幫助提高目錄中的平均采納率。

你看到哪版電影海報,由算法決定:揭秘Netflix個性化推薦系統

圖表2:對于不同算法,基于重播記錄的圖檔探索資料的平均圖檔采納率(越高越好)。随機方法(綠色)随機選擇一張圖檔。簡單老虎機算法(黃色)選擇最高采納率的圖檔。“上下文老虎機算法”(藍色和粉色)根據上下文為不同使用者選擇不同的圖檔。

你看到哪版電影海報,由算法決定:揭秘Netflix個性化推薦系統

圖表3:基于使用者類型做的上下文圖檔篩選案例。“喜劇”針對的是大多看喜劇的使用者。相類似地,“浪漫”使用者大多看浪漫愛情主題,“上下文老虎機”為傾向于喜劇的使用者選擇了Robin Williams(一個著名的喜劇演員)的圖檔,同時為傾向于浪漫愛情劇的使用者選擇了一張在接吻的情侶的圖檔。

線上

線上下實驗了這麼多不同的模型,并且發現了一些在重播測試(Replay)時有明顯提升的模型之後,我們最終進行了一個A/B測試來比較最可靠的個性化上下文老虎機和非個性化老虎機算法的效果。正如我們猜想的,個性化起作用了,并且在我們的核心名額上表現出了顯著的提升。我們還看到線上下重播測試時監測的資料和線上上模型觀測到的資料間有合理的相關性。線上的結果還産生了一些有趣的發現。比如說,在那些對影片名沒有過先前互動的使用者身上,個性化的提升效果更大。這是合理的,因為我們會期望配圖的展示對于那些不太熟悉這個影片名的使用者來說更為重要。

<b>結論</b>

利用這個方法,我們已經在針對影片推薦和各項服務的個性化配圖篩選上邁出了第一步。這為我們的使用者發現新内容帶來了一個有意義的進步,是以我們已經将這一服務開放給了每一個人!這個項目是不僅關注推薦内容還關注推薦給使用者的方式的第一個案例。但是實際上還有許多機會可以去拓展和提升這個還處于初級階段的方法。這些機會包括:開發盡可能快速啟動的進行新圖檔和新影片的個性化處理算法,例如通過使用計算機視覺技術;擴充模型應用于其他類型的配圖或其他影片描述上(比如影片梗概,诠釋資料和預告片)。還有一個更加寬泛的問題:幫助藝術家和設計師找到應該加入什麼樣的元素以使得一個影片描述更加吸引人和個性化。

如果你對這類的挑戰感興趣,可以在文末留言讨論!對于這類項目,具有機器學習和/或計算機視覺的專業知識的讨論尤其令我們感到興奮。

原文釋出時間為:2017-12-20

本文作者:文摘菌

繼續閱讀