這裡是「王喆的機器學習筆記」的第二十篇文章,之前的專欄文章更多從技術的角度講解了推薦系統模型的主要結構,以及Embedding等深度學習

推薦系統的主要技術點。今天這篇文章我們希望討論的是,「除了推薦系統模型結構等技術要點,有沒有其他更重要的影響推薦系統效果的要素?

有解決推薦問題的「銀彈」嗎?

在很多同行發給我的諮詢問題中,經常會被問及哪種推薦系統模型的效果會更好。誠然,推薦系統模型結構對於最終的效果來說是重要的,但真的存在一種模型結構是解決推薦問題的「銀彈」嗎?

要回答這個問題,我們可以先分析一個模型的例子——阿里最新的推薦模型DIEN(Deep Interest Evolution Network 深度興趣進化網路),圖1 是阿里DIEN的模型架構圖。

圖1 阿里的CTR預估模型 DIEN

如果去掉架構圖中彩色的部分,模型其實是一個加入Attention機制的經典深度學習網路。而彩色的部分就是所謂的興趣進化的過程。首先基於行為層(Behavior Layer)的用戶行為序列,在興趣抽取層(Interest Extractor Layer)抽取出抽象的用戶興趣,再在興趣進化層(Interest Evolving Layer)利用AUGRU序列模型模擬興趣演化的過程。

模型提出以來,有不少同學向我提出過類似問題說

王老師,我們應用了阿里的DIEN模型,但效果不好,你覺得會是什麼原因?是不是Embedding層的維度不夠,是不是應該再增加興趣演化層的狀態數量?

所有問類似問題的同學都默認了一個前提假設,就是在阿里的推薦場景下work的DIEN模型理應在你的應用場景下同樣work。然而,這個假設真的合理嗎?DIEN模型是推薦系統領域的「銀彈」嗎?

答案必然是否定的。做一個簡單的分析,既然DIEN的要點是模擬並表達用戶興趣進化的過程,那模型應用的前提必然是你的應用場景存在「興趣的進化」。阿里的場景非常好理解,用戶的購買興趣的確在不同時間點有變化。比如用戶在購買電腦後一定概率會購買電腦周邊產品,用戶在購買某類型的服裝時會一定概率選擇搭配的其他服裝,這些都是興趣進化的直觀例子。

DIEN在阿里場景能夠work的另一個原因是用戶的興趣進化路徑能夠被阿里的數據近乎完整的保留。因為作為中國最大的電商集團,阿里巴巴各產品線組成的產品矩陣能夠幾乎完整的抓住用戶購買興趣遷移的過程。當然,用戶是有可能去京東、拼多多購物從而打斷阿里的興趣進化過程,但統計意義上,大量用戶的興趣進化過程還是可以被阿里的數據體系捕獲。

所以DIEN有效的前提應是你的應用場景滿足兩個條件:

  1. 應用場景存在「興趣的進化」;
  2. 用戶興趣的進化過程能夠被你的數據完整捕獲到。

如果二者中有一個條件是你不具備的。那麼DIEN大概率在這樣的場景下不會帶來較大的收益。

舉個例子來說,筆者是做流媒體平台推薦系統的,用戶既可以選擇我們自己的內容,也可以選擇看Netflix、YouTube或者其他流媒體的內容(圖2是流媒體平台不同的頻道列表)。而一旦用戶進入Netflix或者其他第三方應用,我們是無法得到應用中的具體數據的。在這樣的場景下,我們僅能夠獲取到用戶一部分的觀看、點擊數據,抽取出用戶的興趣點都是不容易的,談何構建用戶的整個興趣鏈條呢?即使勉強構建出興趣鏈條,也是錯誤的興趣鏈條。

圖2 流媒體平台的不同頻道

在這樣的應用場景下,DIEN適合成為我們推薦系統模型的主要架構嗎?答案是否定的。我們通過實驗也證明了DIEN在此場景下容易產生過擬合。如果在此場景下仍把模型效果不佳的主要原因歸咎於參數沒調好、數據量不夠大,無疑有捨本逐末的嫌疑。相比這些技術原因,首先理解你的用戶場景,熟悉你的數據特點才是最重要的。

什麼才是比推薦系統模型結構更重要的東西?

到這裡,我們也基本可以給出開頭問題的答案了——在構建推薦系統模型的過程中,從應用場景出發,基於用戶行為和數據的特點,提出合理的改進模型的動機才是最重要的。

換句話說,推薦系統模型的結構不是構建一個好的推薦系統的「銀彈」,真正的「銀彈」是你對用戶行為和應用場景的觀察,基於這些觀察,改進出最能夠表達這些觀察的模型結構。

我們用三個例子解釋一些這句話。

一、Netflix對用戶行為的觀察

去年我參加Netflix的RPS workshop,Netflix在做一項推薦系統的改進,就能夠很好的體現Netflix對用戶行為的觀察。

