深度學習技術在推薦算法模型上的使用,已經快速推進了深度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模型原文的下載連結。