推薦算法AutoInt模型:基於multi-head self-attention的特徵高階交叉

2022-01-01 黑貓白貓cutecat

        深度學習技術在推薦算法模型上的使用,已經快速推進了深度CTR預估模型的發展。深度神經網絡對CTR模型的輸入特徵本身就具有高階交叉的特性,但是屬於隱式的特徵交叉,可解釋性較差。近年來,推薦算法的很多研究也都集中在對特徵做高階交叉,而且驗證了高階交叉特徵對於預估目標的有效性,DeepCrossing、AFM、NFM、DCN、 xDeepFM等都在不同階段取得了state-of-art的效果。因此在工業界,如何對大量的高維稀疏特徵進行有效的高階交叉,是一個值得持續研究的方向。

        推薦算法領域也在逐漸和其它領域的技術在做深度的結合,例如NLP領域大放異彩的Transformer模型,已經驗證可以在推薦算法模型的特徵信息提取上取得不錯的效果,例如BST模型等都對現有的CTR模型進行了有效的優化。

        因此,能否通過Transformer模型的核心結構multi-head self-attention模塊,實現對特徵的顯式的高階交叉呢?AutoInt模型通過巧妙的模型設計實現了自動特徵交叉,它通過對多層multi-head self-attention模塊的堆疊,並結合在圖像領域表現驚豔的Residual Network,實現了對輸入特徵進行低階以及高階交叉信息的提取。

        下面直接進入正題,來看一下AutoInt模型的原理。

一、模型結構


        AutoInt模型的結構如下圖所示,主要分為下面4個部分:

1.Input Layer

        在工業界,模型的輸入特徵一般是以大規模的稀疏特徵為主,以及其它的一些dense特徵,如下公式表示所有的特徵:

其中,每個特徵 x_i 表示一個特徵field,對於category特徵,x_i 表示一個one-hot或者multi-hot形式的特徵,對於numerical特徵,x_i 表示一個scalar單值。

2.Embedding Layer

        對輸入的原始特徵,通過特徵變換矩陣,可以將包括category特徵和numerical特徵在內的每一個原始特徵,轉換成對應的embedding表示。

        這裡主要對category特徵和numerical特徵的embedding方式做詳細的介紹,其中category特徵包括兩種,分別是可以表示成one-hot形式的category特徵、表示成multi-hot形式的category特徵,具體如下:

one-hot特徵:即在其對應的one-hot表示中,只有一個index的元素為非零元素,對應下面第一個embedding變換公式;

multi-hot特徵:即在其對應的multi-hot表示中,有不止一個index的元素為非零元素,由於最終需要將該特徵轉換成一個對應的embedding表示,因此常見的方式就是將其多個非零index對應的embedding表示做avg處理,對應下面第二個embedding變換公式。這裡其實可視具體場景選擇對多個embedding做avg處理或者做sum處理;

numerical特徵:當特徵為單值的numerical特徵時,只需要將原始特徵當成一個特徵處理,並將特徵本身表示成embedding向量,但是最終這個numerical取值的特徵表示成其特徵值與embedding向量相乘的結果,對應下面第三個embedding變換公式。

3.Interacting Layer

        類似於FM模型的特徵二階交叉中用到了特徵的embedding表示,此處的特徵交叉層也使用到了Embedding Layer層對特徵的embedding表示。作為Transformer模型的核心模塊,multi-head self-attention在這裡主要是用來對特徵信息進行提取和交叉計算。

        這裡主要是使用key-value的attention機制來計算交互特徵的重要性,以特徵 x_m 為例,可以計算包含特徵 x_m 的交互特徵中,哪些交互特徵是更加有效的。首先,如下公式:

可以計算出在h這個head中,特徵 x_m 和其它任意特徵 x_k 之間的相關性分數。其中 ψ^h(·, ·) 表示特徵 x_m 和特徵 x_k 之間attention分數的計算函數,常見的 ψ^h(·, ·) 可以是神經網絡的計算方式,也可以是向量之間內積的計算方式,AutoInt中為了計算的簡便,選擇了向量內積的計算方式。另外, W^h_Query 和 W^h_Key 都屬於變換矩陣,它們的維度都是 d✖️d',可以分別將特徵 x_m 向量表示 e_m、以及特徵 x_k 向量表示 e_k,即將特徵表示從 d 維的空間變換到 d' 的空間。然後我們可以通過下面的公式更新 e_m 的特徵表示:


