java Windows 程序员 shell 开源 linux Android centos nginx 云计算 Python 编程 微软 mysql google php Firefox wordpress Ubuntu apache

分享實錄 | 第四範式程曉澄:機器學習在推薦系統中的應用

9月20日晚,量子位邀請到第四範式資深算法科學家程曉澄,他以“機器學習在推薦系統中的應用”為題,與大家分享了如何用機器學習來優化推薦系統相關技術問題。

程曉澄是第四範式資深算法科學家、推薦系統服務算法負責人。目前負責邏輯思維得到 APP、海外移動新聞聚合 APP News In Palm 等多個推薦系統的搭建,以及推薦服務功能與架構的設計,用以支撐客戶在各類場景和業務的需求。曾任職豆瓣算法部門,參與了豆瓣 FM 等多個推薦系統的搭建和改進。

此次分享幹貨滿滿,量子位應讀者要求,將分享內容編輯整理如下:

大家好,歡迎參加量子位和第四範式共同舉辦的機器學習線上分享活動,我是今天的主講人程曉澄,今天分享的主題是機器學習在推薦系統中的應用。

e696cb797b8584033323d2a3a4542b2d374646ee

這個話題還蠻大的,我也只是從過往的經驗裏摸出了一條線,所以跟大家分享一下比較宏觀的認識。主要從三個方面來說:推薦系統的誕生土壤和早起演進;推薦系統當下的基本架構;如何搭建一個推薦系統。

b97a1cb4670b3b155968b1b16f47db1b6e767bda

首先講解一下上世紀90年代—21世紀初,推薦系統誕生的土壤。先描述幾個大事件:1995年亞馬遜成立網上書店;1998年Google成立,相當於革新了搜索引擎,從以前目錄檢索式的網站到用戶可以隨意搜索;2004年,《長尾理論》這本神書問世,書中描述了一個長尾概念,簡單來說這個概念就是,如果把世界上的文化產品或者商品做受眾統計,可能頭部是非常龐大的,但尾部也會非常長,雖然尾部受眾人群少,但是這個尾部的所有受眾人群加起來也是一個非常龐大的群體,甚至可能會超過頭部人群。

舉例子來說,亞馬遜當時做了一個統計,50%的銷量來源於銷量排名13萬名以後的圖書;當時類似亞馬遜的一個音樂唱片的網站,50%銷量也來自於當年銷量排名1萬名以後的唱片;以及Netflix最開始做DVD租賃起家的時候,它有20%-30%的銷量是來源於銷量排名3000名以後的DVD。

其實在有長尾理論之前,人們在做生意,尤其是線下實體生意的時候,多是默認二八法則。二八法則的意思就是說,假如一個書店開在海澱區,那麽它的受眾就是整個北京的人,當我們要考慮進一批書的時候,如果有一本書屬於一個特別冷門的領域,那這本書可能沒有幾個人會買,考慮到80%的銷量是由20%的書帶來的這樣一個法則,又考慮到倉儲空間以及店面可展示的空間,那麽店主一定會挑一些熱門的大眾的書來放在店裏。

但是亞馬遜當時就顛覆了這個概念,把全世界的書都放在網上,讓世界上任何一個人都能找到他感興趣的內容,那就直接省去了店面的成本,根據喜好直接推薦給他,這個錢就賺到了。

再舉個例子來說,在當年人們的文化消費渠道還比較少,一個節目的演出成本很高的年代,春晚就是遵循二八法則的狀態,考慮到收視率,所以需要兼顧整個受眾群體。那麽對於春晚的節目來說,80%的人會喜歡,誰都不討厭,那就是一個好節目。那事實上也是,春晚的節目就是歌唱類和語言類節目。但是作為一個觀眾,我如果對這個領域不感興趣,就算是這個領域頂尖的藝術家,比如說宋祖英唱了一個歌曲,或者說小沈陽表演了一個非常多人喜歡的表演類節目,那麽可能,這樣節目的觀感也遠不如我觀看喜歡的小眾的長尾的領域,雖然受眾不多,甚至他不需要是個職業的藝術家,可能表演者只是一個愛好者,但是他創造的內容對我的吸引也遠大於其他節目。

