導讀:本文由來自昆士蘭大學,格里菲斯大學和國立交通大學聯合發表在 ICDE2020 上的一篇文章,題目爲:
Sequence-Aware Factorization Machines for Temporal Predictive Analytics
主要提出了一種同時結合了特徵交互中的順序依賴和保持 DNN 的非線性表達能力的 FM based 模型 SeqFM,在建模特徵交互和動態行爲序列時使用了多視圖的自注意力機制。
下面將從論文背景,模型結構,實驗對比以及個人總結幾個方面爲大家介紹這篇文章~
——背景和動機——
- 背景
在廣告和推薦場景中,通常存在着大量的稀疏類別型特徵變量。基於因子分解機的方法 ( DeepFM,DCN,xDeepFM 等 ) 能夠有效的捕獲稀疏類別變量之間的高階特徵交互,減輕了算法工程師手工構造交叉特徵的壓力。 然而,除了類別特徵和稠密值特徵外,還有大量動態的行爲序列類型的特徵。現有的基於 FM 的模型在處理這樣的序列時,大多忽略了行爲之間的順序,即將其當作一個行爲集合進行建模處理,因此無法有效捕獲動態行爲序列特徵的序列依賴性和內在的模式。 因此提出 Sequence-Aware FM 模型,通過建模數據中的序列依賴關係來對蘊含時序特徵的數據進行建模分析。
- 舉例說明 SeqFM 與傳統的 FM-based 方法的區別
本文使用了一個簡單的例子來說明 SeqFM 相比於傳統的 FM based 方法的改進,假設用戶購買過 [褲子,外套,顯示器,鼠標]。
由於目前大部分 FM-based 模型大多假設了序列數據是無序的,即這些屬於動態特徵的序列中的每一個 item 都被同等的對待了,因此模型很難區分當用戶接下來會購買腰帶還是鍵盤,因爲序列集合中都有和這兩個相似的商品,動態特徵的序列屬性難以被捕獲。
- SeqFM
如上圖所示,SeqFM 使用了一個多視圖學習機制。 由於靜態特徵和動態特徵中包含了不同的信息,使用三個不同的視圖來進行特徵交互的建模。
由於使用 CNN 或者 RNN 來進行序列建模計算時間和存儲需求都較高,SeqFM 在每個視圖內部採用了 self attention 機制。
對於動態視圖和交叉視圖,使用 mask self attention 單元分別保留動態特徵序列的時間方向屬性並屏蔽不相關的特徵交互。
在通過 multi view self attention 機制編碼特徵之間的高階交互後,使用一個參數共享的殘差連接神經網絡從特徵交互中提取更多的隱含信息,最後輸出模型得分。
——Sequence-Aware FM 模型——
這裏特徵劃分爲兩大部分,靜態特徵 $G^\circ$( 如用戶畫像特徵,用戶性別 ) 和動態特徵 $G^\triangleright$( 如用戶歷史上有過行爲的商品 )。
這裏需要注意的是動態特徵 $G^\triangleright$ 是按時間順序構造的。在特徵矩陣 $G^\triangleright$ 中,若行號 i<j 那麼特徵 $g_i^\triangleright\in G^\triangleright$ 對應的行爲總是發生在 $g_i^\triangleright\in G^\triangleright$ 對應的行爲之前。
使用 $n^\triangleright$ 表示動態特徵序列的最大長度,如果實際長度大於 $n^\triangleright$,那麼取最近的 $n^\triangleright$ 個特徵。如果少於 $n^\triangleright$,那麼在矩陣 $G^\triangleright$ 中從上到下 ( 從行爲發生時間遠到近 ) 填充零向量。
SeqFM 的形式化表示爲:
其中 $w_0$ 是全局偏置項,中間 $[G^\circ w^\circ;G^\triangleright w^\triangleright]\boldsymbol{1}$ 爲對應的一次項線性特徵 $f(G^\circ,G^\triangleright)$ 爲本文提出的多視圖自注意力因子分解機制。
下面詳細介紹 SeqFM 模型的細節。
1. Embedding Layer
將特徵劃分爲靜態特徵 $G^\circ$ 和動態特徵 $G^\triangleright$,分別經過 embedding 後得到 $E^\circ$ 和 $E^\triangleright$。
2. Static View With Self-Attention
其中
$Q^\circ=E^\circ W^\circ_Q,K^\circ=E^\circ W^\circ_K,V^\circ=E^\circ W^\circ_V$,分別是由輸入的 embedding 矩陣 $E^\circ$ 經過線性變換得到。
這裏關於 self attention 原理和實現有疑問的同學可以參考我之前寫的另一篇文章,裏面有詳盡的說明:
AutoInt:使用 Multi-head Self-Attention 進行自動特徵學習的 CTR 模型
https://zhuanlan.zhihu.com/p/53462648
3. Dynamic View with Self-Attention
在 Dynamic View 中,由於 $n^\triangleright$ 個動態特徵中天然具有序列依賴關係,第 i 個動態特徵 ($i\leq n^\triangleright$) 只會和處於位置 $j(j\leq i)$ 的前序特徵發生交互。
也就是說特徵交互在 dynamic 視圖中是具有方向性的,只存在前向特徵交互。 爲了實現這樣的功能,採用了 masked self attention 機制
其中 $M^\triangleright\in{-\infty,0}^{n^\triangleright\times n^\triangleright}$ 是一個常量矩陣,其作用是隻允許動態特徵 $e^\triangleright_i$ 和 $e^\triangleright_j$ 的交互發生在 j≤i 的時候。
對於矩陣 $M^\triangleright$ 中的元素,當且僅當 i≥j 的時候 $M^\triangleright_{ij}$ 取0,其餘均取 $-\infty$。
通過添加注意力 mask 矩陣 $M^\triangleright$,對於第 i 個特徵,它與第 i+1 個特徵開始的後面的特徵交互分數爲 $-\infty$,第 i-1 及其前面的特徵交互分數保持不變。
因此經過 softmax 層後,能夠確保第 i 個特徵只和相對於它自身的歷史特徵 j≤i 存在非0的交互得分。
4. Cross View with Self-Attention
這裏的 $E^*\in R^{n^\circ+n^\triangleright}$ 是由 $E^\circ$ 和 $E^\triangleright$ 垂直拼接而成的,與 Dynamic View 不同的是,這裏的 attention mask 矩陣的構造是這樣的
cross view self-attention mask 屏蔽了相同類別特徵內部的特徵交互,只允許跨類別的特徵交互 ( 靜態特徵和動態特徵之間 )。
5. Intra-View Pooling Operation
在經過三個視圖得到特徵交互的表示後,將這些表達向量輸入到 intra-view pooling layer 中,這一層將所有的交互向量壓縮成一個向量:
其中 $n^{view}$ 表示每個視圖內部的特徵組個數,$h^{view}_i$ 爲視圖內第 i 個特徵向量,${\bar h}^{view}$ 是經過池化操作後得到的壓縮表示向量。
6. Shared Residual Feed-Forward Network Work
這裏使用一個共享參數的殘差全連接神經網絡,還使用了 Layer Normalization 和 Dropout 等訓練技巧。
- 殘差連接可以將低層的特徵傳遞高高層。
- Layer Normalization 歸一化可以讓網絡的訓練過程更加穩定以及加速訓練。
- Dropout 起到了一定的正則化和集成學習的作用。
7. View-Wise Aggregation
在輸出得到最終的 logit 之前,通過水平拼接三個視圖產生的隱向量得到最終的聚合向量:
這裏得到的 $h^{agg}\in R^{1\times 3d}$,是一個一維的長向量。
8. Output Layer
通過一個向量內積操作得到最終的得分:
——實驗對比——
1. 離線實驗
作者在不同的任務和不同的數據集上均進行了大量實驗,驗證了本文提出的 SeqFM 的有效性,也驗證了本文提出的 SeqFM 在處理動態序列特徵時相比於傳統的基於 FM 的方法簡單的將所有動態特徵作爲普通無序集合特徵處理對於時序預測分析更有幫助。
實驗選取的 baseline 方法對比目前較爲主流的方法,如 Wide&Deep,NFM,xDeepFM 及 DIN 等,在分類任務中選取了 recsys2019 挑戰賽和淘寶的公開數據集,具有一定代表性。
- 分類任務
- 排序任務
- 迴歸任務
2. 關鍵組件的重要性
這裏 SV,DV,CV 分別代表本文中提出的三種不同的視圖,RC 代表殘差連接,LN 代表 Layer Normalization。
這裏 ↓ 標記裏嚴重的 ( 相對5% ) 指標相對下降。
- 去掉 Static View 下跌很容易理解,相當於丟失了很多基礎的特徵組合。
- 去掉 Dynamic View 後在分類任務中有非常嚴重的指標下跌 Trivago ( 10% )和 Taobao ( 12% )。作者給出的解釋是這些數據集中包含大量的點擊行爲日誌,這些動態特徵序列攜帶着每個用戶的長期偏好信息。
- 去掉 Cross View 後的下跌說明了 Cross View 中靜態特徵和動態特徵之間的自注意力機制對於模型的最終表現是有貢獻的。
- 去掉 Residual Connections 說明了殘差連接確實有助於將低層的信息繼續傳遞給高層並且得到有效的保留。
- 去掉 Layer Normalization 說明特徵的歸一化會帶來更好的結果。
——個人總結——
- 本文提出的 SeqFM 是第一個同時結合了特徵交互中的順序依賴和保持 DNN 的非線性表達能力的 FM based 模型,之前的工作大多側重於建模特徵的高階交互或捕捉動態行爲序列中蘊含的信息。
- SeqFM 中的 Static View 應該可以替換成其他特徵交互組件,如 FM,CrossNet 及 CIN 等,具有一定擴展性。
- 相比於傳統的直接將序列特徵拼接靜態特徵輸入全連接網絡,SeqFM 分別在動態序列特徵內部和靜態特徵與動態特徵之間進行了特徵交互,保留了更多的信息。
- 建模動態特徵使用 mask self-attention,相比於 rnn basd 方法提升了計算效率也避免了可能存在的長期依賴問題。不過沒有將 SeqFM 和一些 rnn basd 方法進行對比。
- 本文不是第一個使用 self attention 對序列建模的方法,沒有將 SeqFM 和使用 self attention 的其他序列建模方法進行對比實驗。
- Shared FFN 在減少模型參數的同時不知道相對於非共享參數對模型效果的影響如何,這裏如果有進行過對比就更好了。
——參考資料——
Sequence-Aware Factorization Machines for Temporal Predictive Analytics
https://arxiv.org/abs/1911.02752
作者在論文裏給出了代碼鏈接,不過訪問好像問題,大家可以先關注下 deepctr的代碼倉庫,之後我會更新在這裏:
https://github.com/shenweichen/deepctr
作者介紹:
沈偉臣,阿里巴巴算法工程師,碩士畢業於浙江大學計算機學院。對機器學習,強化學習技術及其在推薦系統領域內的應用具有濃厚興趣。
本文來自 DataFun 社區
原文鏈接: