推荐系统(十八)Gate网络(一):新浪微博GateNet
推薦系統(十八)Gate網絡(一):新浪微博GateNet
推薦系統系列博客:
CTR預估模型在學術界/工業界進化的路線有明顯的幾個節點:1. 從單特征到交叉特征,圍繞著如何學到更有用的交叉特征,誕生了一系列的模型。2. attention火起來后,被迅速應用到CTR預估領域中,又有很多模型被提出。3. gate網絡火起來后,同樣也催生了一些模型。但話說,我其實一直沒太搞明白『attention』和『gate』本質上的區別是什么?有路過的大佬可以評論區幫忙解答下。
言歸正傳,這篇博客將要介紹新浪微博張俊林大佬團隊提出的GateNet模型,這篇文章我只在arxiv上找到了,并沒有找到公布發表的會議版本,應該是還沒投。整篇文章看起來比較簡短,因為Gate網絡實在沒什么好講的,所以文章大量的筆墨都在實證研究上了,不過遺憾的是,數據集都是用的公開的數據集,沒有看到在新浪微博自己的數據集上的實驗效果。
本篇博客將會從兩個方面介紹下GateNet:
1.1. embedding層Gate(Feature Embedding Gate)
1.2. 隱藏層Gate(Hidden Gate)
一、GateNet網絡類型
這篇論文中依據Gate網絡施加位置的不同,分為了兩種類型:embedding層Gate(Feature Embedding Gate)和 隱藏層Gate(Hidden Gate)。下面來分別介紹一下:
1.1、embedding層Gate(Feature Embedding Gate)
顧名思義,embedding層Gate就是把Gate網絡施加在embedding層,具體又可以分為兩種:bit-wise和vector-wise。bit-wise就是每一個特征的embedding向量的每一個元素(bit)都會有一個對應的Gate參數,而vector-wise則是一個embedding向量只有一個Gate參數。假設樣本有兩個特征,每個特征embedding維度取3,用個圖來形象的對比下bit-wise和vector-wise的gate的區別:
值得一提的是,論文中關于gate網絡參數是否共享提出了兩個概念:
- field private: 所謂field private就是每個特征都有自己的一個gate(這意味著gate數量等于特征個數),這些gate之間參數不共享,都是獨立的。圖1、圖2中gate的方式就是這種。
- field sharing: 與field private相反,不同特征共享一個gate,只需要一個gate即可。優點就是參數大大減少,缺點也是因為參數大大減少了,性能不如field private。
通過論文中給出的實驗表明,field private方式的模型效果要好于field sharing方式。
下面通過形式化的公式來看下embedding層Gate的流程(盡管我覺得上面兩個圖已經非常清晰的展示了細節,但配合公式來一波強化記憶吧),假設有nnn個特征,每個特征的embedding維度為ddd,則 E=[e1,e2,...,en]E=[e_1, e_2, ..., e_n]E=[e1?,e2?,...,en?],eie_iei?為特征iii對應的embedding向量,ei∈Rde_i \in R^dei?∈Rd,下面為整個計算步驟:
第一步:計算gate value:gi=σ(Wi?ei)g_i=\sigma(W_i \cdot e_i)gi?=σ(Wi??ei?),如果是bit-wise方式,則Wi∈RdW_i \in R^dWi?∈Rd,W∈Rd×dW \in R^{d \times d}W∈Rd×d是一個矩陣;如果vector-wise方式,則WiW_iWi?為一個標量,W∈RdW \in R^ze8trgl8bvbqW∈Rd是一個向量。
第二步:通過第一步中得到的gate value施加到原始embedding向量上,giei=gi⊙eig_ie_i = g_i\odot e_igi?ei?=gi?⊙ei?,⊙\odot⊙表示哈達瑪積,也就是element-wise product,對應元素相乘。
最后,得到新的gate-aware embeddings,GE=[g1e1,g2e2,....,gnen]GE=[g_1e_1, g_2e_2,....,g_ne_n]GE=[g1?e1?,g2?e2?,....,gn?en?]輸入到MLP中。
1.2、隱藏層Gate(Hidden Gate)
另外一種施加Gate網絡的地方就是MLP的隱藏層,這個我也不上圖了,直接參考圖1吧,結構一模一樣。計算步驟公式直接看1.1中bit-wise就可以。
二、GateNet論文實驗結論
論文中做了大量的實驗來驗證了幾個問題(只基于論文的實驗結論,具體業務場景可能結論不一樣,大家參考下就可以)
問題1:gate參數field private方式與field sharing方式那個效果好?
實驗結果表明,field private方式的模型效果優于field sharing方式。
問題2:gate施加方式 bit-wise與vector-wise哪個效果好?
在Criteo數據集上,bit-wise的效果比vector-wise的好,但在ICME數據集上得不到這樣的結論。
問題3:gate施加在embedding層和隱藏層哪個效果好?
論文中沒有給出結論,但從給出的數據來看在隱藏層的比在embedding層效果好。此外,兩種方式都用的話,相比較只用一種,效果提升不大。
問題4:gate網絡用哪個激活函數好?
embedding層是linear,隱藏層是tanh。
三、自己實踐中一些結論
我們自己的場景下(多任務下,ctcvr)實踐結果來看,有幾個結論僅供參考:
參考文獻:
[1] Huang T , She Q , Wang Z , et al. GateNet: Gating-Enhanced Deep Network for Click-Through Rate Prediction[J]. 2020.
總結
以上是生活随笔為你收集整理的推荐系统(十八)Gate网络(一):新浪微博GateNet的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有赞百亿级日志系统架构设计
- 下一篇: Unity漫延的实现思路(流体漫延, 火