換句話來說,YouTube、土豆等一些視頻網站是比春晚更好的消費平臺。隨著後來互聯網的對發布門檻的降低,發布成本的降低,人人都能夠成為生產者之後,網站內容的銷量、受眾消費,也大部分是它的長尾,這個網站的業務情況很大程度上取決於把長尾分發得怎樣。

bba34e1b9a54ba531fc0508353d7fd0c24880451

接下來看一下早期人們的做法,在2000年及21世紀之初,誕生了一些UGC網站:論壇類的Reddit,問答類的Quora,Stack Overflow,和向人們推薦餐館的大眾點評,每天出一些段子的糗事百科等等。

在2006年還非常早的時候,Facebook做了一版ewsfeed,最開始是通過公式的rank的方式來做的。

上圖的截圖是2012年阮一峰寫的技術博客,他就是枚舉了一些網站,把信息做排序,想把更好的信息排在更前面的一個方法。

從底下往上看,首先是delicious和hacker news Reddit,他們是通過一些加權的做法。右邊的這個截圖是Stack Overflow公布的他們當時的做法,也就是我把一個帖子的瀏覽量做一個log再乘4,加上後面這樣一串公式,回答數乘回答分數再除以5,再加上回答的評分。

這個算是包含了人們的聰明才智以及PM、編輯的一些經驗。PM在跟工程師的溝通中大概會產生這種對話:

PM:“人數多10倍很重要,大概值4分,回答多了多少人,大概和評分人數多了100人是一樣的,你把這個工序排一下。”

底下這個分母是說,我帖子越新,得分越高。同時又有一個指標是,這個帖子最近一次更新越新,他的得分越高。這樣就避免了這種情況:這個帖子非常熱,但是已經很久沒有更新過了,那麽它只是當時很火,沒有持續性的熱度。

再往上看這個牛頓冷卻定律,大概也是描述這種根據時間衰減的方式。他的原理大概是牛頓觀察了一下一杯熱水以什麽速度逐漸降到室溫的這樣的物理上的描述。

然後威爾遜區間和貝葉斯平均大概是說,對於一個帖子,有頂的人也有踩的人,判斷這個帖子好不好,未必是用頂的數減踩的數得到的絕對值,更好一點的方法是看一下頂踩的比例,當頂和踩都很少的時候,置信度是不夠的,所以就引入了一個區間,更加宏觀地來評價這個帖子。

257607610ad9e2c66c96b103c6c4da3c4b435562

然後說一下Google以前給搜索結果排名的一個方式:PageRank,其實就是用一個公式去衡量什麽是好的網站。思路比較像論文的引用,就是說一篇論文被引用得越多,那麽可能它影響力更大,越被人們相。進一步推就是,我的論文被引用,得分會更高。

在互聯網世界裏,Google把它抽象成一個圖,相當於所有的網站都是用超級鏈接鏈起來的,每個網站會把自己的得分,比如說我的網站有10個鏈接,就會把得分分成10份投給別的網站。右側這個公式,意思是最右側這個R是網站的初始得分,可能每個都是1/N,然後乘這個鏈接矩陣,這個矩陣就是把它的評分分到了每個網站上,隨著這個矩陣不斷地乘下去,可能就會出現叠代的投票的效果,最後會得到一個排名。

這個思路還有需要優化的地方。在互聯網世界中,可能有那麽幾個部分是割裂的,比如說可能有一個網站,並沒有指向任何別的網站,也沒有別人指向它,那它的得分可能就是1/N,從頭到尾都沒有被更新,但這樣其實是不合理的。所以就給他加一個隨機化,用剛剛投票的方式來說,假設初始在任意一個網站上的概率其實是1/N,那麽下一步用戶會移動到哪個網站?先假設所有的鏈接都是等價的,比如說有5個鏈接,你就有五分之一的概率去移動到下一個網站,隨著這個矩陣連通下去,其實描述的是你點擊任意一個隨機網站,最後會停留在哪兒的這樣一個概率分布。

