淺談 UC 國際信息流推薦
掃描二維碼
隨時隨地手機看文章
導(dǎo)讀:本次分享的主題是淺談UC國際信息流推薦。會跟大家探討下發(fā)鏈路中常見的一些問題,主要包括兩個場景:
列表頁排序,包括:目標(biāo)確定、多目標(biāo)任務(wù)以及混排組合優(yōu)化。
內(nèi)容冷啟問題,如果不做內(nèi)容理解,能否做好推薦系統(tǒng)?
▌列表頁推薦

這是印度語版的推薦列表頁,左邊跟常見 feed 推薦的產(chǎn)品形態(tài)是非常類似的,有不同的異構(gòu)的卡片:
新聞聚合頁,點開以后就是一個聚合頁。
視頻,點開是一個沉浸式播放的聚合頁。
普通的圖文,點開是一個落地頁、詳情頁。
Memes,印度市場特有的內(nèi)容 Memes。這種內(nèi)容主要是一張圖片(或者動圖),這種內(nèi)容比較特殊,可以直接在列表頁消費,直接看了就曝光、閱讀完成,就結(jié)束了,如果點開的話就是 Memes 的沉浸式頁面。
總結(jié)起來,內(nèi)容消費的路徑有:
一種是,列表頁里直接消費的內(nèi)容,如 Memes。
一種是,落地頁中消費的內(nèi)容。
還有就是通過聚合頁再次跳到落地頁消費的內(nèi)容。
1. 目標(biāo)確定

接下來講下如何確定目標(biāo)。對于推薦系統(tǒng)來說,最核心的就是如何確定目標(biāo),如果目標(biāo)定不好,可能就會出現(xiàn)標(biāo)題黨的問題。在解釋最終求解目標(biāo)之前,先看下用戶的行為路徑:
圖中圓圈表示的是用戶的一種行為,方框表示用戶發(fā)生這種行為的心里活動。
比如用戶看到一篇內(nèi)容之后,如果這個內(nèi)容有吸引用戶的點,也就是產(chǎn)生了吸引,會發(fā)生一次點擊,在點擊看到詳情頁的內(nèi)容之后,如果對這個內(nèi)容比較滿意,用戶可能會形成一次有效的閱讀,有一次有效閱讀之后,如果用戶還是覺得這個內(nèi)容非常好、非常滿意,用戶可能會有一些互動的行為,比如分享、點贊、評論等。
當(dāng)然還有種可能:用戶在列表頁里看到一篇內(nèi)容之后,用戶不是很感興趣,直接就跳走了或者快速的劃過;再就是用戶點開了一篇類似標(biāo)題黨的內(nèi)容,但是內(nèi)容完全不是用戶想要的,這其實是一個強烈的不滿意會,一個無效的閱讀,然后用戶就離開了。如果把所有不滿意的行為看作是一種負向的滿意度,我們建模的核心目標(biāo)應(yīng)該是一個用戶累計的所有滿意的行為,使?jié)M意行為累積量最大化。
這里所有標(biāo)黃色的路徑其實是一個偏正向的路徑,標(biāo)灰色的路徑是個偏負向的路徑,我們的目標(biāo)是使正向的路徑逐漸的累積,對用戶逐漸的產(chǎn)生一個比較正向的影響。
所以求解目標(biāo)是:

