用预训练GNN预估点击率有奇效?
說到點擊率模型這個“古老”的話題,大家第一時間想到的是wide&deep,DeepFM,DCN等。但是說到GNN預估點擊率,大家又能想到幾個呢?《Explicit Semantic Cross Feature Learning via Pre-trained Graph Neural Networks for CTR Prediction》這篇論文告訴我們GNN搭配預訓練和顯式交叉特征,可以"吊打"現有的點擊率模型,那接下來看看這模型有什么特別之處吧。
現存模型有哪些問題?
論文指出,現存模型都是"隱式"挖掘交叉特征的,就像一般的DNN,所有特征embedding后輸入到全連接層,每一個bit的特征都會交叉,但是我們也不清楚最后到底哪些特征之間的交叉特征真正被被模型所利用。當然有種常用添加顯式交叉特征的做法,就是通過統計兩個特征出現的count等歷史統計特征,添加到模型。這樣存在的問題也很明顯,主要有以下兩個大問題:
- 泛化能力不強:比較容易理解,基于統計提取交叉特征,我們只能提取到歷史出現過的pair對,對于沒處出現過的pair,我們只能給予個默認值,這樣就影響了模型的泛化能力。
- 極其占用資源:統計特征實際使用時,需要一張很大的此表,key是統計的pair,value是統計值,而且隨著時間變化,這張巨大的此表也需要頻繁更新,由此引起了很多計算和維護成本。
所以本文提出了Pre-trained Cross Feature Graph Neural Networks(PCF-GNN)把豐富的交互特征建模成圖上的邊,每個節點都是一個特征,采用自監督的預估任務的GNN模型能學到顯式交互特征并推斷出新的邊信息。
PCF-GNN
既然是pretrain模型,第一步當然是做預訓練,然后再進行下游任務也就是點擊率預估。
關于圖構建(如下圖所示),首先用歷史交互行為構建圖,圖中用戶,item,Shop都是節點,邊就是節點直接交互的概率。如u1和i1曝光過3次,點擊過一次,所以邊的值為1/3。
接下來就可以進行預訓練了,我們知道邊的值本質上就是顯式的交互特征,我們通過自監督學習,預估邊的值,預估任務被定義為mse(pu,v - au,v),pu,v是PCF-GNN的輸出。
GNN非常重要的環節就是每個node理解鄰居的信息,學到自己的embedding。這篇論文提出了一個基于multi-relation的聚合函數,如下圖所示:
這個公式表達的非常清楚且簡潔,k就是第幾層(需要多次聚合),r是節點間是何種關系,不同關系會通過AGGREGATE函數聚合成|r|個向量,最后再通過COMBINATION函數把|r|個關系的向量聚合起來最后最終i節點的輸出。AGGREGATE和COMBINATION可以參考GraphSAGE。當計算出hi后我們通過CrossNet求得最終預估值,如下式所示:
論文提到,損失函數不能簡單的定義為mse,因為不同邊,對預估ctr的權重是不一樣的,為了預訓練模型能夠更好的區分交互特征的重要性論文提出了weghted square loss,定義如下所示,所以共現次數越高,重要性越強:
在完成預訓練后,我們就可以進行下游任務了,如下圖所示:
將不同node的embedding和p作為特征,再加上其他特征輸入到最終的全連接網絡,預估最終的點擊率。
實驗
用預訓練GNN預估點擊率有奇效?總結
以上是生活随笔為你收集整理的用预训练GNN预估点击率有奇效?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 曾几何时,我们炼的不是丹,是特征
- 下一篇: 当推荐系统遇上多模态Embedding