多值類別特徵加入CTR預估模型的方法

我們都知道一般單值類別特徵加入到CTR預估模型的方法是先對單值類別特徵進行one-hot,然後和embedding 矩陣相乘轉換成多維稠密特徵,如下圖 1 所示:

▲ 圖1. 單值類別特徵處理方法 

上篇文章稠密特徵加入CTR預估模型的方法中又總結了稠密特徵加入到CTR預估模型中的方法。而在現實實際問題中,往往還會出現多值類別特徵,比如我接觸到的2019騰訊廣告算法大賽中用戶的行爲興趣特徵就是多值類別特徵,也就是一個用戶可以有多個類別的興趣,比如打籃球,乒乓球和跳舞等,並且不同用戶的興趣個數不一樣。還有2019知乎看山杯比賽中的用戶感興趣的話題特徵,也就是一個用戶感興趣的話題可以有多個,並且不同的用戶感興趣的話題個數不一,這些特徵的形式都一般是如下結構(拿用戶感興趣的話題特徵來說):

在CTR預估模型中,對這種多值類別特徵的常用處理方法總結歸納如下:

▌非加權法

最常規的也最簡單的是先對所有‘話題’集合進行one hot編碼,然後按照圖 1 方式對多值類別特徵中的每一項進行稠密特徵的轉換,最後對轉換後的稠密特徵向量進行拼接,然後按項求均值或最大值或最小值等,整個過程可以用如圖 2 表示:

▲ 圖2. 常見多值類別特徵處理方法

可以看出,這樣對多值類別特徵進行處理之後,可以把每個多值類別特徵轉換在同一維度空間中,這樣輸入到神經網絡中不用爲了保持輸入維度一致而進行padding,使輸入變稀疏,也方便和其他特徵做交叉特徵。

▌加權法

仔細一想,如果對多值類型特徵直接求均值似乎不是很符合常理,畢竟用戶對每個感興趣話題的喜愛程度不一樣,這就有了權重的引入,而不是簡單粗暴的求均值了,具體引入權重的做法如圖 3 示意圖:

▲ 圖3. 多值類別特徵加權處理方法

那麼權重是怎樣得來的,總結以下:

通過數據挖掘得到多值特徵中每個值的權重

例如用戶感興趣話題這個多值類型特徵的權重可以這樣獲得:用戶在相關話題問題下回答問題的個數或相關話題回答點讚的次數,也就是回答相關話題問題的個數越多,表明越對該話題越感興趣,權重越大;點贊相關話題回答的次數越多,表明越對該話題越感興趣,權重越大。

通過神經網絡自動學習多值特徵中每個值的權重

1.借鑑論文FiBiNET[1]中把SE模塊用在學習不同embedding vector權重的思想。主要過程如圖 4 :

▲ 圖4. 利用SENet加權思想

先對得到的多維稠密特徵橫向求均值,這部分在SE[2]模塊中稱作squeeze,也就是壓縮的意思,然後再用兩個全連接層進行全連接操作,這部分在SE模塊中稱作excitation,也就是激勵提取的意思,最終的輸出也就是學習得到的多值類別特徵中每個值對應的權重。由於是針對多值類別特徵的處理,因此這裏在編程實現的時候需要按照max length 進行padding之後,再進行one hot編碼等後續操作。

2.借鑑論文AutoInt[3]中學習transformer[4]注意力機制的思想來學習得到embedding vector 在Value空間上的權重信息。具體操作如圖 5 所示,M是多值類別特徵值的個數:

▲ 圖5. 利用transformer attention思想

先通過矩陣乘法線性變換將每個投射到多個子空間中,分別是Query,Key和Value三個空間,計算公式分別如下:

然後計算當前與多值類別特徵中其他embedding vector 的相似度,即通過如下向量內積公式得到:

然後利用softmax對計算得到的相似度進行歸一化,公式爲:

該歸一化後的值即爲學習得到的每個在Value空間的權重,因此加權求和不是對加權,而是對映射到Value空間的特徵進行加權求和,用公式表示如下:

總的來說,通過神經網絡學習得到權重相比較通過數據挖掘得到權重來說計算複雜,計算量大,因此在選擇時需要權衡一下。

除了多值類別特徵,還有行爲序列特徵,他們的處理方法也有相似之處,可以互相借鑑學習,後面有時間介紹一些簡單的行爲序列特徵的處理方法,感興趣的可以關注一下公衆號,精彩下期見~

▌參考文獻

[1][FiBiNET] Combining Feature Importance and Bilinear feature Interaction for Click-Through Rate Prediction (RecSys 2019)

[2][SENet] Squeeze-and-Excitation Networks (CVPR 2018)

[3][AutoInt] AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural Networks (2018 arxiv)

[4][Transformer] Attention is all you need

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章