哦哇資訊網

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

由 大廠機器學習實戰 發表于 家居2021-12-11

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

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

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

一、模型結構

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

Input Layer:模型原始特徵的輸入

Embedding Layer:特徵的向量化

Interacting Layer:特徵交叉層,是實現特徵高階交叉的關鍵模組

Output Layer:對模型目標的預估

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預估模型進行改進的很重要的方向。

TAG: 特徵模型Layer互動head