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