從遊走的概念來說,一個用戶不見得是一直一個鏈接接一個鏈接點下去,他有可能隨時停掉,隨機跳到新的網站,重新開始。他跳走的概率有多少呢?就是這個(1-d),所以用另一種方式理解這個rank就是,類似一個隨機行走的馬爾可夫模型。

這個rank也是取得了非常大的成功,每一期都更新一次,也成了當時互聯網網站去描述自己的網站做得多好,推廣有多成功的一個權威指標。

53573d1e8d21cc83e88e21b546f3d320b852286c

下面介紹一下亞馬遜電商網站是如何做推薦的。

它是應用了一個叫“協同過濾”的概念,就是說通過無數網民在互聯網點擊消費的行為,然後去挖掘、猜測每個人會喜歡什麽。挖掘的信息來源就是上述的評分矩陣,豎行是網站上所有的商品,橫行是網站上的用戶,每個用戶對一個商品有一個打分,沒有打分就是零。

做一個假設,如果是用戶買過商品,很大可能會消費相似的商品,什麽樣的商品是相似的呢?就是用這個評分矩陣來刻畫,如果兩個電影的評分在一個用戶或者說很多用戶評分裏都是一致的,這兩個向量相似的話,那麽說明用戶對它的喜好是一致的。這個相似程度則是通過比較常用的CosSim的方式推算出來。

先說一下這個user based recommendation,這是另一個假設,就是說我們生活中會發現有些跟我們口味相似的人,在很多事情上的見解一致,那如果他喜歡一個電影,但是這個電影是我沒看過的,那麽其實大概率上我也會喜歡。如果我身邊有一群這樣的朋友,他們的口味跟我的相似程度不一致,有比較相似的有非常相似的,他們來做一個加權投票的話,他們投出來高分的電影很可能也是我非常喜歡的。

那其實可以看出來對於一些口味很相似的用戶,對一個item的評分做一個加權平均,就預測出了這個用戶沒看過的電影,他是不是喜歡。

用戶相似度有很多計算方法,最簡單的是點擊率的相似度,假如這個電影我們都喜歡,相乘會得到一個比較大的分,反之就會得到一個比較小的分。我跟這個用戶分別用兩個評分向量相乘就是一個刻畫。但是如果兩個用戶的口味是很相似的,但是一個用戶喜歡用1234這麽打分,但另外一個用戶平常打分習慣是他的兩倍,如果用上這個點擊率公式,那麽結果也是兩倍。所以需要做一個歸一化,用CosSim的方式,就能得到一個更加一致的結果。

其實還有別的打分方式,比如說一個用戶對所有的打分都是偏低的,1234的評分,另一個用戶是2345的評分,其實他們的口味和傾向是一樣的,這個時候就能用一個pearson來把每個人的得分先減去他日常打分的均值,低於均值是負分,反之是正分,用這個pearson來計算相似程度,用這個相似再得到跟我最相似的朋友,以及這些朋友喜歡什麽。同理,如果我把item到user的評分當成一個向量的話也可以做相似操作。

fbb2ae7f2f37e5f06a592820adc303a725b7ce5e

但是我們會意識到,前面這個一系列的方式是有問題的,來自於寫死的公式,來自於假設的抽象的,但衡量這個抽象的計算方式已經是最好的,可還是有問題的。

一個用戶喜歡A,那麽他就一定會喜歡跟A相似的東西嗎?答案是未必。一個用戶的行為模式真的可以用跟他口味相似的其他用戶的行為來歸納嗎?也未必。在這個向量中,每個item、或者每個user的權重,從公式表達來看都是一樣的,但可能未必結果就是正確的。

比如說有的用戶是權威用戶,他的打分具有一定的原因來解釋,有的用戶是則憑心情打分,心情好打分就高,那這個用戶表達的信息顯然跟前一個不一樣。每一個類別的物品表達信息含量也未必一樣,比如在豆瓣,如果是動畫片,那麽可能會都會有偏高的分,如果是歌舞片,即便片子本身沒有什麽道理,只是整個劇情比較歡樂,最後人們也會傾向於給比較高的分數。甚至說有的片子本身就具備了選擇觀眾的屬性,會去看這個片的人就會驚人地一致,打出高分或者低分。

