又一Attention函数诞生啦,带给你意想不到的巨大提升!
Non-invasive Self-attention for Side Information Fusion in Sequential Recommendation(AAAI2021)
一本有仙氣的筆記1. 前言
序列推薦系統的目標是從用戶的歷史行為中對用戶的興趣進行建模,從而進行時間相關的個性化推薦。
早期的模型,比如CNN和RNN等深度學習方法在推薦任務中都取得了顯著的提升。近年來,BERT框架由于其在處理序列數據時的self-attention機制,已經成為了一種最好的方法。然而,原BERT框架的一個局限性是它只考慮自然語言符號的一個輸入源。
- 在BERT框架下如何利用各種類型的信息仍然是一個懸而未決的問題。
盡管如此,利用其他方面的信息,如商品的類別或tag標簽,進行更全面的描述和更好的推薦,在直覺上還是很有吸引力的。在我們的初步實驗中,我們發現一些簡單的方法,直接將不同類型的附加信息融合到商品embedding中,通常只帶來很少甚至負面的影響。
因此,本文在BERT框架下提出了一種有效利用邊信息的無創自我注意機制(NOVA,NOninVasive self-Attention mechanism)。NOVA利用side信息來產生更好的注意力分布,而不是直接改變商品嵌入,這可能會導致信息泛濫。
我們在公共數據集和商業數據集上都驗證了NOVA-BERT模型,并且我們的方法在計算開銷可以忽略的情況下可以穩定地優于最新的模型。
序列化推薦的目標之一基于用戶的歷史行為,預測用戶下一個感興趣的商品。和用戶級別或者基于相似度的靜態方法相比,序列化推薦系統還會對用戶變化的興趣進行建模,因此對于現實的應用會更為受歡迎。
在大量的實驗中,我們發現基于transformer的模型被認為是處理序列化數據最好的選擇。而其中,最為出名的就是Bert模型,通過利用bert模型,Bert4Rec取得了當時的SOTA效果。盡管Bert框架在許多任務上都取得了SOTA的效果,但是還存在一個較大的問題。
- 對于利用不同類型的side信息,還沒有進行過系統的研究;
除了Item的ID信息,我們還存在非常多的side信息,例如評分和商品描述。然而,BERT框架最初設計為只接受一種類型的輸入(即wordid),限制了side信息的使用。通過試點實驗,我們發現現有的方法通常利用side信息(圖1),但很少有效果。
但是理論上來說,side信息通過提供更多的數據是可以帶來幫助的,但是,如何使用好這些額外的信息來設計模型是非常有挑戰的。
在本文中,我們研究如何使用大量的side信息,并提出了NOVA(Non-inVasive self-Attention mechanism),通過使用side信息來提升模型的預測準確率并且取得了非常好的效果。
在NOVA中,side信息作為self-attention模塊的輔助信息來學習更好的注意分布,而不是融合到Item表示中,這可能會導致信息壓倒性等副作用。我們在實驗室數據集和從真實應用商店收集的私有數據集上驗證了NOVA-BERT設計效果。結果證明了該方法的優越性。本文的核心貢獻有三點:
2. 相關工作
2.1 不同類型的模型比較
- 從早期的CNN->RNN->Attention的演化中,我們發現基于BERT類型的模型可以獲得最好的效果。
2.2 序列化推薦模型的問題
在之前諸多的問題中,大家都知道side information是非常重要的,但是關于side information如何使用的問題卻很少研究,之前的框架都是基于invasive fusion的方式;關于Invasive fusion的方法包括:
- Summation
- Concatenation
- Gated Sum
通過上面的操作,然后將混合的信息輸入到NN中,我們稱此類方法為Invasive的方法,因為它們改變了原始的表示。
- 以前的CNN和RNN工作都試圖利用side信息,將side信息直接融合到商品embedding中,并進行concatenation和addition等操作。
其它一些工作如GRU等提出了更復雜的特征融合門機制和其它訓練技巧,試圖使特征選擇成為可學習的過程。然而,根據他們的實驗結果,簡單的方法不能有效地利用各種場景下的豐富信息。盡管Hidasi等人通過為每種類型的side信息部署一個并行子網來提高預測精度,但該模型變得繁瑣且不靈活。
還有一些研究,并不直接改變商品的embedding,而是使用RNN模型通過item boosting的trick來加入停留時間,這么做我們希望損失函數能意識到dwell time,用戶看一個商品的時間越長,她/他可能對某件商品更加感興趣,但是該trick卻更加依賴于啟發式。另一方面,一些與商品相關的輔助信息(如價格)描述了商品的內在特征,這些特征與停留時間不同,不容易被此類方式利用。
3. 方法
3.1 問題描述
給定一個用戶的歷史交互,順序推薦任務要求與下一個商品交互,或者執行下一個操作。我們用表示一個用戶, 他的歷史交互可以被表示為:
其中商品
表示第 個交互(也可以表示為行為),當有一類行為并且沒有side信息,每個交互可以通過商品的id進行表示:其中
表示第個商品ID,是所有商品的vocabulary, 是字典大小,給定用戶的歷史,我們的目標是預測用戶最有可能交互的下一個商品。
3.2 Side信息
Side信息可以是為推薦提供額外有用信息的任何內容,可以分為兩種類型:
- 商品相關信息或行為相關信息。
基于商品的side信息是固有的,它們可以表述商品,除了商品ID等還可以加入(price,商品的日期,生產者等等)。
與行為相關的side信息與用戶發起的交互有關,例如操作類型(例如,購買、打分)、執行時間或用戶反饋分數。每個交互的順序(即,原始BERT中的位置ID)也可以作為一種行為相關的side信息。如果加入side信息,那么我們的交互就變為:
其中
表示用戶 的第 個交互行為相關的side信息, 表示一個商品,包括了商品的ID和許多商品相關的成分 。商品相關的side信息是靜態的,并且包含了每個特定商品的內部特征,所以我們的詞典可以被重新表示為:我們的目標是預測下一個商品的ID:
其中,
是潛在行為相關的side信息。3.3 BERT和Invasive的self-attention
BERT4Rec是第一次將BERT框架用于序列化推薦任務的,并且取得了SOTA的效果,在BERT框架下面,Item被表示為向量,在訓練的過程中,一些商品被隨機mask掉,BERT模型需要盡力將它們的向量表示恢復過來,
其中
是softmax函數, 是比例因子。BERT使用encoder decoder的設計形式對每個輸入的序列中的商品產出一個上下文的表示,BERT使用embedding層來存儲 個向量,每個對應詞典中的一個商品。為了更好地使用side信息,傳統方法經常會使用分開的embedding層來將side信息編碼為向量,然后將它們fuse加入到ID的embedding中,
是用戶 的第 個交互的集成embedding, 是embedding層,然后我們將集成的embedding序列輸入到模型當中。BERT使用self-attention機制來更新表示層,
我們知道self-attention操作是位置不變的函數,所以此處我們將位置embedding編碼加入其中。也就是說,此處我們的BERT僅僅是將位置信息作為了side信息,并且使用addition作為fusion函數。
3.4 Non-invasive Self-attention
如果我們考慮端到端的BERT框架,它是一個自動編碼器,具有堆疊的self-attention層。相同的embedding映射用于編碼商品ID和解碼還原的向量表示。因此,我們認為
- invasive方法有復雜嵌入空間的缺點,
因為商品ID不可逆地與其他邊信息融合。混合來自id的信息和其他輔助信息可能會使模型難以解碼商品ID。對應地,我們提出了一種新的方法,即non-invasive自注意(NOVA),在利用side信息對序列進行更有效建模的同時,保持嵌入空間的一致性。其思路是:
- 修改自我注意機制,仔細控制自已組件的信息源,即Q、K和V
NOVA不僅是第3.3節中定義的集成嵌入E,還保留了純ID嵌入的分支。
因此,對于NOVA,用戶的歷史由兩個表示集合表示,純ID embedding以及集成的embedding。
NOVA從集成的embedding R,來自于商品ID的emebdding
中計算Q和V,實踐中,我們以張量的形式處理整條序列。其中是Batch size, 是序列長度, 是embedding向量的大小, NOVA可以被表示為:
其中是通過線性轉化得到:
NOVA和invasive方法的比較可以通過下圖看到:
3.5 Fusion操作
NOVA和invasive方法在使用side信息下的不同在于,NOVA將其作為一個輔助的并通過fusion函數將side信息作為Keys和Querys輸入。此處我們定義concatfusion, 來將所有的side信息進行fusion,后面會接一個全鏈接層。
我們可以使用從上下文中提取可訓練的系數來設計gating的fusion,
其中,
是所有特征的矩陣形式, , 是可訓練的參數, 是被fused的特征向量的維度,3.6 NOVA-BERT
每個NOVA層接受兩個輸入,
- side信息
- 商品表示序列
然后輸出相同形狀的更新表示,再將這些表示輸送送到下一層。
對于第一層的輸入,商品表示是純商品ID嵌入。由于我們只使用side信息作為輔助來學習更好的注意分布,side信息不會隨著NOVA層傳播。為每個NOVA層明確提供相同的side信息集。
NOVA-BERT遵循原始的BERT框架,除了將self-attention層替換為了NOVA層之外,所以額外的參數和計算是可以忽略的。
我們認為,在NOVA-BERT算法中,隱藏表示保持在相同的嵌入空間中,這將使解碼過程成為一個齊次向量搜索,有利于預測。
4. 實驗
4.1 效果比較
- NOVA-BERT的效果比其它的都要好;
- 與Bert4Rec僅利用位置ID相比,invasive式方法使用了多種side信息,但改進非常有限甚至沒有正向效果。相反,NOVA-BERT方法能有效地利用side信息,性能穩定,優于其他方法。
- 在我們實驗中,發現越大的denser數據集,模型提升的幅度會下降;我們假設,在語料庫更為豐富的情況下,這些模型甚至可以從商品的上下文中學習到足夠好的商品embedding,從而為輔助信息的補充留下更小的空間。
- NOVA-BERT的魯棒性是非常好的;不管我們使用什么fusion函數,Nova-Bert的效果一直比baseline模型要好;
- 最佳融合函數可能取決于數據集。一般來說,gating方法具有很強的性能,這可能得益于其可訓練的gating機制。結果還表明,對于實際部署,融合函數的類型可以是一個超參數,并應根據數據集的內在屬性進行調整,以達到最佳的在線性能。
4.2 不同side信息的貢獻
- None:是原始的Bert+position ID;
- 商品相關和行為相關的side信息并未帶來準確率的明顯提升;
- 如果結合了與行為相關的side信息,則改進的效果明顯大于其中任何一個帶來的改進的總和;也就是說不同類型的side信息并不是獨立的;
- NOVA-BERT從綜合信息中獲益更多,并且有很強的能力利用豐富的數據而不受信息的困擾;
4.3 Attention 分布的可視化
- NOVA-BERT的注意力得分在局部性方面表現出更強的模式,大致集中在對角線上。另一方面,在基線模型的圖中沒有觀察到。
- 根據我們對整個數據集的觀察,這種對比是普遍存在的。我們注意到側邊信息導致模型在早期層次形成更明顯的attention。實驗結果表明,NOVA-BERT算法以side信息作為計算attention矩陣的輔助工具,可以學習目標的注意分布,從而提高計算的準確性。
此外,我們也進行個案研究,以了解NOVA的注意分布,并進行更詳細的分析。詳情請參閱附錄。
4.4 NOVA-BERT的部署和代價
- NOVA-BERT幾乎沒有額外的計算開銷,與invasive方法的大小相同。
5. 結論
在本文中,我們提出了NOVA-BERT推薦系統和Non-invasive自我注意機制(NOVA)。提出的NOVA機制沒有將sidw信息直接融合到商品表示中,而是利用side信息作為方向引導,保持商品表示在向量空間中不被摻雜。我們在實驗數據集和工業應用兩個方面對NOVA-BERT進行了評估,在計算和模型尺寸方面的開銷可以忽略不計的情況下實現了SOTA性能。
參考文獻
https://www.aaai.org/AAAI21Papers/A
https://mp.weixin.qq.com/s/UHQBLjWldP-XWGO7RgPlCg最強的Attention函數誕生啦,帶給你意想不到的巨大提升!
https://mp.weixin.qq.com/s/UHQBLjWldP-XWGO7RgPlCg更多干貨,請關注公眾號:煉丹筆記總結
以上是生活随笔為你收集整理的又一Attention函数诞生啦,带给你意想不到的巨大提升!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个模型能服务所有的点击率模型?
- 下一篇: 一文梳理多任务学习(MMoE/PLE/D