點擊預估PNN模型,豐富特徵交叉的方式

目錄

1. 前言

2. PNN模型結構

3. PNN模型原理

    3.1 介紹PNN模型 Product Layer 的線性部分  

    3.2 介紹PNN模型 Product Layer 的非線性交叉部分  

        3.2.1 Inner Product(內積) 交叉形式,IPNN

        3.2.2 Outer Product(外積) 交叉形式,OPNN

1. 前言

說在前面,點擊預估模型在廣告、搜索、推薦領域應用比較廣泛。從傳統的協同過濾、機器學習等方法逐漸過渡到深度學習領域,模型的複雜度在不斷地提高,當然效果也在不斷地提升。雖然目前發表論文時,總會將源代碼放到網上,但是作爲算法工程師要儘量的理解算法原理,並達到復現論文的能力。靜下心閱讀論文、拿出紙和筆推導公式,一定能掌握論文原理的整個脈絡。一起加油學習吧,奧利給!

本文主要介紹一下 Product-based Neural Networks for User Response Prediction (PNN) 點擊預估模型,PNN 結構網絡相對傳統結構的 Embedding+MLP(Multi-layer Perceptron) 點擊預估模型,在 Embedding 層後增加了 Product Layer(特徵乘積層),以捕捉基於 Field 的二階特徵相關性。並定義了Inner Product,Outer Product等多種Product的操作捕捉不同的交叉信息,增強了模型表徵不同數據模式的能力 。

MLP有對特徵進行高階交叉的作用,但是MLP的特徵交叉的能力是比較弱的,這也是爲什麼很多深度學習點擊預估模型加入 Product Layer 的原因。

補充一個小問題:爲什麼MLP有對特徵進行高階交叉的作用?

答:因爲激活函數的存在,爲MLP提供了非線性擬合能力。特徵加權求和的結果,通過sigmoid、tanh等激活函數之後,與其他神經元的輸出進行進一步的混合,再通過下一層神經元的激活函數增加非線性。經過層層神經網絡處理後,使MLP具備了特徵交叉的能力,甚至在N層之後,就具備了擬合任意函數的能力。

2. PNN 模型結構

PNN 網絡結構圖如圖 1 所示。接下來介紹一下PNN模型的網絡結構。

圖1 PNN網絡結構圖

輸入層:多個類別 Field 變量,輸入變量個數 

Embedding Layer: Field 類別做Embedding映射,Embedding維度長度相同,均 維;

Product Layer:分爲 部分(線性部分,保留低階特徵);  部分(又分爲Inner Product(內積)、Outer Product(外積) 兩種形式,提供非線性/交叉信息);

Hidden Layer 1:將Product Layer的結果輸入到第一層隱層, 

Hidden Layer 2:將Hidden Layer 1的結果輸入到第二層隱層,  

輸出層:Hidden Layer 1的結果經過Sigmoid層輸出預估值, 

3. PNN 模型原理

PNN模型的創新點在於 Product Layer,此處主要介紹該部分的原理部分。Product Layer 可以分成兩個部分,一部分是線性部分 ,一部分是非線性部分 。具體形式如下:

3.1 介紹PNN模型 Product Layer 的線性部分  

 的表達式如下所示:

其中:

(1)

可以認爲  就是Embedding層的複製品;

(2)

 的長度 表示第一個隱層的輸出節點個數,每個元素  是一個標量,每個元素中的權重矩陣 是不同的。計算時  是共享的,爲輸入Embedding 矩陣。

線性部分的權重矩陣參數情況: 。

3.2 介紹PNN模型 Product Layer 的非線性交叉部分  

  的表達式如下所示:

其中:


 表示成對特徵交叉函數,定義不同的交叉方式也就有不同的PNN結構,  。下面分別介紹 Inner Product,Outer Product 兩種 Product 操作形式。

3.2.1 Inner Product(內積) 交叉形式,IPNN

此時定義: ,是一個標量。則  中的第  個元素爲:

 

其中: 表示輸入的Field個數;表示第  個節點連接 Product Layer 的權重,形式同  ,  參數量共計 ; 表示矩陣逐項乘後全部相加;  表示第  個 Field 的Embedding向量。

  的長度爲 ,表示 Product Layer  部分輸出的節點個數,每個元素 也是一個標量,每個元素分別對應一個權重矩陣 。計算時  是共享的,爲 矩陣。

 的矩陣詳細表示:

  

優化前時間複雜度分析:

此時得到一個  的時間複雜度爲 ,由於  的大小爲 ,因此計算得到  的時間複雜度爲 。而再由  得到  的時間複雜度是  。因此對於 IPNN 方式來說,總的時間複雜度爲  。

文章對這一結構進行了優化,可以看到  是一個對稱矩陣,因此也可以將權重矩陣 轉化成一個對稱矩陣,即: 。則:

  

第  個  節點的權重矩陣  分解出  個  ,分別與  個  做內積後相加,得到  。即 :

得到:

優化後時間複雜度分析:

得到  的時間複雜度爲  ,繼而得到  的時間複雜度爲  ,最終得到  的複雜度爲 。經過優化,時間複雜度由  降爲  

3.2.2 Outer Product(外積) 交叉形式,OPNN

當 Product Layer 使用外積時, 表達式如下所示:

 每次計算得到的結果是一個矩陣,即: ,此時  爲  的矩陣,計算一個  的時間複雜度爲  ;而  是  的矩陣,因此計算  的時間複雜度爲  。從而計算  的時間複雜度變爲  。

爲了進行計算優化,作者引入疊加的概念(sum pooling)。將  的計算公式重新定義爲:

此時: ,則:  。

所以,優化後的  爲: 

 的長度爲 ,表示 Product Layer  部分輸出的節點個數,每個元素 是一個標量,每個元素分別對應一個權重矩陣 。計算時  是共享的,爲 矩陣。

 的矩陣詳細表示:

 

優化後時間複雜度分析:

 的時間複雜度爲  , 的時間複雜度爲  ,那麼計算  的時間複雜度爲  。從上一小節可知,計算  的時間複雜度爲   。所以最終 OPNN 的時間複雜度爲  。

那麼OPNN的時間複雜度由  降低到  。

好了,本文主要內容  Product Layer 介紹到此結束。

參考:

Product-based Neural Networks for User Response Prediction (https://arxiv.org/pdf/1611.00144.pdf

歡迎加入我們,一起交流學習!

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