所以這個假設未必準確,一個用戶未必就喜歡點擊率高的網頁,有的用戶可能就是喜歡過往沈寂很久的老帖子,也可能有的用戶看電影就是根據導演來選的。

但是這些方式一定是比隨機要好的,畢竟有一定道理。但是最好的情況還是,我有一個更豐富的選擇和假設,每個用戶有自己的行為邏輯,讓評分的方式能夠捕捉到他,並且根據每個用戶喜歡什麽不喜歡什麽,自己能夠去進行修正和反饋。

26a5ae6c55626fdd072e013d48a6edd6e9762269

那麽這就說到機器學習的概念,機器學習在裏面大概就是假設這個世界裏有一個真理,這個真理做的事情就是f,我根據當前的情況,這是個什麽樣的人,今天天氣怎麽樣,這是個什麽樣的內容,這些種種情況,推斷出這個人是不是喜歡這個item。

我們不知道f具體是什麽,我們只是找到一個最終的假說。這個hypothesis也就是這個g希望盡量接近f。這裏面有很多組數據,也就是很多組(x,y),然後有一個假設空間,是H,通過一個算法,在A中搜索到一個最接近f的g,搜索一般會定義一個損失函數,來衡量這個輸出,也就是g(x)是否足夠接近於結果Y,也就是f(x),他們越接近這個效果越好,然後在這個空間,還會有一個算法,去不斷優化這個g,使他越來越接近f。

04fbf04602c0a068bc5d4fe8609547f0a998d1d5

舉個例子來說,這個f(x)我們不知道是什麽,那我們可以想象他是一個公式,比如Y=ax1+bx2+c,再定義一個損失函數cost,Y減去我們做的這個預測的誤差的平方,就是個正數,誤差越大,這個平方越大,也就是我們的預測不準。

有一個算法去優化這件事,盡量使cost小,產生出g,打個比方來說,g(x)=3x1+4x2+2,這種方式,可以Y定義成點擊或不點擊,看一個電影的時長,也可能是看一個電影給的評分,也可能是量化用戶體驗和營收的一個方式。

e69bd40a56a91f3d5ee68a7daf36263753b2fc02

在這種機器學習的方式下,誕生了更多更好的推薦方式,大概在2006、2007年之前,還是普遍應用之前講到的協同過濾的方式來做推薦,2006年Netflix設立了一個獎項,說誰能把點擊率提高10%,就能拿到100萬美金的獎賞,這個獎大概在一年後就被人拿到了,而用這種方法就是機器學習中矩陣分解的方法。

這種方法就是說,首先要定義什麽是Y,這個Y就是預測用戶對一個東西的評分。這個預測過程就是已知用戶ID和item ID,然後預測評分,預測越準,提升的效果越大。

這個做法是:把這個事情抽象出來,用電影來舉例,每個人都有自己的喜好,比如喜歡動畫片,喜歡到什麽程度,是不是喜歡驚悚片,更喜歡嚴肅的電影還是輕松的,英文還是中文,把用戶喜好展開成100維、200維,甚至更多的維度。而同樣的一個電影有自己的屬性,把用戶喜好和影片屬性相乘再加起來,得到一個總分,就是用戶對這個影片的喜好程度。再定義一個損失函數的計算方式,也就是這個真實的評分減去預測出來的評分的平方,加上一些優化引導的東西,去小化這個值,算出來了每個user和每個item有一個隱含的喜好和特征的向量,從而得到一個預測的結果。這個結果比之前的結果準確率提高了10%,這也成了新一代內容推薦的標桿。

1531ac9d146296a8e5def333d84f3308065a1004

但其中也是存在問題的。

我們看到這個預測中只是用到了user ID,item ID,和每個老用戶歷史評分,難道一個新的內容和新的用戶就無法刻畫了嗎?比如說一個導演新拍了一個電影,根據他過往的表現,就可以從一定程度上預測出來什麽人會喜歡,他的評分會怎樣。

如何利用到更多的信息,也是提高推薦效果的一個方式。

