微信视频号推荐算法上分技巧
躺平了一段時間之后,排行榜已經發生了翻天覆地的變化,emmm....不由的佩服年輕人的精力,作為老年選手,只能使用大局觀了(此處內涵一下我大酒神,手動狗頭)。好久沒寫文章了,本文拿出 煉丹筆記 里的一波上分技巧分享一下。
之前寫過的微信視頻推薦算法大賽的兩篇文章:
- 乘風破浪的微信視頻號推薦算法
- 當推薦系統遇上多模態Embedding
在詞里面,一個詞可能會有多個不同的意思,這個時候我們會使用Multi-sense的embedding來處理此類情況,同樣的,CTR/CVR任務隨著上下文的不同也會有不同的意思,Operation-Aware的embedding可以幫助我們在不同的上下文中學習到不同的特征表示。
One-hot embedding是最早的embedding,它可以很好地表示類別信息,有就在特定位置標記為1,沒有就是0,但是one-hot embedding卻存在非常大的一個問題,在做關聯操作的時候,我們會得到非常多的“不合理”的0。
比如有三種顏色:紅|粉紅|藍;有兩種性別:男|女,用one-hot表示二者的關系,假設滿足男和紅是1,那么其他的組合全部都會是0,很明顯,這是不合理的,因為男和粉紅以及男和藍的關系肯定是不一樣的,這類比到搜索推薦中也是一樣,我們用one-hot表示用戶和某個視頻的關系,存在關聯就是1,沒有就是0。
現在來了一個視頻,歷史上用戶沒有和該視頻有過明顯的關聯,那么我們的用戶和該視頻的關聯性就會變為0,很明顯這是有問題的。所有one-hot的形式是不足夠的。
Normal embedding就是我們常說的embedding操作,我們將每個類別變量映射到一個低維度的dense向量上面,得到一個新的向量,后面再用該向量去做對應的操作。這么做相較于one-hot embedding的優勢就較為明顯了,同樣的現在來了一個商品,歷史上該用戶沒有和該商品有過明顯的關聯,但我們的用戶和該商品的關聯性在這個時候一般也不會是0。
Operation-aware embedding 故名思議就是和Operation相關的embedding,一個operation對應一個embedding(注:相同的操作在不同的特征上也被認為是不同的操作),我們發現原先我們的類別特征每次轉化為一個embedding向量,想再是L個embedding向量,
如果直接將兩個特征的關系拼接起來會得到非常稀疏的表示,并且會因為訓練不充分導致效果不佳,FM等模型用積(內積/外積)的形式來表示兩個潛在向量之間的關系。同時大量的實驗也驗證來這一點帶來的好處。
- LR
- Poly2
- FM
- FFM
- MLP
- WDL(DLRS16)
- DeepFM(IJCAI17)
- NFM(IJCAI17)
- AFM(IJCAI17)
- xDeepFM(KDD19)
- TFNET(SIGIR20)
- ONN/NFFM(Arxiv19)
- AoAFFM(AAAI20)
- AutoFIS(KDD20)
上面所有的模型可以大致分為四個部分,特征embedding,特征低階高階顯示交叉,特征隱式交叉,特征篩選。具體文章可以看 煉丹筆記 之前的文章《CTR神經網絡特征交叉匯總》。
ONN和xDeepFM是目前在數據競賽中經常用到的模型(據本人所知,2020年之前的CTR競賽最多的處理categorical的特征還是這兩類模型),19年的騰訊賽冠軍也是用的NFFM模型,二者的對比如下(18年的騰訊數據),整體來看,NFFM的效果要略好于xDeepFM,但二者融合效果還是極棒的!
目前神經網絡的特征交叉研究的方向主要是:
①.深化二階特征的交叉(內積,element-wise,加入attention系數,加入張量細化);
②.探索顯示的高階交叉;
③.探討噪音&冗余特征的處理;
④.探索embedding的合理性;
在短視頻推薦等問題中, 用戶的滿意程度很難衡量,我們需要從用戶的點擊,是否看完視頻, 分享,喜歡,評論等角度來刻畫,所以多任務學習在推薦領域已經成為主流的方法。但是在使用MTL建模時,在我們調整模型的時候經常會碰到下面的現象:
- 蹺蹺板現象:某一個任務的指標上升,但是另外一個任務的指標會下降;
那么是否可以通過利用不同任務的信息共享做到多個任務的指標同時上升呢?
做深度多任務學習不可避免的都會碰到下面的幾個問題:
- 不同任務的loss設計問題(輔助loss設計);
- 不同任務之間特征層的共享問題(如何避免負遷移);
- 不同任務之間的loss權重設計(有些任務是MSE,有些是二分類)等;
- 模型優化,不同任務如何優化;(不同任務不同梯度設計等)
- 什么樣的任務使用MTL任務是最好的, 能帶來較大的幫助?(理論暫無)
- 其他
如何做到MTL任務能幫助我們多個任務提升?在 煉丹筆記 文章《多任務學習如何做到你好我也好?》中介紹了在多任務loss固定的情況下很好地緩解了這些問題,并且給所有的任務帶來了不錯的提升。
做數據挖掘相關的朋友,大多數都聽說過特征工程這個藝術的詞匯,卻鮮有人知道標簽工程這個偉大的詞匯,誒,為什么很少有人知道呢?因為這個是我們自己造出來的,輕噴......但是這個詞卻真的非常契合該章節的核心思路,大家都知道標簽臟或者模糊的問題,這個是所有數據里面不可避免的,那么如何解決或者緩解此類的問題呢?讓標簽更加置信....
無論是顯性反饋還是隱性反饋都能反映用戶對商品的意見,這對于學習推薦中的用戶偏好至關重要。然而,目前大多數推薦算法只關注隱式的正反饋(如follow),而忽略了其他信息豐富的用戶行為。然而聯合考慮顯式/隱式和正/負反饋,才可以了解用戶的無偏偏好。具體細節可以在《顫抖吧,標簽工程》找到。
在推薦系統中,顯式和隱式的反饋都是有價值的,許多工作使用特征mapping以及遷移學習的方式來構建顯示和隱式反饋的關系,目前大多數算法使用多任務學習方式將顯式和隱式反饋結合來聯合處理ranking和rating的任務。
微信視頻號推薦算法上分神技!總結
以上是生活随笔為你收集整理的微信视频号推荐算法上分技巧的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MLP is Best?
- 下一篇: 电商搜索推荐业务词汇表