1. 介紹
特征組合的問題
對(duì)于基于CTR預(yù)估的推薦系統(tǒng),最重要的是學(xué)習(xí)用戶點(diǎn)擊行為背后的隱含特征或特征組合锦针。在不同的推薦任務(wù)中,低階組合特征或者高階組合特征都可能會(huì)對(duì)最終的CTR產(chǎn)生影響。
FM模型通過對(duì)每一維特征的隱向量?jī)?nèi)積來提取特征組合翼馆,也能得到比較好的結(jié)果。FM理論上來說金度,雖然可以對(duì)高維特征組合進(jìn)行建模应媚,但因?yàn)橛?jì)算復(fù)雜度的原因,一般只用到二階特征組合猜极。
對(duì)于高維特征來說珍特,可以通過神經(jīng)網(wǎng)絡(luò)去解決。
神經(jīng)網(wǎng)絡(luò)的問題
下面圖片來自張俊林教授的PPT
通常情況下魔吐,對(duì)于離散特征的處理扎筒,一般將其轉(zhuǎn)化成one-hot的形式,但是one-hot類型的特征輸入到神經(jīng)網(wǎng)絡(luò)中酬姆,會(huì)導(dǎo)致網(wǎng)絡(luò)參數(shù)太多嗜桌。
為了解決這個(gè)問題,可以使用類似于FFM模型的思想辞色,將特征分成不同field:
再加上兩層全連接層骨宠,讓Dense Vector進(jìn)行組合,就可以得到高階的特征組合。
在這種情況下层亿,特征組合隱含的體現(xiàn)在隱藏層桦卒,如果想要把低階特征組合進(jìn)行單獨(dú)建模,然后和高階特征組合進(jìn)行融合匿又,可以通過神經(jīng)網(wǎng)絡(luò)和FM模型組合來實(shí)現(xiàn)方灾。
再將神經(jīng)網(wǎng)絡(luò)和FM模型進(jìn)行組合時(shí),一般有兩種方式碌更,一種是并行結(jié)構(gòu)裕偿,一種是串形結(jié)構(gòu)。
DeepFM模型就是一種并行結(jié)構(gòu)痛单。
2. DeepFM模型
首先看一下DeepFM模型的結(jié)構(gòu)嘿棘。
DeepFM包含兩部分:神經(jīng)網(wǎng)絡(luò)和分解機(jī)。分別負(fù)責(zé)低階特征的提取和高階特征的提取旭绒。這兩部分共享同樣的輸入鸟妙。DeepFM模型的預(yù)測(cè)結(jié)果可以寫成
FM部分
FM部分結(jié)構(gòu):
FM部分是一個(gè)分解機(jī),因?yàn)榧尤肓穗[含變量挥吵,所以對(duì)于不出現(xiàn)或者極少出現(xiàn)的隱含變量也可以很好的學(xué)習(xí)圆仔。
FM的輸出公式:
神經(jīng)網(wǎng)絡(luò)部分
結(jié)構(gòu):
神經(jīng)網(wǎng)絡(luò)部分是一個(gè)前饋網(wǎng)絡(luò),與圖像這類輸入不同蔫劣,圖像的輸入一般是連續(xù)而且稠密的坪郭,然而這里用于推薦任務(wù)的輸入一般是特別稀疏的。因此在該神經(jīng)網(wǎng)絡(luò)中脉幢,在第一層隱藏層之前歪沃,引入一個(gè)嵌入層(Embedding),把輸入向量壓縮到低維稠密向量嫌松。
嵌入層的結(jié)構(gòu)如圖:
從上圖可以看出沪曙,
- 雖然輸入的field長(zhǎng)度不同,但經(jīng)過嵌入層embedding之后萎羔,得到的向量長(zhǎng)度都是 K液走。
- 而且從FM部分里得到的隱含變量 被當(dāng)成嵌入層的權(quán)重,這樣FM部分就可以當(dāng)成整個(gè)模型的一部分與其他深度學(xué)習(xí)模型一起參與整體的學(xué)習(xí)贾陷,實(shí)現(xiàn)端到端的訓(xùn)練缘眶。
關(guān)于第二點(diǎn),舉個(gè)例子髓废,如上圖所示巷懈,假設(shè) ,首先對(duì)于一條輸入,同一個(gè)field中只有一個(gè)位置是1慌洪,所以從輸入得到Dense vector的過程中顶燕,輸入層只有一個(gè)神經(jīng)元在起作用凑保,得到的Dense vector其實(shí)就是輸入層該神經(jīng)元連接嵌入層的五個(gè)權(quán)重,即.這五個(gè)值組合起來就是FM部分提到的涌攻。所以在FM部分和神經(jīng)網(wǎng)絡(luò)部分欧引,在這一塊是共享權(quán)重的,對(duì)同一個(gè)特征來說恳谎,得到的是相同的芝此。
嵌入層
嵌入層的表示如下:
其中, 是第 個(gè)field的embedding惠爽, 是field的個(gè)數(shù), 是輸入神經(jīng)網(wǎng)絡(luò)的向量瞬哼,通過以下方式前向傳播:
FM部分與神經(jīng)網(wǎng)絡(luò)部分共享相同的embedding有兩個(gè)好處
- 可以從原始數(shù)據(jù)中學(xué)習(xí)到低維與高維的特征
- 不再需要特征工程