我們想象一下現實生活中是怎樣的。看一下上面這張圖片,圖中是一位女士,在一個服裝店,導購在第一眼看到他的時候就會做一些判斷:顧客有沒有男朋友,帶男朋友可能花錢更多;當前的季節是什麽,秋天的話會買厚衣服;店鋪的位置,是在CBD還是五道口;觀察用戶其他信息,身上穿的是什麽牌子,同樣牌子可能更有效;他拎了一個什麽包,表現了這個顧客的消費能力;這個顧客以前有沒有在店裏買過東西;進店以後是不是盯著一個東西在看,還是隨便看看。以及導購員需要對每個商品有豐富的了解:這個商品過往被什麽人買,款式、面料是怎樣的,有沒有什麽故事可以講,是不是打折等等。

08fce1e666f7e875f70ae713adce9fb91d4f4502

這些更多的特征可以註入到機器學習這個算法模型中,去提供更多的選擇,也就是我們提供了更多的空間,這個空間就不限於之前的評分公式,不限於之前的rank方法,不限於之前興趣維度的預測指標。可以把更多更豐富的信息放進去,包括用戶的信息,商品的信息,當前的一些信息比如天氣,最近的情況,用戶之前買過什麽等等。

每一種信息都對應了一種猜想,哪一種猜想會發揮作用,哪一種猜想的權重更高,都可以用數學的方法去訓練和學習。機器學習裏監督學習的預測引擎也就成為了廣告投放、搜索排序、電商、內容推薦領域的核心引擎。也從之前的一個選做題變成了一個必做題,甚至變成了直接衡量推薦做得怎樣的一個核心指標。

6775ee62e91bc765463867671fed7853d1be9cae

現在說一下推薦系統的一個典型架構,大致是三塊:召回、排序、生成推薦列表。

我們剛才介紹了推薦的預測模型,那麽是不是能直接用它直接做一個好的推薦呢?不是,現在數據的候選集都是百億級千萬級,這些海量信息,通過一個一個去算出一個很精細的結果,時間成本非常高。

就比如說我們公司要招聘5個人,如果收到1000個簡歷,面試雖然是個不錯的方式,但是如果面完,顯然是不可能。一般我們都會先用種種方式,來篩選出一些比較優質的人來面試,可能是根據以前工作的行業,學校、業績等等指標進行排序,最終得到一個順序,按排序結果得出最好的十個二十個,再邀請其中傑出的幾個人來面試。

ef1cec4f31d906a70939f6af1fd29c462130737c

首先第一步,怎麽來做初步篩選,我們需要盡量用一個效率高的方式來進行初篩。最簡單的方式是排序召回,召回比較新的比較熱的內容,離這個用戶比較近的內容。可以應用的信息比較少的一些簡單模型,沒有線上排序模型那麽大,但是他的計算效率比較高;也可以做一些規則召回,比如說今天陰雨天,用戶可能買傘,比如利用近期瀏覽,甚至他的關系,他的朋友買了什麽等等。電商的推薦網站為了獲取最好的推薦方式,不斷嘗試各種規則,甚至可能比你男朋友想得更細。

cd19203a5bae4e914d81196a7b49462846f21842

然後在排序這個階段,之前也提過考慮更多的因素,比如秋天到了,是不是該推薦更多的應季的商品;用戶現在用的是4G網,是不是有可能更愛看短的文本內容;用戶在APP上很活躍,有很多行為序列,那他的這些序列是不是會有一個行為的遷移,或者這些社交關系能不能帶來什麽支持。

17d7052b433b86f662061cf80a0d6145ae52f817

現在這個比較前沿的排序模型就是這個wide&deep models,同時結合了寬跟深的一種方式。首先所有的特征通過寬的方式註入到這個模型,以及一些比較難提取的特征,比如被推薦內容的圖片信息,可以通過CNN去算出特征屬性;文字信息可以通過Word2vec去得到屬性;用戶的觀看、收藏、購買、搜索序列可以通過embedding的方式去算出來。當然這些模型是每個都會輸出一個預測值,但我們一般都會退一層,用前一層的信息來做決策,比如說,我們有三個面試官,分別面一面二面三面,他們的輸出是一個簡單的分,通過或者不通過。但可以讓面試官們把這個打分更加細化,比如說工程能力怎麽樣,學術能力怎麽樣,他來公司的意願有多強。把這些信息用得更豐富,這個模型可能會得到一個更好的結果。