其中,W^h_Value 的維度也是 d✖️d'。

        現在來看,d' 維空間的特徵 e^h_m,是來自於特徵 x_m 和與其具有相關性的特徵的交叉結果的組合。同時,借鑑Transformer中經驗,可以將self-attention從1個head拓展到多個head,即multi-head,這樣可以從不同head所表示的子空間中學習到與眾不同的特徵交叉信息,不同head學到的特徵交叉結果可以按照如下公式進行concat:

其中,⊕ 表示concatenation的操作,H 表示head的數量。

        在學習到高階特徵的同時,為了能夠使模型保留低階的原始特徵,AutoInt將經典的殘差網絡結構加入到這裡的交互層,即:

其中,W_Res 是為了將 e_m 的維度和 e'_m 對齊。因此通過上面的操作,可以將特徵 e_m 變換到一個新的特徵表示 e^Res_m ,而且 e^Res_m 已經是特徵原始表示 e_m 對應的高階交互特徵了。同時,這裡的multi-head self-attention和Residual結構組成的交互層,可以進行多個這樣交互層的堆疊,從而可以實現任意階特徵交互。

4.Output Layer

        從上面可以看到,對於每個特徵進行變換都可以得到一個新的特徵表示,因此對這些新的特徵表示進行concat之後,進行模型的預估,公式如下:

二、模型分析

        這裡來看下,AutoInt模型結構到底學習到了多少階的交互特徵呢?

        為了方便理解,假設只有4個field特徵,分別為 x_1、x_2、x_3、x_4。在第一個交互層(可以只有一個,也可以有多個交互層)時,每個特徵都可以和其它任何特徵做交互計算,因此,任意兩個特徵,都可以通過attention相關性分數計算出來它們對應的二階特徵交互結果,例如 g(x_1, x_2)、g(x_2, x_3)、g(x_3, x_4)等,其中 g(·) 表示非加性的特徵交互函數。根據上面的AutoInt模型介紹,可以看到,包含特徵 x_1 的交互特徵通過交互層之後可以編碼成新的特徵表示 e^Res_1,同理,對於其它每一個特徵而言,第一個Interacting Layer都會輸出起對應的二階交叉特徵。

        現在在第一個Interacting Layer之後堆疊第二個Interacting Layer,那麼可以生成高階特徵交互信息。e^Res_1、e^Res_3都是由第一個Interacting Layer輸出的二階交叉特徵,同時,e^Res_3 中也包括特徵 x_3 的原始1階特徵(通過Residual network的short-cut結構得到的),因此在第二個Interacting Layer中,通過交叉e^Res_1、e^Res_3中一階信息可以得到同時包含x_1、x_2、x_3的三階交叉信息。另外,因為e^Res_1、e^Res_3分別包含g(x_1, x_2)、g(x_3, x_4)這樣的二階信息,因此通過交叉e^Res_1、e^Res_3可以得到同時包含x_1、x_2、x_3、x_4特徵組合的4階交叉信息。

        從上面的分析可以看到,隨著繼續堆疊Interacting Layer層,組合得到的交叉特徵的階數會更高,因此通過這種計算attention相關性分數的方式,可以學習到特徵之間的高階交互、低階信息(來自於Residual模塊)等。

三、模型效果

        AutoInt模型在多個數據集上進行了實驗,從整體結果來看,基本可以穩定的優於其它baseline模型的效果。

        另外需要注意的是,AutoInt結構模型中,在Interacting Layer之後直接進行模型的預估了,而通常情況下認為,將特徵以feed-forward形式(即增加MLP結構)進行特徵信息的隱式提取,可以進一步提升模型的效果。AutoInt實際上也進行了相應的實驗,而feed-forward形式的隱式特徵提取方式確實帶來了一定的收益,見下面進一步的實驗效果,這也進一步證明了AutoInt對比所有baseline效果的優勢非常solid。