眾所周知,Netflix是美國最大的流媒體公司,其推薦系統會根據用戶的喜好生成影片的推薦列表。除了影片的排序外,最能夠影響點擊率的元素其實是影片的海報預覽圖。舉例來說,一位喜歡馬特達蒙的用戶,當看到影片的海報上有馬特達蒙的頭像時,他點擊該影片的概率會大幅增加。Netflix的數據科學家在通過AB Test驗證這一點後,著手開始對影片預覽圖的生成進行優化(如圖3),以提高推薦結果整體的點擊率。

圖3 Netflix不同預覽圖的模版

在具體的優化過程中,模型會根據不同用戶的喜好,使用不同的影片預覽圖模版,填充以不同的背景、字體。通過使用簡單的線性contextual bandits探索與利用模型來驗證那種組合才是最適合某類用戶的個性化海報。

在這個問題中,Netflix並沒有使用複雜的模型,但CTR提升的效果是10%量級的。遠遠超過改進推薦系統模型結構帶來的收益。這才是從用戶和場景出發解決問題。

二、觀察用戶行為,在模型中加入有價值用戶信息

再舉一個例子,圖4是某Smart TV的主頁,每一行是一個類型的影片。但對於一個新用戶來說,是非常缺少點擊和播放這類正樣本的。我們能否找到一些其他的有價值的信息來解決數據稀疏問題呢?

圖4 捕捉包含關鍵信息的用戶行為

這就要求我們回到產品中,把自己置身於用戶的角度去理解這個問題。這時你不難發現一個非常有價值的信號。針對這個用戶界面來說,如果你對某個類型片感興趣,必然會向右滑動滑鼠或者遙控器(如圖4中紅色箭頭所指),去找這個類型下面更多的影片,這個滑動的動作很好的反應了用戶對於某類型影片的興趣。

引入這個動作,無疑對構建用戶興趣向量,解決數據稀疏問題,進而提高推薦系統的效果有正向的作用。而引入更多有價值信息帶來的收益也遠遠高於改進模型結構。

三、阿里DIN模型的改進動機也源於用戶行為的觀察

最後一個例子我們回到阿里的推薦系統模型,大家知道DIEN的前身是DIN(深度興趣網路)。DIN的基本思想是將attention機制跟深度神經網路結合起來(如圖5所示)。

圖5 阿里的DIN模型

簡單直觀的來說,DIN在經典的深度CTR模型的基礎上,在構建特徵向量的過程中,對每一類特徵加入了一個激活單元(Activation Unit),這個激活單元的作用類似一個開關,控制了這類特徵是否放入特徵向量以及放入時權重的大小。那這個開關由誰控制呢?它是由被預測item跟這類特徵的關係決定的。也就是說,在預測用戶u是否喜歡商品i這件事上,DIN只把跟商品i有關的特徵考慮進來,其他特徵的門會被關上,完全不考慮或者權重很小。

舉例來解釋DIN的工作原理,比如模型希望預測一個用戶喜不喜歡看「復仇者聯盟」,在構建用戶的特徵向量的時候,我們希望參考一下用戶有沒有看過「美國隊長」的歷史記錄,但我們完全不關心用戶看過沒有「動物世界」,因為加入「動物世界」這類跟「復仇者聯盟」不相關的特徵,可能會讓用戶的特徵向量喪失特殊性。

那麼阿里媽媽的工程師能夠提出將attention機制應用於深度神經網路的想法是單純的技術考慮嗎?

在跟論文作者交流之後,我發現他們的出發點仍然是用戶的行為特點,因為天貓、淘寶作為綜合性的電商網站,只有跟候選商品相關的用戶歷史行為記錄才是有價值的。基於這個出發點,引入相關商品的開關和權重結構,最終發現attention機制恰巧是能夠解釋這個動機的最合適的技術結構。

在我之前專欄文章的討論中,DIN兩位原作者、阿里媽媽的lead 蓋坤, @朱小強 也肯定了這樣的出發點。這裡附上二位的留言,以供大家參考。

如果演算法工程師們真的把自己當作一個「調參師」,「鍊金術士」,僅僅專註於是否加dropout,要不要更改activation function,需不需要增加正則化項,修改網路深度和寬度。是不可能做出真正符合應用場景的針對性改進的。

結語

很多業內的朋友都說做CTR模型、做推薦系統就是「揣摩人心」,這句話我不能說完全贊同,但卻也一定程度上反應了這篇文章的主題——從用戶的角度思考問題,構建模型

當你已經有了幾年工作經驗,對機器學習的相關技術已經駕輕就熟了的時候,反而應該從技術中跳出來,站在用戶的角度,去深度體驗他們的想法,去發現他們想法中的偏好和習慣,再用你的機器學習工具去驗證它, 模擬它,我想你會得到意想不到的效果。


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

  • 在實踐中,你認為改進模型結構和理解用戶行為哪個更重要,他們的關係是什麼?你有沒有過前沿的、複雜的模型不起作用,反而使用簡單模型,甚至是非機器學習的方法解決優化問題的例子?歡迎分享你的經驗。

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

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

推薦閱讀:

相关文章