bfd166163b28e1d20c3241e26cdec491be43953e

這個模型是否還要去被輸出呢?也不是。

就像一個用戶在餐館,每次吃完飯都能得到一個評價,通過模型訓練可能發現這個人最喜歡吃排骨,那麽通過這個排序,排名前十的可能就是紅燒排骨、糖醋排骨、清蒸排骨、排骨湯等等,但是顯然這麽一桌菜擺上來用戶的體驗很不好。

作為推薦系統來說也是,我們希望結果盡量多樣化,這個用戶最喜歡的領域是足球,最喜歡梅西,凡是梅西的話題必點,但是我們也不可能只推薦梅西的內容給他,那他可能就這個系統絕望了。用戶還是希望看到多樣化的內容,時政娛樂軍事都需要。從體驗上來講,也要權衡,是著重挖掘,根據現在已知到的用戶喜歡的內容不斷去展現;還是要考慮到給用戶展現不同內容,來收集他其他的領域的一些偏好。雖然會有推薦用戶不喜歡推薦內容的風險,但其實也有可能收獲到用戶喜歡的一個新領域,那我們之後的推薦選擇面會更廣,用戶體驗也會更好。除此之外,這個推薦系統,在準確性、多樣性和新穎性上也需要有一定的權衡。

91655984703c47bbd3f0706420df9bf3e5ba0cbc

下面來說一下,實現這個推薦系統的架構,需要怎麽做。

首先,線上請求發生的時候我們需要做哪些事情。我們需要從整個候選集中通過多種規則去選擇,然後選擇完需要過濾,篩掉用戶已經看過的不喜歡的,再進入排序,再通過模型獲取參數來做一個計算,最後根據一些規則,多樣化去重去生成一個列表。有可能通過這個過程產生的結果還不夠一次展示,就需要倒回去用更大的召回範圍來豐富內容。在整個流程中,考慮到用戶體驗,需要把完成時間控制在200毫秒100毫秒以內,這還是一個蠻強的工作挑戰,需要不少的優化工作。

fb62c383eadfffbd01cc52210878d0cee0e1b223

為了讓這個機器學習模型獲得足夠豐富的數據,還要搭建一個線下數據流的閉環。最開始首先要有一個全部候選集信息存儲的一個表格,來根據這個表格做搜索,然後線上去實時地做記錄最後做拼接。

然後我們做一個推薦的時候,我們要把這個用戶特征和物品特征做一個拼接。當用戶點了是否喜歡或者選擇購買,或者關閉,刪除等等一些操作後,會把用戶行為反饋到之前的生成特征上,然後把這些特征整體送入到這個模型中去進行訓練。

2397fa9f1ad1febd2501a2aa023ebaeb3791c2f4

這整個系統,是需要能夠快速叠代,快速回應產品和性能上算法上要求,需要更多的進步和進化。

有一句話是說“一個象棋大師會被一個每回合走兩步的業余選手輕松擊敗。”就是說哪怕想得再精確,目標再對,如果走得非常慢的話,也是會被別人進步的步伐甩開。

我們這個架構也是,如果產品的需求來了,就需要非常快地從推薦結果中顯示出來。如果模型更新沒有這麽快的話,能不能用其他的策略或者通過其他的規則顯示出來。以及模型需要更新,盡量做更多的實驗,去收集這個數據,然後做出更好的選擇。

095528441b085238056ef312fb2031b405544710

機器學習這一塊還有很多挑戰。首先是速度,數據的增長是不受技術控制的,尤其是產品成功之後,會有更多的用戶、更多的數據和更多特征,如何在有限的時間內完成模型訓練更新是機器學習計算框架最大的挑戰之一。

用到這麽多的特征,用更復雜的模型,效果提高了,那麽這些效果和成本之間如何平衡和取舍也是一個問題。

還有專門針對機器學習任務優化的計算框架。

另一個問題是從可擴展性來說,業務增長的速度不僅是量的增長也可能是維度增長,比如說我們擁有了更多的用戶種類,更多的內容種類,以及特征的增長同時也都是帶來了更大的挑戰。

