新零售智能引擎事業群出品
一、引言
主流推薦算法的訓練過程要求模型根據使用者過往行為拟合使用者的下一個行為。但隻拟合「下一個行為」存在局限:
- 首先,推薦結果會趨向單一。比如當訓練資料中存在大量類似“裙子、裙子、裙子、裙子、裙子、發飾”的序列時,由這個序列構造出來的大部分訓練樣本的标簽都是裙子,這會導緻學出來的算法在使用者點選裙子後依然會傾向于推薦裙子、而不是推薦發飾之類的搭配類目;
- 其次,使用者經常同時有多個興趣點、也經常處于好奇等原因産生新的興趣點。這導緻下一個點選未必與序列中過去的點選有關,比如“裙子、裙子、裙子、椅子”的序列,訓練時要求模型去根據裙子拟合椅子似乎有點勉強。

本文提出讓模型利用過去行為去拟合「整個未來行為序列」而非單單隻是「下一個行為」的輔助訓練思路。主要工作内容是結合解糾纏表征學習和自監督對比學習,來解決其中的兩個主要挑戰:
- 如何壓縮未來序列中相同興趣點的多次點選,以便提高訓練效率、平衡多個占比不均衡的未來興趣點的權重。
- 如何辨識并剔除未來序列中與過往行為毫不相幹的部分。
二、方法
為了解決兩個挑戰,我們的解決方案如下:
- 如何壓縮未來序列中相同興趣點的多次點選,以便提高訓練效率、平衡多個占比不均衡的未來興趣點的權重:先将未來點選序列中的每一個商品都映射為代表使用者該時刻興趣點的向量,e.g., 50+個商品映射到50+個向量。再對這些向量進行聚類,進而獲得使用者未來的多個主要興趣向量,e.g., 50+個向量聚類成8個主要的向量。最後,訓練過程要求模型去預測這些未來的興趣向量,而不是預測未來點選的具體商品,這樣我們就隻需要拟合8個未來的向量,而不是拟合原本多達50+個的商品。
- 如何辨識并剔除未來序列中與過往行為毫不相幹的部分:我們額外要求模型預估訓練資料中樣本的可靠程度,比如,8個未來興趣向量和8個曆史向量的相似程度有多少、每條訓練樣本是噪聲樣本的可能性有多少。在訓練時,較長時間将主要使用可靠程度較高的樣本,比如從8個未來興趣向量中挑選出最可靠的2~3個,隻要求模型拟合這2~3個未來興趣向量,剩下的5~6個未來興趣可能和曆史行為沒太大關聯,是以就不要求模型去預測這部分樣本了。
需要注意的是,我們提出來的這個新的訓練方式,i.e. 新的sequence-to-sequence loss,是疊加在傳統的sequence-to-item loss上的,是兩個losses一起同步優化的。因為推薦最終是要推薦商品的,傳統的sequence-to-item依舊必不可少,sequence-to-sequence loss隻是起到提升表征學習品質的輔助作用。
三、實驗
在興趣點複雜的公開資料上,離線的推薦名額提升十分顯著:
在對訓練集不斷加入噪聲後,seq2seq loss相比傳統seq2item loss更魯棒:
在手淘大規模的離線實驗上,預測下五個點選的HitRate@50比隻用傳統sequence-to-item loss提升絕對值0.5%,具體為12.6% vs.12.1%。初版上線的結論是點選率等無明顯變化、曝光發現性有些許提升,後續将在我們團隊改進後的多向量模型MultCLR和具有消除曝光偏差作用的向量召回損失函數CLRec下繼續疊代優化線上效果。
四、結論
我們提出了一種新的訓練向量召回系統的訓練方式,旨在彌補傳統訓練目标的短時造成的多樣性缺乏及不魯棒的問題。核心技術貢獻是結合解糾纏表征學習和自監督學習。
更多資料挖掘内容檢視:
《KDD論文精華解讀》