左邊為吸引的概率,右邊是滿意的概率,然后所有看過的內(nèi)容滿意度最大化。
如何衡量有效的閱讀?一個傳統(tǒng)的方法是用閱讀時長來衡量是不是一個滿意的閱讀,但實際上用戶滿意的心理和時長不是一個完全線性的關(guān)系。比如有一類行為是用戶閱讀了 5s 或者 10s 以下快速離開(quickback),這種無效閱讀,無論是 3s、5s 還是 7s、8s,效果都是用戶對內(nèi)容完全不滿意,應(yīng)該快速離開的。再有,當(dāng)用戶讀一篇長文時,大家可能都有這樣的體會,長文閱讀可能會有一個瓶頸,就是大家花了很長時間在一篇文章閱讀上,但是讀到一定程度的時候,可能再也讀不下去了,能花的時間就存在一個極限了,所以最后滿意度和時長關(guān)系是類似 sigmoid 的函數(shù)關(guān)系。因此,我們在對滿意度建模時,其實是把回歸問題變成了一個分類/二分類/多分類的問題。這里可能會涉及怎么做時長回歸的問題(由于不同類型、分類、主題的內(nèi)容以及內(nèi)容信息量的不同,其閱讀時長總量是會變化的),一種簡單的方法是用這些維度,對內(nèi)容進行統(tǒng)計分析求出分布,然后用分位數(shù)來截斷,通過人工來排出幾個檔,也可以做一些人工標(biāo)注來擬合這樣的分類。結(jié)合UC國際信息流,稍微特殊的一點是列表頁有 Memes 這樣的圖片內(nèi)容。這種內(nèi)容由于強調(diào)的是互動性(一般承載的是一些高分享類的內(nèi)容,如早安、節(jié)日問候、搞笑的圖片等),在產(chǎn)品設(shè)計時,會把這種交互行為做前置,在列表頁就放出來,這樣就可能存在誤點,用戶還沒看到或看完這篇內(nèi)容,就產(chǎn)生了點擊,需要做一些過濾。
負向滿意度,分為:
顯式:很多產(chǎn)品在設(shè)計時,都會在內(nèi)容邊上有個XX,也就是 dislike,比較直白的顯示了負向滿意度。
隱式:無點的曝光、無效閱讀 ( quickback )、快刷等動作。
說完了總的求解目標(biāo)之后,這里列舉的吸引和滿意,滿意還可以拆解成更多的步驟,比如剛才說的有效閱讀和互動行為,可以再做分解,但無論如何都是一個多目標(biāo)的任務(wù),針對這樣的多目標(biāo)任務(wù)該如何建模呢?
2. 多目標(biāo)點估計

這里列舉了一些方法,都是阿里巴巴集團內(nèi)部在各個業(yè)務(wù)線上的一些沉淀:
① ESMM:
這是阿里媽媽團隊在解決多目標(biāo)問題的一種解決方案。ESMM 可以解決我們在對多目標(biāo)問題進行求解時,比如左邊是轉(zhuǎn)化率的目標(biāo),右邊點擊率目標(biāo),往往是獨立進行求解的。使用樣本時,該如何表達上文說到的轉(zhuǎn)移概率?常規(guī)做法用到的樣本,如轉(zhuǎn)化率使用的樣本是所有的有點樣本,由于在訓(xùn)練時,使用的樣本是部分樣本,在預(yù)測目標(biāo)時,使用的是全樣本,導(dǎo)致樣本分布會存在一定的偏差。ESMM 是把樣本空間放到全空間,在定義目標(biāo),計算 loss 時,計算的都是全樣本空間的 loss,一個是點擊率,再有一個是把 CVR 作為一個中間節(jié)點,最后求解的 loss 目標(biāo)是 CTR * CVR,然后底層網(wǎng)絡(luò)參數(shù)共享。
② DBMTL:
DBMTL 模型是淘寶推薦團隊對 ESMM 模型進行的改進。主要的改進點:左邊這部分就相當(dāng)于 ESMM 那張圖橫過來了,是共享參數(shù)層;specific layer 是走的不同目標(biāo)的分支;最重要的是右邊 bayesian layer,表達了概率圖中目標(biāo)之間的貝葉斯轉(zhuǎn)移概率的因果關(guān)系。如果轉(zhuǎn)移概率之間的關(guān)系,受其他的一些 feature 和因素的影響,也可以把那些 feature 加到網(wǎng)絡(luò)中一起訓(xùn)練,所以 DBMTL 建模的時候還建模了幾個目標(biāo)之間的因果關(guān)系。
③ MMoE:
MMoE 類似一個專家系統(tǒng),有多個子網(wǎng)絡(luò),每個子網(wǎng)絡(luò)使用的特征和網(wǎng)絡(luò)結(jié)構(gòu)可以有差異,在最終確定多目標(biāo)的時候進行票選,通過 gate 來賦予不同的權(quán)重來做票選。
最后,我們的業(yè)務(wù)在不同場景上都取得了比較正向的收益,如視頻頻道和 Push 場景。
多目標(biāo)這兒寫了一個點估計,因為主要用在精排的場景,在做每次的預(yù)估時,考慮的都還只是某一條內(nèi)容的滿意度效果。
3. 混排

但是在列表頁場景,我們要求解的是一個組合最優(yōu)的效果,也就是說對上面的問題需要做進一步的擴展。在考慮點擊率時,還要考慮上下文,我上下文的信息。
然后我們的求解目標(biāo)也做了一個轉(zhuǎn)換:

U 轉(zhuǎn)到 page,做了一個獨立假設(shè),認為頁與頁之間是沒有關(guān)聯(lián)關(guān)系的,但這個假設(shè)不一定成立,只是為了把問題簡化一下。這樣我們的問題就變成了在組合列表頁的情況下,如何達到組合最優(yōu)。比如有 N 條精排的候選集輸出,對這 N 條結(jié)果輸出 M 個槽位的排列,也就是求解排列的最優(yōu)解。所以搜索空間相當(dāng)于是 N 的 M 次方,一個非常大的搜索空間,在實際業(yè)務(wù)中是沒法落地的,因為計算復(fù)雜度太高了。
所以淘搜這有一個簡化版的方法:類似于貪心的一種算法,在每一輪只確定當(dāng)前這條最優(yōu)的結(jié)果,然后考慮上文,不考慮下文。舉個例子,比如現(xiàn)在是第三輪迭代,已經(jīng)確定了前三個位置的最優(yōu)組合,現(xiàn)在是求解第四個位置應(yīng)該選哪一條,預(yù)測第四條那個位置最優(yōu)的一個選項。另外在做貪心搜索時,搜索空間非常受限,受選擇順序的限制。那么 beam search 有一個參數(shù),就是寬度,每次可以把候選集保留 top3,也就是最優(yōu)組合的 top3 作為候選,再進行下一次的探索,有一定的探索回溯的能力,這樣 beamsize 探索的最優(yōu)空間的大小,可以用來 balance 性能和效果。
還有一點是對上文的建模,怎么表達上文的排列信息,也就是上文內(nèi)容之間的位置相對關(guān)系的信息。這里有一個比較巧妙的方法:用 RNN 的網(wǎng)絡(luò)結(jié)構(gòu)來表達他們之間的相互關(guān)系,然后在計算的過程中(因為是一個貪婪式的計算,每一輪只計算一步),只計算 RNN 的一個 STEP 可以了,所以在時間復(fù)雜度上也是可以接受的,這樣存儲一個 RNN 中間的隱變量就可以了,這就是混排的做法。
▌內(nèi)容冷啟

內(nèi)容冷啟問題,有朋友問,如果一個推薦系統(tǒng)完全不做內(nèi)容理解,是不是也是可行的?這里從其中一個角度說下。
左圖是我們現(xiàn)在只用 ID 作為 feature,也就是說核心 feature 是內(nèi)容的 ID,相當(dāng)于沒有內(nèi)容理解,這是一個新內(nèi)容收斂的效果,下邊橫軸是下發(fā)的 PV,可以看到點擊率的收斂,要基本上要到千次左右的下發(fā)才能達到一個接近收斂的程度,而且起步階段和后面其實 gap 還是非常大的,用 ID 做推薦就會遇到這樣冷啟的問題,特別是我們的業(yè)務(wù)場景又涉及到小語種。因此,對于場景,無論是 item 還是流量都做了很多的細分,所以冷啟的問題會尤其的嚴重一些。

解法其實還是內(nèi)容理解,我們把 ID 的特征映射到文本域。這里有一個 YouTube 15年做的一個工作,怎么去掉時間的 bias,就是 Example age,其含義是在采用這條樣本時,這個時間點距離這條內(nèi)容發(fā)布的時間點之間的 time diff 時間差是什么樣的。加上 bias 的 feature 之后,對時間敏感的內(nèi)容在下發(fā)時就會考慮到下發(fā)時間差,相當(dāng)于提高了時效性。
我們在召回側(cè) DM match,把 ID 特征加上文本特征之后,冷啟(1000條以下的曝光)內(nèi)容 AUC 有了不錯的提升。
另外,在多語言的體系下,如果能把文本域的表征對齊投影到同一個空間,對冷啟應(yīng)該能起到更好的效果。
▌總結(jié)
簡單總結(jié)下,結(jié)合大家常見的一些問題,本次分享主要介紹了排序中如何確定目標(biāo),如何做多目標(biāo)的點估計以及混排的組合優(yōu)化,還簡單介紹了內(nèi)容冷啟的一些解決思路,主要是特征泛化和語義對齊。本次分享就到這里,謝謝大家。
特別推薦一個分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒關(guān)注的小伙伴,可以長按關(guān)注一下:
長按訂閱更多精彩▼
如有收獲,點個在看,誠摯感謝
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!