四、後續模型學習

        AutoInt模型通過multi-head self-attention模塊實現了對特徵的顯式高階交互,同時通過引入的Residual network結構保留了原始低階特徵,使得整個AutoInt模型組合了高階交互特徵、低階交互特徵、低階特徵等有效信息。這裡引入的multi-head self-attention模塊是對NLP中Transformer模型的簡化版,而Residual network則是使用了CV領域殘差網絡的原始結構,因此推薦領域算法模型通過組合NLP領域、CV領域的深度學習技術,可以實現對特徵信息的有效表徵和學習。這也是之後的對推薦算法領域的CTR預估模型進行改進的很重要的方向。


        關注公眾號,後續將獲得更多精彩的推薦算法和廣告算法模型的分享。公眾號內回復【AutoInt】,即可獲得AutoInt模型原文的下載連結。

相關焦點

  • transformer中multi-head attention中每個head為什麼要進行降維?
    transformer中multi-head attention中每個head為什麼要進行降維?第一:multi-head attention 並不是真正意義上的對head 降維,而應該是維度的切割,這種解耦操作在不會丟失原始head包含的信息情況下還能夠降低計算的複雜度(矩陣參數量512*512=262144,8x64x64 = 32768)然後:模型在描繪低緯空間和高維空間數據的能力是有限的,模型對低維的multi head的特徵提取難度低於對一個高緯的one head。
  • 從Seq2seq到Attention模型到Self Attention(二)
    這篇文章將重點擺在Google於2017年發表論文「Attention is all you need」中提出的 「」The transformer模型。」The transformer」模型中主要的概念有2項:1. Self attention 2. Multi-head,此外,模型更解決了傳統attention model中無法平行化的缺點,並帶來優異的成效。
  • 【推薦算法】AttentionFM模型原理和實踐
    AFM模型引入attention機制,針對不同的特徵組合使用不同的權重,增強了模型的表達能力。這也使得模型的可解釋性更強,方便後續針對重要的特徵組合進行深入研究。1.2 AFM模型在FM、DeepFM、NFM等模型中,不同field的特徵Embedding向量經過特徵交叉後,將各交叉特徵向量按照Embedding Size維度進行「加和」,相當於是「平等」地對待所有交叉特徵,未考慮特徵對結果的影響程度,事實上消除了大量有價值的信息。
  • 詳解Self-Attention和Multi-Head Attention
    Self-Attention的作用Self Attention可以捕獲同一個句子中單詞之間的一些句法特徵(比如圖展示的有一定距離的短語結構)Self Attention可以捕獲同一個句子中單詞之間的一些語義特徵(比如圖展示的its的指代對象Law)。
  • nlp中的Attention注意力機制+Transformer詳解
    3、Encoder-Decoder attention 與self-attention mechanism有哪些不同?4、multi-head self-attention mechanism具體的計算過程是怎樣的?5、Transformer在GPT和Bert等詞向量預訓練模型中具體是怎麼應用的?有什麼變化?
  • 深度學習之Attention模型詳解
    Attention-Based Input Interaction Layer本文作者在上述模型的基礎上,增加了一層基於attention的交互層。其目的就是在剛做完embedding以後,給兩個句子更相關的部分賦予更多的權值。
  • 人人都能看得懂的Self-Attention詳解
    完全基於CNN的Seq2Seq模型雖然可以並行實現,但非常佔內存,很多的trick,大數據量上參數調整並不容易。【長期依賴問題&調參問題】而Self-Attention允許對依賴關係建模,而不需要考慮它們在輸入或輸出序列中的距離,並且可以將一個序列的不同位置串聯起來。最重要的是有一些網絡證明Self-Attention效果確實如上所說。
  • BMC Bioinf|基於雙向LSTM和Multi-head Attention的HLA與肽的結合預測
    attention mechanism」。在HLA分子與肽的結合預測任務中,基於深度學習的預測模型雖然表現出較好的性能,但許多依賴於特定類型的HLA分子或特定的肽表位長度,且對數據量依賴較大,這導致數據量較少的HLA-C類分子和長肽表位的預測性能相對不佳。為此,作者基於雙向LSTM和Multi-head Attention提出了新的預測模型,改善了HLA-C類分子和長肽表位的預測性能。
  • 【推薦算法】DeepFM模型原理與實踐
    1 算法背景對於一個基於CTR預估的推薦系統,學習用戶點擊行為背後複雜、有效的特徵表示非常重要。那麼,如何學習出有效的特徵表示呢?:在不同的推薦場景中,低階組合特徵或者高階組合特徵可能都會對最終的CTR產生影響。
  • 【源頭活水】詳解Transformer (Attention Is All You Need)
    首先感謝Jay Alammer詳細的講解,其次推薦大家去閱讀原汁原味的文章。2.4 Multi-Head AttentionMulti-Head Attention相當於  個不同的self-attention的集成(ensemble),在這裡我們以  舉例說明。Multi-Head Attention的輸出分成3步:將數據  分別輸入到圖13所示的8個self-attention中,得到8個加權後的特徵矩陣  。
  • RIID知識追蹤(一)基於NN方法的SAKT模型(含論文及代碼實現)
    前言目前,知識追蹤算法主要分類兩大類:(1)基於Markov模型的BKT,(2)基於深度學習的DKT類模型。相對於BKT,基於深度學習的DKT類算法,因為算法實現更簡單,同時因為深度學習模型能夠更好的捕捉到用戶學習行為中更深層次的一些特徵,所以效果更好。下圖可以很直觀的看出來,DKT算法明顯優於BKT算法。
  • 計算機視覺中的注意力:PyTorch中實現MultiHead和CBAM
    輸入是[128, 32, 1, 256],其中128對應batch,32對應序列長度,1對應head的數量(對於多個attention head我們會增加),256是特徵的數量 .(q)         return q, attn    query = torch.rand(128, 32, 256) multihead_attn = MultiHeadAttention(n_head=8, d_model=256, d_k=32, d_v=32) attn_output, attn_weights = multihead_attn
  • Transformer 模型研究
    Transformer 是一種基於編碼器-解碼器結構的模型,模型結構如圖 3-3 所示。它有一個編碼器-解碼器結構,編碼器由六個相同的層組成,每一層有兩個子層。不同於一般的卷積網絡,Transformer 的特徵聚合和特徵變換同時進行(例如,卷積層後跟一個非線性的激活函數),這兩個步驟是解耦的 Transformer 模型,即 self-attention 層只進行聚合而前饋層執行變換。
  • 從原始碼剖析Self-Attention知識點
    當然,QKV 參數矩陣也使得多頭,類似於 CNN 中的多核,去捕捉更豐富的特徵/信息成為可能。4. 在常規 attention 中,一般有 k=v,那 self-attention 可以嘛?self-attention 實際只是 attention 中的一種特殊情況,因此 k=v 是沒有問題的,也即 K,V 參數矩陣相同。
  • Attention模型方法綜述 | 多篇經典論文解讀
    本文基於幾篇經典的論文,對 Attention 模型的不同結構進行分析、拆解。先簡單談一談 attention 模型的引入。以基於 seq2seq 模型的機器翻譯為例,如果 decoder 只用 encoder 最後一個時刻輸出的 hidden state,可能會有兩個問題(我個人的理解)。
  • Attention is All You Need | 每周一起讀
    模型的框架如下: Encoder 部分 -- 6 個 block,每個 block 中有兩層,他們分別是 Multi-head self attention 和 Position-wise feed forward。 1.
  • Self-Attention與Transformer
    因此,為了讓模型的能力進一步提升,在論文《Attention is All You Need》中提出了Transformer模型,該模型利用Attention機制可以完全代替RNN、CNN等系列模型。目前大熱的Bert就是基於Transformer構建的,這個模型廣泛應用於NLP領域,例如:機器翻譯、問答系統、文本摘要和語音識別等方向。
  • 一文搞懂NLP中的Attention機制(附詳細代碼講解)
    Analysis3.1 Prosattention的好處主要是具有很好的解釋性,並且極大的提高了模型的效果,已經是很多SOTA 模型必備的模塊,特別是transformer(使用了self / global/ multi-level/ multihead/ attention)的出現極大得改變了NLP的格局。3.2 Cons沒法捕捉位置信息,需要添加位置信息。
  • 【Self-Attention】幾篇較新的計算機視覺Self-Attention
    這文章扯了很多 Multi-scale 特徵融合,講了一堆 story,然並卵;直接說重點貢獻,就是在 non-local block 的協方差矩陣基礎上,設計了基於 PCA 的新loss,更好地進行特徵交互。
  • 不得不了解的五種Attention模型方法及其應用
    先簡單談一談 attention 模型的引入。以基於 seq2seq 模型的機器翻譯為例,如果 decoder 只用 encoder 最後一個時刻輸出的 hidden state,可能會有兩個問題(我個人的理解)。