概述
關(guān)鍵詞:特征組合
LR:缺乏特征組合能力假栓,需人工做特征工程
GBDT+LR:特種組合能力不強(qiáng),對(duì)高維的稀疏特征應(yīng)對(duì)乏力
FM:具有較強(qiáng)的二階特征組合能力儡率,高階特征組合應(yīng)對(duì)乏力
Wide&Deep:較好地利用了低階和高階組合特征。但是wide部分依舊需要特征工程,其二階特征組合需要人工挑選
DeepFM :其實(shí)是Wide&Deep的變體熄捍,把wide部分由LR轉(zhuǎn)變?yōu)镕M。所以更好地利用了低階和高階的組合特征母怜。而且免去了人工特種組合余耽。
說到底,為什么CTR領(lǐng)域苹熏,特征組合如此被強(qiáng)調(diào)碟贾?
首先,CTR領(lǐng)域特征基本屬于離散類別特征轨域。
而不同的特征之間可能存在某種聯(lián)系袱耽。例如:
- 1,性別男+20-30歲+喜歡籃球 可能更傾向于點(diǎn)擊 槍戰(zhàn)的游戲廣告
- 2干发,飯點(diǎn)時(shí)間段 用戶可能更容易去下載外賣類app
- 3朱巨,經(jīng)典的尿布-啤酒案例
像第一種組合,可能很容易就能想出來枉长,甚至不需要數(shù)據(jù)的支持
而第二種組合冀续,就不太容易能想出來,但可能通過簡單的數(shù)據(jù)分析而發(fā)現(xiàn)此規(guī)律
但像第三種組合必峰,幾乎只能通過數(shù)據(jù)發(fā)掘出來洪唐。
這就提示我們,數(shù)據(jù)中可能存在很多難以人工發(fā)掘甚至不能通過簡單數(shù)據(jù)分析而得出的有用的組合特征這些組合特征可能是低階的也可能是高階的吼蚁,而且高低階組合特征都很重要凭需。
所以要盡可能做特征組合。
其實(shí)在NLP中肝匆,n-gram也屬于特征組合粒蜈。只不過會(huì)帶來更高的特征維度。因?yàn)?术唬,詞表太大薪伏,2,詞不分field粗仓。最終會(huì)導(dǎo)致詞的embedding矩陣太大嫁怀。
DeepFM
模型
如上圖所示:
其實(shí)DeepFM就是把Wide&Deep模型的wide部分改為了FM设捐。
黑色線---帶權(quán)重的連接
紅色線---不帶權(quán)重的連接
藍(lán)色線---稀疏特征向稠密特征轉(zhuǎn)換的embedding向量,并且這個(gè)embedding會(huì)隨著訓(xùn)練而學(xué)習(xí)更新
- 第一層:Sparse Feature 稀疏特征塘淑,每個(gè)field下有一個(gè)onehot編碼的向量萝招,其長度等于此filed下特征類別數(shù),共m個(gè)field存捺。
- 第二層:m個(gè)向量拼接而成的維向量x槐沼。
第一層中的 每個(gè)field i都轉(zhuǎn)換(Embedding)到了k維稠密向量空間,filed i中每個(gè)不同的onehot向量(具體的一個(gè)特征如)對(duì)應(yīng)著一個(gè)特定的稠密向量捌治,例如對(duì)于某個(gè)filed i岗钩,可能有如下對(duì)應(yīng)(k=4)
都是空間里的向量
注意,這里的[1,0,0,0,0,0,0]僅代表了一個(gè)field肖油,而非一個(gè)樣本兼吓,一個(gè)樣本由若干個(gè)這樣的filed拼接而成。
即這里把每一個(gè)field映射到了對(duì)應(yīng)的一個(gè)k維空間里面 - 第三層FM Layer:
一個(gè)Addition符號(hào)森枪,接收黑色連線视搏,代表了FM的一階特征部分
后續(xù)的若干個(gè)Inner Product接收紅色連線,代表了二階特征組合部分(見探究部分) 县袱。對(duì)于每一個(gè)樣本 對(duì)于field內(nèi)互斥的onehot編碼浑娜,對(duì)于一個(gè)特定樣本,
注意這里式散,兩個(gè)部分是在第四層Output Units完成的筋遭,本層只交叉出該樣本的組合特征。 - 第三層Hidden Layer:簡單的全連接杂数。
輸入是m個(gè)向量的拼接宛畦,維度是
后續(xù)是 - 第四層 Output Units。接收第三層的輸出:
最后的輸出是
FM層的探究
在FM中
對(duì)于onehot編碼來說揍移,
特征對(duì)應(yīng)著向量其中第i位=1,其他=0反肋;
特征對(duì)應(yīng)著向量其中第j位=1那伐,其他=0;
所以的隱向量=等價(jià)于被編碼成:
而表示兩特征交叉石蔗,其權(quán)重則被FM表示成了兩隱向量的內(nèi)積
則
注意式子
雖然看似有的復(fù)雜度罕邀,但實(shí)際上絕大多數(shù)時(shí)候都=0,這表示對(duì)于每一個(gè)樣本养距,式(4.1)計(jì)算量遠(yuǎn)達(dá)不到诉探。對(duì)于一個(gè)特定的樣本,式(4.1)退化成
表示該樣本的稀疏特征中1的數(shù)量棍厌。
即
在DeepFM的FM層中肾胯,對(duì)于特定的樣本竖席,二階特征組合被表示成了
表示樣本a分別在filed i和j的具體Dense特征。這其實(shí)就是FM的隱向量
而要使這個(gè)等式成立敬肚,需要滿足如下條件:
- 1毕荐,所有Dense向量維度相等都為k。這個(gè)顯而易見艳馒。
- 2憎亚,特征的交叉限于field之間,而非filed之內(nèi)弄慰。但FM中沒有field概念第美,F(xiàn)M特征交叉是每一個(gè)特征都會(huì)交叉,會(huì)比DeepFM的交叉特征多很多陆爽。
- 3什往,稀疏編碼應(yīng)該是One-Hot(向量中只有一個(gè)1,如性別墓陈,分桶后的年齡)的恶守。而非Multi-Hot(一個(gè)向量中有多個(gè)1,如安裝的app贡必,愛好)兔港。
FM無論是onehot還是multihot編碼,都會(huì)構(gòu)建出所有二階交叉的特征(例如性別和某一個(gè)app的交叉)仔拟。
DeepFM只有在onehot編碼下才能構(gòu)建出所有二階交叉特征衫樊。當(dāng)每個(gè)field只用onehot編碼時(shí),就不會(huì)存在field內(nèi)的特征交叉(就像不存在性別男x性別女的交叉一樣)利花。但如果有的field是multihot編碼的科侈,即一個(gè)樣本在一個(gè)field中同時(shí)存在多個(gè)1,即應(yīng)該使用多個(gè)隱向量炒事,那么按照DeepFM或wide&deep的網(wǎng)絡(luò)結(jié)構(gòu)臀栈,就必須把這多個(gè)隱向量(或稱)合而為一(例如求和)。這樣就無法做該filed內(nèi)的特征組合了(例如無法完成“安裝了微信x安裝了支付寶”這樣的特征交叉挠乳,而這樣的交叉顯然是很有意義的)权薯。但是field間的特征組合還是可以做的,因?yàn)楦鶕?jù)乘法分配律睡扬,field間依舊可以做二階特征交叉盟蚣。
如果要解決multihot的問題,就需要把每一個(gè)特征化為一個(gè)field卖怜。但這樣會(huì)帶來一個(gè)問題屎开,就是DenseEmbedding層維度太高(相當(dāng)于稀疏編碼的k倍!)马靠,造成神經(jīng)網(wǎng)絡(luò)參數(shù)過多影響速度奄抽,所以DeepFM也算是一種折中(但結(jié)果還是有提高的)
在DeepFM的論文中蔼两,特征只使用了onehot編碼,巧妙地規(guī)避了這個(gè)問題如孝。
而反觀wide&deep模型宪哩,是使用了multihot編碼的(user installed app,impression app)第晰,在轉(zhuǎn)化為dense embedding時(shí)可能用了求和或平均然后送入Deep模塊锁孟;但同時(shí)模型把稀疏的multihot編碼做了人工特征挑選和交叉后送入了Wide模塊。所以可以認(rèn)為wide&deep模型反而比DeepFM模型多做了field內(nèi)特征交叉的工作(但是是非自動(dòng)化的茁瘦,亦非全部field的)品抽。所以在multihot編碼問題上,DeepFM還有提升空間甜熔。例如對(duì)于multihot特征圆恤,單獨(dú)使用一個(gè)FM做field內(nèi)交叉。
其它FM與神經(jīng)網(wǎng)絡(luò)組合模型
FNN
使用FM初始化DenseEmbedding層腔稀,然后直接輸入全連接網(wǎng)絡(luò)盆昙。
需要預(yù)訓(xùn)練。在神經(jīng)網(wǎng)絡(luò)訓(xùn)練后焊虏,高階組合特征得到了較好地訓(xùn)練淡喜,但可能因而使得低階特征被忽略
PNN
從稀疏層到DenseEmbedding層是類似DeepFM的隨機(jī)初始化+后續(xù)訓(xùn)練。只不過在DenseEmbedding層到隱層之間诵闭,又多了一層Product層炼团。這個(gè)Product層用于組合DenseEmbedding層中不同field的特征。怎么組合呢疏尿?
看上圖中瘟芝,在Product層,有兩部分組成:
- 灰底灰度點(diǎn)部分表示DenseEmbedding的直接拼接
- 黃點(diǎn)部分則表示DenseEmbedding不同field特征的兩兩組合褥琐。而這里的兩兩組合又有很多種形式:
- 第一種锌俱,是求內(nèi)積,就像DeepFM的FM部分一樣敌呈,只不過其結(jié)果送入了隱層 嚼鹉。模型叫做IPNN
- 第二種,是求外積驱富,這樣兩個(gè)field特征交叉得到一個(gè)矩陣而非實(shí)數(shù)。而這兩兩獲得的多個(gè)矩陣匹舞,如果通過拼接來組合那就會(huì)帶來計(jì)算量的暴增褐鸥,所以為了降低計(jì)算量,會(huì)把這多個(gè)矩陣?yán)奂悠饋怼?/li>
NFM
像PNN赐稽,在DenseEmbedding層和隱層之間加一層FM層做特征組合叫榕。其實(shí)比PNN簡單
AFM
引入注意力機(jī)制
待續(xù)
參考
DeepFM: A Factorization-Machine based Neural Network for CTR Prediction
https://cloud.tencent.com/developer/article/1164785