基于多任务学习和负反馈的深度召回模型
簡介:?召回結(jié)果的好壞對整個推薦結(jié)果有著至關(guān)重要的影響,最近的一系列實(shí)踐和研究表明,基于行為序列的深度學(xué)習(xí)推薦模型搭配高性能的近似檢索算法可以實(shí)現(xiàn)既準(zhǔn)又快的召回性能;與此同時,用戶在天貓精靈上還可以進(jìn)行實(shí)時指令操控(歌名點(diǎn)播:“播放七里香”、風(fēng)格流派推薦點(diǎn)播:“來點(diǎn)搖滾”、主動切歌:“下一首”等),如何利用這些豐富的反饋信息改進(jìn)召回模型的性能,他們是怎么做的呢?
一 背景??
傳統(tǒng)的推薦系統(tǒng)通常由兩部分構(gòu)成,分別是 Candidate Generation(候選生成)和 Ranking(排序),以下圖中經(jīng)典的 YouTube 視頻推薦為例[1],整個系統(tǒng)分為了兩層:第一層是 Candidate Generation(候選生成),負(fù)責(zé)從全量的視頻中快速篩選出幾百個候選視頻,這一步通常也被成為 Matching(召回);第二層是 Ranking(排序),負(fù)責(zé)對幾百個視頻進(jìn)行精準(zhǔn)打分并重新排序,決定最終向用戶展示的結(jié)果順序。
本文主要研究 Matching(召回)部分,這部分通常面對的是整個推薦 item 集合,既要盡可能多的保留相關(guān)性高的結(jié)果,又要保證速度,召回結(jié)果的好壞對整個推薦結(jié)果有著至關(guān)重要的影響。最近的一系列實(shí)踐和研究表明,基于行為序列的深度學(xué)習(xí)推薦模型[2-4]搭配高性能的近似檢索算法[5]可以實(shí)現(xiàn)既準(zhǔn)又快的召回性能(這套方案通常被稱為DeepMatch),和傳統(tǒng)的召回方法相比(比如 swing、etrec、SVD),DeepMatch 的優(yōu)勢主要如下:
- 可以建模 user-item 間更深層次的非線性關(guān)系
- 可以在模型中使用各種 user 和 item 的特征
- 基于行為序列的模型可以建模用戶不斷變化的興趣,并且能夠融合用戶的長短期興趣
DeepMatch 已經(jīng)廣泛應(yīng)用于天貓精靈推薦場景中(APP 信息流推薦、音樂推薦等)并取得了比傳統(tǒng) i2i 方法更好的效果,但目前的模型仍存在著一些問題,有一些關(guān)鍵的信息還未引入進(jìn)來(以“我要聽歌”場景為例,在這個場景中天貓精靈會根據(jù)用戶的喜好來給用戶推薦音樂):
負(fù)向反饋信號(Play Rate)
初始訓(xùn)練日志數(shù)據(jù)中僅包含正向反饋,也即使用播放完成率高的歌曲序列訓(xùn)練 DeepMatch 模型。而在天貓精靈的場景中,用戶有主動切歌的行為,如主動的“停止播放”、“下一首”,其中大部分這類型是用戶在出現(xiàn)不喜歡的歌曲時觸發(fā),這些信號可以作為用戶的負(fù)反饋加入到模型中。而且一些實(shí)踐已經(jīng)表明了負(fù)向反饋的作用[6-7],如果能將這些信號有效的利用起來,模型有能力去捕捉用戶時刻變化興趣,在用戶進(jìn)行切歌行為時,減少同類型的音樂推薦。在這個場景中,我們用每首歌曲的播放完成率來表示用戶反饋,完播率較大即為正反饋,完播率較小即為負(fù)反饋。
歌曲點(diǎn)播 query 意圖信號(Intent Type)
天貓精靈歌曲的播放大部分由用戶的 query 點(diǎn)播而來,每一首歌曲背后都有用戶的點(diǎn)播意圖,天貓精靈背后有一套專門的歌曲 query 意圖解析,比如精確點(diǎn)播(歌名點(diǎn)播:“播放七里香”、歌手點(diǎn)播:“我要聽劉德華的歌曲”)、推薦(風(fēng)格流派推薦:“來點(diǎn)搖滾”、隨便聽聽推薦:“放歌”)。通過對用戶行為的分析來看,不同意圖類型下的歌曲對于推薦模型貢獻(xiàn)的權(quán)重是不同的,在模型中融入歌曲對應(yīng)的意圖 attention,能更準(zhǔn)確把握用戶的興趣。因此本文提出了一種基于多任務(wù)學(xué)習(xí)和負(fù)反饋的深度召回模型。
二 方法
總體來說,由于近似最近鄰檢索算法的限制,我們的召回模型需要獨(dú)立地對用戶歷史行為序列進(jìn)行編碼以生成用戶的每一步的向量表示,然后再和 Target Item 向量做內(nèi)積運(yùn)算,得到打分,模型基于 Self-Attention 的架構(gòu)來實(shí)現(xiàn),總體結(jié)構(gòu)如下:
1 Input Representations
如前所述,為了建模負(fù)向反饋信號和用戶意圖類型信號,我們的模型引入了對 Play Rate 和 Intent Type 的表示。但初始數(shù)據(jù)集不包含這兩種信號,因此我們用 Train Set 1 來表示初始數(shù)據(jù)集,Train Set 2 表示帶有負(fù)向反饋信號和用戶意圖類型信號的數(shù)據(jù)集,我們對它們做了統(tǒng)一的表示。總的來說,用戶歷史行為序列中的每個 Item 的表示由如下四部分構(gòu)成:
1)Item Embedding
我們首先把每個 Item 嵌入到固定大小的低維向量中,Train Set 1 和 Train Set 2 共用一套 Item Vocabulary,不需要做區(qū)分:
其中,為 Item 的 One-Hot 表示,是 Item Embedding 矩陣,另外需要注意的是輸出層和輸入層共用一套 Item Embedding,這樣做的目的主要是節(jié)省顯存占用空間,因為推薦場景的 Item 數(shù)量是巨大的,而且有很多工作已經(jīng)證明了這樣的做法對于模型性能影響不會很大[2]。
2)Position Embedding
對于行為序列任務(wù),我們需要使用位置嵌入來捕獲行為序列中的順序信息。我們采用不同于 Transformer 原論文[8]中的 sin 和 cos 方法,直接使用 Max Sequence Length 個 Embedding 來表示不同的位置。
3)Play Rate Embedding
播放完成率是用戶對于 Item 接受程度的一個重要反饋,在天貓精靈上,對于不喜歡的歌曲,用戶通常會直接使用“下一首”指令將其切掉,這些歌曲的播放完成率就會比較低。播放完成率是一個值域在 [0, 1] 間的連續(xù)值,為了實(shí)現(xiàn)后面將要提到的連續(xù)值特征和離散值特征的交互,我們參照了[9]中方案,將 Play Rate 映射到了與 Item Embedding 相同的低維向量空間,具體來說,我們將 Play Rate Embedding 表示為:
其中,是 Play Rate,是隨機(jī)初始化的 Embedding,是最終得到的 Play Rate Embedding,由于我們 Train Set 1 數(shù)據(jù)只有播放時長較高的歌曲,并且沒有播放完成率的信息,因此對于 Train Set 1,我們固定所有 Play Rate 為 0.99:
4)Intent Type Embedding
用戶意圖類型表示了用戶進(jìn)入這個 Item 的方式,比如在天貓精靈端,點(diǎn)播(用戶明確點(diǎn)播出的歌曲)和推薦(天貓精靈為用戶推薦的歌曲)就是兩種不同的 Intent Type(天貓精靈的實(shí)際場景中類型會更多),類似 Item 本身的表示,我們把 Intent Type 也映射到了一個固定的低維向量空間:
我們不知道 Train Set 1 數(shù)據(jù)中的 Intent Type,在此我們假設(shè)所有的 Train Set 1 數(shù)據(jù)的 Intent Type 全部為點(diǎn)播:
2 Factorized Embedding Parameterization
在推薦的任務(wù)中,Vocabulary Size 通常是巨大的,這導(dǎo)致了我們無法使用太大的 Embedding Size 來表示 Item,否則顯存放不下,但很多使用 Transformer 的工作證明,提高 Hidden Size 可以有效的提升模型效果[10],參照 ALBERT[11] 壓縮模型的方式,我們首先把 Item 的 One-Hot 向量映射到一個低維度的空間,大小為 ,然后再映射回高維度的空間再輸入Transformer,從而把參數(shù)量從 降低到了 ,當(dāng) 時參數(shù)量會明顯減少。
3 Feedback-Aware Multi-Head Self-Attention
在獲得用戶行為序列的特征表示后,我們就可以準(zhǔn)備構(gòu)建用戶向量了,我們采用了注意力機(jī)制來編碼用戶的行為序列。如 Transformer[8] 中所述,注意力機(jī)制可以被描述為一個將 Query 和一系列的 Key-Value Pairs 映射到 Output 的函數(shù),其中 Query,Key,Value 和 Output 都是向量,Output 被計算為 Value 的加權(quán)和,其中分配給每個 Value 的權(quán)重由 Query 與對應(yīng) Key 的打分函數(shù)計算,由于召回模型的限制,我們無法使用 Target Item 提前和用戶行為序列中的 Item 做運(yùn)算,因此采用 Self-Attention 的方式,直接把用戶行為序列作為 Query,Key,Value 來進(jìn)行計算。具體來說,我們使用了 Multi-Head Self-Attention 的方式來提升模型對于復(fù)雜交互的建模能力:
其中,是線性投影矩陣, 是 head 的數(shù)量。在經(jīng)典的 Transformer 結(jié)構(gòu)中, 由 Item Embedding 和 Position Embedding 構(gòu)成,在我們的模型中,我們將外部信息(播放完成率和用戶意圖類型)引入到 Attention 中來,我們稱之為 Feedback-Aware Attention,通過對這些信息的引入,我們的模型就有能力結(jié)合用戶的反饋信息感知用戶對于各個歌曲的不同的偏好程度了:
除此之外我們還參照 ALBERT[11],嘗試了 Cross-layer Parameter Sharing 的方案,這種方案讓每層 Transformer Layer 全部共享一組參數(shù),同樣量級(層數(shù)相同)下的 Transformer 采用該方案后實(shí)際上的效果是會有所下降的,但是參數(shù)量減少了很多,訓(xùn)練速度也會快很多,對于推薦這種數(shù)據(jù)規(guī)模比較龐大的場景,采用這種策略可以在盡量節(jié)約訓(xùn)練時間的前提下提升模型性能。
4 Sampled Softmax Loss For Positive Feedback and Sigmoid CE Loss For Negative Feedback
在獲得用戶的向量表示后,就可以定義多任務(wù)學(xué)習(xí)的目標(biāo)了,由于之前我們已經(jīng)統(tǒng)一了 Train Set 1 和 Train Set 2 的數(shù)據(jù)表示,因此這兩個任務(wù)可以放在一起進(jìn)行聯(lián)合多任務(wù)訓(xùn)練。具體來說,我們的任務(wù)類似于語言模型:給定前 個已經(jīng)聽過的音樂,預(yù)測第 步用戶想要聽什么音樂,我們根據(jù)播放完成率的高低將信號分成兩種(實(shí)際實(shí)現(xiàn)時會使用一個閾值來區(qū)分),一種是 Positive Feedback,這種的優(yōu)化目標(biāo)是使其打分排序盡量靠前,另一種是 Negative Feedback,這種的優(yōu)化目標(biāo)是使其打分排序盡量靠后。
如下圖的左圖所示,如果只做傳統(tǒng)的 Positive Feedback Loss 的話,我們的模型可以拉近用戶向量和喜歡的 Item(正向樣本)的距離并拉大其和未觀測 Item 的距離,但是不喜歡的 Item(負(fù)向樣本)的距離可能并不會被拉開,我們希望我們的模型可以向右圖一樣,在做到上述特性的同時,拉大用戶向量與不喜歡的 Item 的距離:
因此我們使用了 Positive Feedback 和 Negative Feedback 結(jié)合的優(yōu)化目標(biāo):
對于 Positive Feedback,我們使用 Sampled Softmax Loss 來優(yōu)化。在之前的很多工作中[12-13],Sampled Softmax Loss 已經(jīng)被證明非常適用于大規(guī)模推薦召回模型,它的定義如下:
在使用 Tensorflow 實(shí)現(xiàn)的時候,sampled_softmax 默認(rèn)使用的采樣器為 log_uniform_candidate_sampler(TF 版 Word2Vec 基于此實(shí)現(xiàn)),它基于 Zipfian 分布來采樣,每個 Item 被采樣的概率只跟他詞頻的排序相關(guān),采樣概率不是詞的頻率,但是推薦中的商品和 NLP 中的詞可能不同,因此我們嘗試了另外兩個采樣器:
- uniform_candidate_sampler:使用均勻分布來采樣
- learned_unigram_candidate_sampler:這個分布會動態(tài)統(tǒng)計訓(xùn)練過程中的詞表,然后計算概率并進(jìn)行采樣
在我們的實(shí)驗中,learned_unigram_candidate_sampler 可以實(shí)現(xiàn)最好的效果。除此之外,我們發(fā)現(xiàn)了類似[2]中的結(jié)論,負(fù)采樣的數(shù)量是一個比較重要的參數(shù),在顯存允許的情況下,適當(dāng)調(diào)高負(fù)采樣的數(shù)量可以有效的提升模型收斂效果。
對于 Negative Feedback,我們直接使用 Sigmoid Cross Entropy Loss 來優(yōu)化,將播放完成率低的 Item 全部看成負(fù)例,使其打分盡量低:
最終的總 Loss 則為兩者的加和:
三 實(shí)驗
1 分布式訓(xùn)練
推薦場景的詞表大小和數(shù)據(jù)量通常是巨大的,因此我們采用了 TensorFlow 中的 ParameterServer 策略來實(shí)現(xiàn)分布式訓(xùn)練的代碼。調(diào)優(yōu)過程中也積累了一些經(jīng)驗:
1)需要注意 Embedding 分片的問題,一個是 tf.fixed_size_partitioner 中的 size,另外一個是embedding_lookup 中的 partition_strategy,需要保持他們在 Training 和 Inference 過程中的設(shè)置是相同的。
2)sample_softmax 中的代碼需要根據(jù)自己的場景來做優(yōu)化,比如在我們的場景中,同一個 batch 中的重復(fù) sample item 比例比較高,把里面的 embedding_lookup 加上 unique,可以大幅提升訓(xùn)練速度。
3)靈活使用 Mask 機(jī)制,可以有效的實(shí)現(xiàn)各種不同的 Attention 策略。
2 實(shí)驗結(jié)果
離線實(shí)驗的指標(biāo)采用 R@N,即打分排序的前 N 項結(jié)果包含Target Item 的比例,對于正向樣本,指標(biāo)稱為 POS@N,我們希望這個值越高越好,對于負(fù)向樣本,指標(biāo)稱為 NEG@N,我們希望這個值越低越好。由于篇幅限制,我們只列出一組主要的實(shí)驗結(jié)果,這組實(shí)驗驗證了 Multitask Learning 和 Negative Feedback 的效果,我們在其他策略都采用上述最優(yōu)的情況下(比如優(yōu)化器,采樣方法等),a 采用傳統(tǒng) DM 方式訓(xùn)練,只保留完播率較高的正反饋 Item 來構(gòu)建行為序列,b 在 a 的基礎(chǔ)上加入 Play Rate、Play Type 特征,c 在 b 的基礎(chǔ)上再加入負(fù)向反饋信號進(jìn)行多任務(wù)訓(xùn)練:
可以看出,加入反饋信號(Play Rate)和歌曲點(diǎn)播 query 意圖信號(Intent Type)后,b 的效果要優(yōu)于 a,再加入 Negative Feedback 目標(biāo)進(jìn)行 Multitask Learning 后,c 可以保證 POS@N 微小變化的情況下明顯降低 NEG@N。
我們在猜你喜歡的線上場景中也證明了新方法的有效性,和基于 DM 原方案的分桶相比,新模型(DM with Play Rate/Intent Type and NEG MTL)分桶的人均播放時長提高了 +9.2%;同時該方法已經(jīng)應(yīng)用于天貓精靈推薦的更多場景中并取得了不錯的收益。
參考文獻(xiàn):
[1] Covington P, Adams J, Sargin E. Deep neural networks for youtube recommendations[C]//Proceedings of the 10th ACM conference on recommender systems. ACM, 2016: 191-198.
[2] Hidasi B, Karatzoglou A. Recurrent neural networks with top-k gains for session-based recommendations[C]//Proceedings of the 27th ACM International Conference on Information and Knowledge Management. ACM, 2018: 843-852.
[3] Sun F, Liu J, Wu J, et al. BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Transformer[J]. arXiv preprint arXiv:1904.06690, 2019.
[4] Li C, Liu Z, Wu M, et al. Multi-interest network with dynamic routing for recommendation at Tmall[C]//Proceedings of the 28th ACM International Conference on Information and Knowledge Management. ACM, 2019: 2615-2623.
[5] Johnson J, Douze M, Jégou H. Billion-scale similarity search with GPUs[J]. IEEE Transactions on Big Data, 2019.
[6] Paudel B, Luck S, Bernstein A. Loss Aversion in Recommender Systems: Utilizing Negative User Preference to Improve Recommendation Quality[J]. arXiv preprint arXiv:1812.11422, 2018.
[7] Zhao X, Zhang L, Ding Z, et al. Recommendations with negative feedback via pairwise deep reinforcement learning[C]//Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. ACM, 2018: 1040-1048.
[8] Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[C]//Advances in neural information processing systems. 2017: 5998-6008.
[9] Song W, Shi C, Xiao Z, et al. Autoint: Automatic feature interaction learning via self-attentive neural networks[C]//Proceedings of the 28th ACM International Conference on Information and Knowledge Management. ACM, 2019: 1161-1170.
[10] Devlin J, Chang M W, Lee K, et al. Bert: Pre-training of deep bidirectional transformers for language understanding[J]. arXiv preprint arXiv:1810.04805, 2018.
[11] Lan Z, Chen M, Goodman S, et al. Albert: A lite bert for self-supervised learning of language representations[J]. arXiv preprint arXiv:1909.11942, 2019.
總結(jié)
以上是生活随笔為你收集整理的基于多任务学习和负反馈的深度召回模型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 物联网的四种计算类型
- 下一篇: 还在为垃圾太难分类而烦恼么?AI算法来帮