優酷視頻基于用戶興趣個性化推薦的挑戰和實踐
一、個性化服務在優酷
本文將介紹一下優酷個性化搜索推薦的服務,優酷在視頻個性化搜索推薦里用戶興趣個性化表達碰到的挑戰和問題,當前工業界常用的方法,以及我們針對這些問題的嘗試。
首先優酷已經非常大量的全面的采用了大量的個性化的搜索推薦技術,今天優酷為幾個億用戶提供的服務是全面的,千人千面的個性化服務。在優酷的首頁,所有用戶看到的內容、推薦的內容都是根據用戶個性化的興趣匹配的完全不一樣的內容。在優酷各個垂直頻道,像電影頻道、綜藝頻道,也完全采用個性化技術做分發。優酷有大量短視頻,優酷短視頻信息流的場景,也是大量的采用個性化技術在做分發。優酷的用戶和內容都用大量算法做匹配。
今天優酷有多一半視頻播放是通過個性化搜索推薦技術做分發的,個性化搜索推薦技術對于優酷CTR,包括人均播放量,人均時長,留存率都有非常大的提升;更重要的是個性化的算法對于幫助用戶發現好的內容,幫助互聯網優質內容可以精準觸達適合它的受眾,在這一點上是貢獻更大的,可能比單純看CTR提升多少,或者人均播放量提升多少更重要。而且有時候幫助用戶發現好的內容和幫助好的內容觸達用戶,有時候并不適合簡單的業務指標,像CTR、人均播放量不一定是一致的,所以怎么把用戶的興趣識別更準,怎么把內容推送的更準,這個事情比單純的關注點擊率、人均播放量提升更重要。
二、視頻推薦里個性化興趣表達的挑戰
做視頻個性化的興趣的識別還是有非常多的挑戰。
第一,優酷業務模式最核心的重點是一些頭部內容,像電影、電視劇、綜藝、動漫這些核心的頭部內容,頭部內容用戶的選擇成本特別高,用戶要追幾十集電視劇的話,它要考慮很多問題,很難真正選擇開始追一個劇或者一個綜藝,所以推薦的成功率往往偏低的,比較困難能夠讓客戶真正推薦方式追一個劇。用戶來使用優酷服務的時候目的性往往是比較強的,他帶著比較強的比較精準的意圖過來,發現和瀏覽逛的心智偏低。
第二,長視頻的節目選擇空間往往比較有限,算法更適合分發大量的長尾的內容,但是對于優酷這樣的場景,選擇空間有限的情況下,怎么把推薦這個事情個性化的服務做得更好,這也是比較大的挑戰。
第三,頭部節目用戶行為往往是比較稀疏的,很多頭部節目有大量的用戶是不夠活躍,每個月只有小于三個視頻播放的行為。如果再看優酷短視頻信息流的場景,用戶可能有幾百個行為。同樣一屏會推薦比如30個,在短視頻的場景可能對這個用戶的了解是幾百個觀看行為,我推薦30個,但是長視頻頭部的節目里我只知道用戶看過三個相關的視頻,三個頭部的視頻,要推薦30個節目,所以是兩個完全不同的問題,可能需要完全不同的做法,完全不同的模型和算法去解。
另外數據的噪聲很多,數據的分布往往比較趨熱,傳統常見的模型甚至復雜的DAN的模型往往效果不好,因為數據的分布噪聲非常大,數據的稀疏性比較大。從數據本身角度來看,視頻的興趣非常感性和微妙的,非常復雜,我們剛剛開始做優酷個性化服務的時候,一開始想把電商很成功的做法和系統搬過來,發現會碰到很多問題。對比一下電商,用戶的興趣非常簡單明確,我想買一個電視或一條牛仔褲是非常明確的,他的意圖是高度結構化,比如類目體系非常清晰,但視頻是非常感性和微妙,比如有些用戶喜歡武俠片,但是并不喜歡成龍這一類的武俠片,他是存在某種非常復雜的因素在里面。而且視頻內容的興趣往往是非常動態的,不是靜態的,不斷的演進,不斷的發展。比如科幻的興趣,有的是輕度科幻,也有中度的,也有重度的,是逐漸發展過來的。很多時候用戶視頻的內容興趣還體現了很多亞文化的角度,比如二次元的角度,比如文藝青年,這些角度用戶的觀看興趣是不同的。有時候用戶視頻興趣體現用戶個人的認同,視頻維度非常多樣,非常正交,越來越細分和多樣化。比如我們有時候看一些案子,發現有的客戶什么類型都看,也會看魔幻,也會看動作片、武打片,也會看新的,也會看幾年前。后來發現他看所有的東西都是大制作,都是制作成本很高的,大制作可能也是興趣的維度;還有前一段時間《白夜追蹤》的劇,很多人描述是美劇質感,這是一個很好的維度,很多用戶會喜歡這個維度。很多時候你的視頻就在于你怎么梳理類目體系,包括用戶對于內容的興趣是不喜歡重復,識別出來適合他喜歡的還不夠,因為用戶對興趣度和多樣性的要求是遠遠高于其他的品類。
我們在不斷思考的是用戶這些內容的興趣怎么通過傳統的推薦的技術能不能表達好?能不能把這么復雜多樣的微妙的用戶在視頻觀看的興趣表達出來?我們的模型有沒有表達的能力表達出來這么復雜的規律? 我們的特征有沒有足夠強的特征表達這些事情。
識別用戶的興趣是非常重要的,往往一個實際產品的問題不能用簡單一個方式去表示。
大部分傳統的推薦算法都是用點擊率預估去訓練一個模型,推薦的內容可能有幾種類型,一種類型是看了又看,推薦用戶看過的,有過行為的東西,做過廣告的人知道一個概念,就是用戶有過交互的東西。第二類是熱點,比如統計CTR很高的東西,除了這兩類之外,才是真正去猜測和預估興趣用戶,根據用戶興趣去做推薦的。一般的模型會推這三類東西,這三類東西不一樣,如果做過這個事情的人都知道,最有效的點擊率最容易高的是推用戶有過行為的東西往往很容易有效,但是推這些類型的價值率不高,推薦率高是因為難度比較低,成功率容易高,真正個性化的內容通過猜測用戶的興趣點去做推薦,往往你的成功率偏低,所以點擊率偏低,所以從成功率來講推薦有過行為的最高。推薦命中或者不命中的價值,都是個性化推薦是更高的。即使你推薦的某種給用戶沒有命中,也會提供一個很負樣本信息,你對這個用戶的興趣點了解更深入,知道這個興趣不感興趣什么。相反如果你推的都是成功率很高的東西,你的模型長期來講很容易陷入一個局部自由,因為你收到正負樣本沒有什么變化,你沒有真正探索到用戶的興趣。
三、常見的工業界的做法
針對上邊這些視頻推薦里的挑戰,我們來看看常見的工業界的做法,基本流程作為召回,然后篩選一部分侯選,然后做一個排序模型,很多大部分的公司都是這樣做的。排序模型里會有一些統計特征、用戶的畫像,畫像里包括DEMO的特征,還有基于內容標簽的用戶畫像的特征,包括高微組合特征等等。如果從結構來講的話,可以分為四個層次,最下面是數據層,然后是召回層,然后是一些特征工程的層次。在數據層面往往是ETL數據處理、采樣。優酷做了大量不同的召回,經典的像CF,包括DNA的CF,還有Slim,還有基于明星的召回,基于熱度熱點和趨勢的召回。特征是比如說Item的特征。包括用戶畫像常用用戶搜索記錄、瀏覽記錄。模型也有各種各樣的。這些都是蠻常見的做法。
這些做法對于剛才我描述的視頻興趣的表達還是有很多問題,我們可以具體看一下。比如從特征的角度,使用這些DEMO往往有一個特征,用戶視頻興趣往往和用戶的年齡、性別和地域關系不大,比如三線城市50歲男性和一線城市30歲的女性看的東西是差不多的。基于用戶標簽畫像,常見的做法是基于這個內容的標簽去生成一些用戶的畫像,基于一些統計方法,針對這些特征做一些高緯的組合,比如用DNN也好,在視頻推薦場景里,特別是頭部內容推薦的場景里,行為過于稀疏,數據噪聲比較大的時候,在高緯空間組合特征往往效果不是特別好。因為所有空間是很大的,往往很復雜的模型并不是一個全局收殮,往往收斂到一個局部,會發現組合出來的特征是不太準確的。在噪聲大,數據稀疏的產品i2i里往往超過很好,在場景噪聲很大的時候,對于數據降緯的處理。當我們把空間投影到I空間里,通過時間積累有很多用戶產生行為,這時候數據量就會大很多。所以識別出來之間相似度就會好很多。我們可以理解成某種降緯的降噪對于數據稀疏性和噪聲過大一種降噪的處理。基于這個相似度再作為特征放到排序模型里。
導致一個問題就是很容易丟失很多重要信息,比如很多用戶看有的是因為喜歡這個主演,有的是因為我喜歡這個類型,也有可能因為這個劇比較熱,所以去看,但是并不喜歡這個類型。這個劇熱度過了之后就不看了。所以在這種情況下沒有辦法很好的表述這些信息。另外一個問題,不同的用戶群體對于全局也很難特點好的表示不同用戶群體的信息。下面這個圖是16年解釋的現象,當你去計算C和I之間相似度的時候,在A的用戶群體里相似度比較高,但是在B這個群體里相似度是零,因為沒有看過I。當你算一個全局相似度的時候,它是這兩個相似度的平均,對于B的相似度計算是不準確的,但是也只能解決一部分這樣的問題。
另外往往力度過細,沒有像標準這樣有一定的擴展性,趨熱是很常見的現象。比如哈利波特,像這樣的大熱片跟所有的相似度都很高,怎么做熱點的打壓也是一個問題。
四、個性化推薦在優酷視頻的應用
下面介紹一下針對這些問題我們的一些嘗試。首先還是認為要非常精細地去做好用戶的畫像是非常重要,傳統做法以內容標簽為基礎產出大量內容標簽、類目體系、導演演員,然后根據用戶觀看內容的行為,對于各個內容的標簽分類產生一些用戶的畫像。傳統的做法是基于統計的方法,并沒有很細致的解決好這個問題。
為什么我們覺得做好用戶興趣畫像很重要?我們解這個問題很大的挑戰在于數據的稀疏性很高,數據里面的噪聲很大。對于稀疏性高、噪聲很大的問題,如果你用一個很復雜的模型去解這樣N2N的問題,模型很容易受到噪聲的干擾,所以這個效果往往不好。右邊這個圖一般做法是你的輸入是用戶的行為,用戶的數據,輸出就是給用戶推薦。如果簡單用一個MEDOL解決這個問題很容易受到噪聲影響。因為現在雖然技術發展很快,但是很多模型沒有我們想象那么強大。我們做法是把這些問題拆解成若干個子問題,不是把一個N2N的問題MEDO,而是拆解成若干個子問題,讓MEDO解決更容易的問題,然后把人工的業務理解加入進去對這個問題做降緯和降噪,我們希望學到一個很準確的用戶興趣的表達,然后把用戶的行為首先表現在用戶興趣表達上,把這個問題拆成兩個問題,基于這個興趣表達再去做推薦,拆成兩個子問題,可以進行人工空間的整理、系統的建設、類目的建設,包括降緯降噪的處理。
這個思路并不新,學術界過去有很多工作,比如像CTR,基于這樣模型可以更精細的把用戶畫像解的更準。近幾年也有很多圍繞這個方向有很多進展,我們嘗試有幾個工作,像CTPF工作,還有下面的工作,都是效果蠻不錯的。
介紹一下在這個方向上的進展和嘗試。它把概率分布的假設換成播送分布,更多假設這個數據分布更稀疏,更符合實際用戶在視頻觀看里的一些規律,因為用戶在視頻觀看的時候,所謂時間是有限,不論我對這個興趣再高,我只能看有限的視頻,所以分布是偏稀疏。播送分解的思路效果更好。
我們實際應用的時候和學術界的假設還是不太一樣,我們除了視頻文本信息,因為視頻文本信息在實際工業運用里往往噪聲比較大,我們視頻文本信息,比如視頻的抬頭,視頻的簡介。往往多視頻是有點標題黨,抬頭并不能很好表示這個視頻所講的。實際應用里有大量編輯團隊對這個視頻打了標簽,標簽的問題有時候偏主觀,也有隨機性的噪聲里面,我們可以把這些因素用一個概率模型去MEDO出來,我們認為這種標簽也有某種隨機分布。
包括視頻熱度的維度,我們希望把熱度維度單獨拆開,希望能夠看到哪些用戶是比較喜歡熱點的,因為這個東西熱才去看的,哪些用戶是真正因為這個東西的類型才去感興趣看的。按照這樣的思路,我們可以把視頻文本的維度、標簽的維度、搜索詞的維度,比如主演、主角、配角、導演這些信息都可以進行一個獨立的分布。EM迭代并不是全局收殮的方法,往往收殮到局部最優,我們需要做大量人工審核工作,做一個降噪的工作。審核以后把并不好的去掉,做第二次初始值,然后再做迭代,迭代以后會收殮。我們對這個方法做了各種實現上的性能上的優化,基于分布式架構,改造成一個分布式,讓它可以處理優酷幾億視頻和幾億用戶的行為。
用戶內容興趣有復雜的規律,有些興趣是長期,有些星期是短期的,當興趣點滿足了之后更追求多樣性,過一旦時間又希望再看到這一類的內容,我們用了GRU的結構希望把用戶興趣時間維度上的信息能夠學出來。網絡輸入是用戶觀看的ID序列,包括觀看序列里標簽的序列,經過GRURECNET,再經過多個輸出接層。我們做了一個改進,用戶觀看序列是非常不等距的,有的用戶觀看是一個月只有一個行為,有的一天有很的行為,跟GRU假設不一樣。除了增加采樣的間隔以外,把GRU改成Time gatek。
剛才提到一個挑戰很多用戶的行為是比較有限的,我們對這些用戶興趣并不能識別很準,所以我們用了傳染病模型建模的方式。中度活躍用戶早期也是行為比較少的,我們可以看用戶是怎么從早期行為稀少的階段逐漸演變到中度活躍度比較高的情況。我可以計算一個用戶各種興趣點演進概率和演進的方式,基于這個預測用戶將來會對什么感興趣,根據這個去建模,把這個作為特征放到MODEL里,然后基于這個預測的概率做對用戶興趣的捕捉。
關于數據稀疏性的問題,最直接的解法就是通過隨機流量有意識收集更多的數據,行為數據,包括交互數據。這里有一個問題,當其實數據是很稀疏的時候,當N×N的I2I的矩陣有很多元素很稀疏的,explore收集數據需要很多流量,代價很高。所以我們考慮NystromCUR,N×N矩陣可以用這個矩陣當中的C行,C是遠遠小于N的。所以沿著這個思路,通過statistical leverage score選擇C個item。重點explore對于c個item有過觀看的用戶。只有C行是比較稠密的,C行數據是很準確的。當C行算的比較準的時候,還可以乘以N×N的矩陣。
另外可以構建一個HIN圖,每個節點就是一個標簽,按照標簽的相似度去做迭代,通過迭代會收殮,下面是一個例子,可以像汽車建筑隊、迷你卡車之類的,都是給小朋友看的視頻,但是都是表達一類用戶的興趣點,可以通過這種方式找到更多用戶的興趣點。
特征交叉也是一個比較有趣的問題,算法模型能力有限,End2end模型精準capture個性化特征能力有限。最優解在非常高緯空間中,由于噪音與模型收殮能力問題,需人工輔助降低搜索維度。使用交叉特征的統計值,效果好于使用離散交叉裸id特征。結合業務理解,輔助模型更好capture個性化特征。結合統計量的variance進行噪聲過濾。
這是在優酷個性化搜索排序里的模型,這個模型會分成若干個域,域內部是全連接,然后還有concat,還有域內信息的二次編碼,還有稀疏全連接。
這個模型是當你的數據沒有那么稀疏的時候,你的做法很簡單,就是用足夠深的表達能力足夠深度的模型就可以把這個問題解的很好。輸入里像用戶的域是用用戶所有觀看記錄,所有的視頻觀看的ID全部都放進去,每一個用戶就是一個ID序列。視頻維護有視頻各種文本、標題,包括視頻各種標簽分類組合起來表達這個視頻。這個問題就可以用這個模型解決很好。但是規模太大,參數已經是上億級別,特征維度太高,這個模型雖然表達能力非常強,可以把落后裸id特征學習很好,但是從模型存儲、離線的訓練,包括在線網絡的預估過程不能響應時間的要求,所以我們很大量的工作在這個領域做模型的壓縮和編碼的壓縮。對于輸入層稀疏ID的表達做各種壓縮,包括域的選擇為什么要拆開若干個域,對于離線和在線的評估也好、訓練也好可以做一些效率上的提升。包括在離線版本和在線預估的版本,這兩個也是有特征模型壓縮的區分。包括在優酷搜索里的召回階段,包括索引階段,都會把深度表征學習大規模的模型建到索引里。
作者介紹:
李玉博士,花名談志,優酷數據智能部總監,負責優酷的個性化推薦、搜索、泛內容AI平臺、視頻AI理解等。加入阿里前曾在美國Uber負責個性化智能定價、補貼、拼車規劃等工作;在京東任京東數據云總監;在美國雅虎負責雅虎的DSP廣告平臺、廣告Targeting等工作。
來自:http://www.infoq.com/cn/articles/youku-recommendation-practice