稠密特徵加入CTR預估模型的方法

稠密特徵一般是相對稀疏特徵來說的,我們知道類別特徵經過獨熱編碼之後比較稀疏,比如類別 [‘小貓’,‘小狗’,‘小熊’,‘小猴’] 被獨熱編碼後的數據結構爲[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]],可以看到這種數據很稀疏,但是像桌子的長度這種稠密特徵數據一般就是 [3.4,2.6,8.9,6.7] 這種。一般針對類別特徵都是通過詞嵌入的方法把稀疏特徵轉化爲稠密特徵然後再輸入到神經網絡中,不然直接輸入會導致維度爆炸等問題,那麼怎樣把稠密數據加入到CTR預估網絡模型中呢?

常規方法

  1. 如圖 1 所示,把原始的稠密特徵直接和全連接層進行連接不和通過詞嵌入轉化的類別稠密特徵進行交叉:
    在這裏插入圖片描述
    右邊的類別特徵經過詞嵌入後每個類別特徵都被映射成了一個向量,不同的類別向量之間經過交叉運算得到交叉特徵。而左邊的原始稠密特徵不和類別特徵進行交叉,直接和高階的交叉特徵進行拼接作爲全連接層的輸入。
  2. 如圖 2 所示,把原始稠密特徵離散化,轉換爲離散特徵,然後和原始類別特徵都進行詞嵌入,之後再進行特徵交叉。此時可以發現,這樣相當於原始稠密特徵參加了特徵交叉:
    在這裏插入圖片描述
  3. 如圖 3 所示,對每個原始稠密特徵x維護一個詞嵌入向量e,然後把原始稠密特徵和權重向量相乘得到最終的特徵向量,相當於一個稠密特徵映射成一個特徵向量,之後和類別映射的詞嵌入矩陣進行拼接。此時仍然可以發現,這樣相當於原始稠密特徵也可以和類別特徵進行交叉特徵提取:
    在這裏插入圖片描述

鮮爲人知的Key-Value Memory方法

在ICMEW的一篇論文中提出了一種把Key-Value Memory [1] 應用到稠密特徵處理上的方法,如圖4所示,可以看到這個模型的輸入是一個稠密特徵q,輸出是一個特徵向量v,也就是實現了1維到多維的特徵空間轉換,那麼具體看一下是怎樣實現的。

在這裏插入圖片描述
向量v的計算是通過對每個embedding vector vi 進行加權求和得到的,公式表示爲
在這裏插入圖片描述
其中wi的計算爲
在這裏插入圖片描述
Ki的計算等於
在這裏插入圖片描述
其中要對q進行歸一化。我的理解就是把一個稠密特徵的值q映射成一個權重分佈,再用這個權重分佈去和維護的N個embedding vector加權求和,最後得到一個和詞嵌入維度相同的向量v。得到向量v之後就和前面的方法一樣,可以和類別特徵進行特徵交叉了。

總結

從上面幾種方法可以發現,稠密特徵要和詞嵌入後的類別特徵做交叉需要在同一個維度空間,也就是要把一維的稠密特徵轉化成和詞嵌入維度相同的特徵空間中,同時上面方法中的詞嵌入矩陣相當於權重矩陣都可以進行優化學習。

參考文獻

[1] Multi-modal Representation Learning for Short Video Understanding and Recommendation. ICME Workshops 2019: 687-690

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