這個公司從小到大,適合的是不同的推薦模式;一個公司變成了一個更大的公司,有了足夠多的數據比例,更多的數據其實能夠允許我們建立更復雜的模型,去輸出更好的結果,如果充分利用了這些數據,那麽這個推薦結果也會成為一個更大的壁壘。換句話說,如果跑得足夠早,僅僅依靠這個壁壘,別人也很難追上你。

554ae23f192e9087ae78d3f699bbaffa8327edd2

機器學習在研究上也有這麽幾個優化方向。

比如說我們優化的是y=f(x)這件事,那我們能不能收集到更好的y,比如說更好的產品形式和交互設計,能讓用戶更加無負擔地給出一個真實的反饋,甚至能不能有一個更革新的產品形式,讓用戶和推薦系統的互動更加融合。

從X的角度來說,有更多的特征種類可以利用,比如被推薦內容的圖像、音頻、文本特征、session特征,我們有了更多特征,做特征組合和特征變換,如何得到一個更優質的X,以及如何去豐富我們的假設空間,我們如何去抽象我們要處理的問題,去設計與它相匹配的優化算法,這些都是未來的優化方向。

Q&A

能不能具體講一下真實業務場景中常用的推薦算法模型,或者給一下具體paper的名字?以及現在主流推薦算法是什麽?

一個現在最主流的也是一個很古老的算法,就是邏輯回歸。

現在比較前沿的應用,可以搜一下ftrl和lr兩個關鍵詞,是Google在落地回歸上做的一些更新的嘗試,現在基本上所有做廣告推薦,以及一些做內容推薦的場景都是用lr,因為它能用到極其豐富的特征,它的模型特點是:簡單的一個線性模型,但是模型的並發性能非常好,而且在並發訓練的實踐上已經有了一些非常深的積累。

對於一個新用戶,也沒有其他的用戶的交互信息,一般是怎麽來對其做推薦的?

首先任何一個用戶其實都不是全新的,他其實到這個網站,都有一些原始信息。比如用戶使用的是iPhone還是安卓;用的是電信還是網通;GPS是在什麽位置,他在這些信息裏面就包含了一定量的人群刻畫信息。那再組合一下,如果識別到這個人是在五道口,在用WiFi和校園網,那麽極大可能這就是一個在校學生,在宿舍或者教室上網。那這樣的人群可能在你的瀏覽和點擊喜好上一定有統計特征,把這些特征組合起來,大概就能識別某一些人群刻畫的特征。

再比如從社交網站,比如用微博登陸,把它關註的人群和你要推薦的內容綁定在一起,也許就有不錯的效果。

深度學習在推薦領域有什麽應用?

在有一些場景下能夠拿到的信息是非常少的,比如說一個直播推薦,這個主播是一個新主播,沒有歷史的數據,在註冊的時候也沒有填什麽信息。這樣的話手上對於用戶的信息就很少,那現在你只能去主動挖掘一些他沒有提供,但是你能收集到的信息。比如他的頭像,能不能識別出顏值,比如直播過程中的背景音樂,從圖像來看是打遊戲還是美妝還是跟我一樣在講PPT,都能識別出一些信號。或者說如果是一個新聞推薦,而收集到的類別信息又不夠多的話,可以從文本信息中去提取到類別和關鍵字之類的,那這些用到的就是深度學習的方法。

對於物料更新比較頻繁的應用,比如新聞推薦,ID類特征是否能提升效果?

這個內容剛剛出現在推薦平臺上的時候,是沒有任何歷史信息,但是我們其實有幾種維度的方式來解決。從能提供的來講,把現有的用戶分成幾群,甚至把信息掌握已經非常豐富的用戶給他做一個聚類,生成十幾二十個群,再把一個新的內容做一個隨機分發,比如說UCB或者其他方法收集一些不同類型用戶的反饋,就能得到一個信息,這個新聞ID更適合哪種人群,然後再用這種比較粗糙一點的規模去做一個分發,度過這個分發初期之後,如果這個模型支持線上學習的話,可能一個小時或者30分鐘之後你的模型就能把這個ID類信息訓練出一個更好的推薦結果。

延伸阅读

    评论