選單

推薦演算法精排模型PNN:Product-based Neural Network

對特徵交叉資訊有效抽取並應用到搜廣推業務的點選率預估模型中,一直是網際網路大廠煉丹師們孜孜不倦的追求,在FM模型、FNN模型等有特徵cross應用的CTR預估模型基礎上,Product-based Neural Network模型被提出,並用不同的特徵交叉模式取得了更優的效果。

PNN模型主要的貢獻在於:

基於product的結構,更好地學習category特徵的embedding表示;

模型融合了category特徵二階交叉資訊,以及使用全連線層學習高階特徵交叉資訊。

一、模型結構

PNN模型結構的設計,考慮到了工業界中存在的大規模稀疏特徵的情況,這裡考慮到,大部分的稀疏特徵來自於category特徵進行one-hot或者multi-hot轉化之後得到,因此在PNN模型中處理的特徵也是以category特徵為主。

下圖為PNN模型的結構設計,主要分為以下幾個模組:

Input:特徵輸入層,特徵以Filed形式進行表示,相當於FFM模型中的域的概念;

Embedding Layer Pair-wisely Connected:將每個特徵按照field粒度轉化成embedding表示;

Product Layer Pair-wisely Connected:特徵embedding之間的二階交叉乘積;

HIdden Layers:隱層MLP。

推薦演算法精排模型PNN:Product-based Neural Network

二、特徵交叉方式

1.PNN

對於product的形式,探索了兩種方式,inner product和outer product。我們先來看常規的特徵間的product。

對於上圖的PNN模型的模型結構中從上到下的輸入輸出計算流程為:

其中公式(1)的函式表示sigmoid非線性啟用函式,公式(2)和公式(3)分別表示隱層的非線性對映。

下面公式(4)表示定義了兩個向量之間的內積計算:

A和B進行element-wise形式的乘積並加和得到一個標量。因此公式(5)表示了Product Layer中的矩陣運算,其中z表示一階線性訊號,p表示二階交叉訊號,因此公式(6)和(7)中的 fi 表示一個M維的embedding vector,而 pi,j 表示一個pairwise的特徵交叉,對於 pi,j=g(fi,fj),PNN模型設計了不同的函式g的實現方式,也就是PNN中的兩個變種IPNN和OPNN。

對於特徵field i 的embedding vector fi來說,它是Embedding Layer的輸出,計算公式如下所示,其中x表示輸入的包含多個fields的category特徵,而x[start_i : end_i]表示對特徵field i 的one-hot編碼向量,而W0表示Embedding Layer的引數,而 W_0^i 的維度為M*(end_i - start_i + 1)。

2.IPNN

基於上面一部分介紹到的內容,IPNN的g函式表示為g(fi,fj)=。對於一階線性資訊表示為:

而對於二階交叉資訊,g(fi,fj)運算方式為特徵向量之間的內積,因此p的維度為N*N,N表示特徵fields的數量,但是這種pairwise連線的方式大大增加了模型的引數空間複雜度和運算時間複雜度,均為N^2的複雜度,而參考之前FM模型的方式,提出了使用矩陣分解的方式來降低複雜度的方法,也就是對每個特徵學習一個向量,然後特徵之間的交叉資訊透過特徵對應向量的交叉內積形式得到即可,如公式(11)所示,因此 lp 如公式(12)所示:

透過這種方式,使得空間複雜度為O(D1*M*N),而時間複雜度為O(D1*M*N),也就是將公式(3)的複雜度從N的二次方降低至N的線性複雜度了。

3.OPNN

與透過輸入兩個特徵向量得到一個標量的內積計算方式不同的是,外積是透過輸入兩個特徵向量得到一個矩陣,IPNN透過內積來定義特徵交叉,而OPNN是透過外積來定義特徵交叉。IPNN和OPNN唯一的不同在於二階項p的差異,在IPNN中,pi,j的維度都是1*1,也就是一個標量,而在OPNN中,g(fi,fj)=fi * fi^T,因此對於每一個二階項p來說,pi,j的維度都是M*M,因此這種情況下,l1空間複雜度和時間複雜度都是N^2*M^2,為了降低複雜度,使用了element-wise的疊加方式,如下公式所示:

使得複雜度降低至M*N的量級,其中,p的維度為M*M,那麼W_p的複雜度也是M*M的量級,最終l1層的空間複雜度為O(D1*M*(M+N)),時間複雜度也是O(D1*M*(M+N))。

三、模型對比

對於PNN模型設計的原理,可以跟之前的一些模型進行對比:

FNN模型:如果將PNN模型中的 lp模組去除之後,那麼PNN模型幾乎等價於FNN模型;

FM模型:如果將PNN模型中的隱層去除,同時輸出層只對Product Layer進行簡單的等權重sum的話,那麼PNN模型就跟FM模型非常相似了。

PNN模型除了單獨的IPNN和OPNN之外,還可以將IPNN中的內積部分和OPNN中的外積部分進行組合,得到更負責的PNN模型。

四、後續模型學習

PNN模型的設計其實也是對特徵交叉資訊的新的一種提取方式,包括線性的二階交叉資訊和非線性的高階交叉資訊,可以看出來對於特徵資訊的有效抽取和組合確實能夠獲得更有效的模型效果。