日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

CTR深度学习模型之 DeepFM 模型解读

發(fā)布時間:2023/12/19 pytorch 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CTR深度学习模型之 DeepFM 模型解读 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

CTR 系列文章:

  • 廣告點擊率(CTR)預(yù)測經(jīng)典模型 GBDT + LR 理解與實踐(附數(shù)據(jù) + 代碼)
  • CTR經(jīng)典模型串講:FM / FFM / 雙線性 FFM 相關(guān)推導(dǎo)與理解
  • CTR深度學(xué)習(xí)模型之 DeepFM 模型解讀
  • 【CTR模型】TensorFlow2.0 的 DeepFM 實現(xiàn)與實戰(zhàn)(附代碼+數(shù)據(jù))
  • CTR 模型之 Deep & Cross (DCN) 與 xDeepFM 解讀
  • 【CTR模型】TensorFlow2.0 的 DCN(Deep & Cross Network) 實現(xiàn)與實戰(zhàn)(附代碼+數(shù)據(jù))
  • 【CTR模型】TensorFlow2.0 的 xDeepFM 實現(xiàn)與實戰(zhàn)(附代碼+數(shù)據(jù))
  • 上一篇文章講了一些比較經(jīng)典的 CTR 模型:CTR經(jīng)典模型串講:FM / FFM / 雙線性 FFM 相關(guān)推導(dǎo)與理解,從這一篇文章開始將會陸續(xù)介紹一些使用深度學(xué)習(xí)完成CTR預(yù)估的模型,本文主要講的是DeepFM模型。

    之前講的 FM、FFM、Bi-FFM 本質(zhì)上都是要學(xué)習(xí)戶點擊行為背后隱含的特征組合,不過這些經(jīng)典模型主要是進(jìn)行二階特征組合。理論上也可以進(jìn)行更高階的特征組合,但是會造成特征維度指數(shù)級增長以及數(shù)據(jù)稀疏等問題。對于高階特征組合問題不難想到可以用多層的神經(jīng)網(wǎng)絡(luò)解決。

    DeepFM 的整體結(jié)構(gòu)

    對于類別變量,需要進(jìn)行onehot編碼后輸入到DNN中,但是常規(guī)的做法會導(dǎo)致網(wǎng)絡(luò)參數(shù)過多:

    為了減少參數(shù)數(shù)量,可以借鑒FFM的思想,將特征劃分為不同的 field:

    然后再接上幾個全連接層完成高階特征組合:

    當(dāng)然,我們也可以單獨進(jìn)行低階特征組合,然后和高級特征融合,即將DNN與FM進(jìn)行融合。具體的形式有兩種,一是串行結(jié)構(gòu),二是并行結(jié)構(gòu):

    DeepFM 是并行結(jié)構(gòu)的代表,具體結(jié)構(gòu)如下:

    此模型主要分為左邊的FM模塊與右邊的DNN模塊,最終的預(yù)測由兩部分的輸出相加得到:
    y^=sigmoid(yFM+yDNN)\hat{y}=sigmoid(y_{FM}+y_{DNN}) y^?=sigmoid(yFM?+yDNN?)

    DeepFM 中的 FM 模塊

    FM模塊如下圖所示:

    此部分實現(xiàn)的功能是:
    yFM=?w,x?+∑i=1d∑j=i+1d?Vi,Vj?xi?xjy_{FM}=\langle w, x \rangle + \sum_{i=1}^d \sum_{j=i+1}^d \langle V_i, V_j \rangle x_i \cdot x_j yFM?=?w,x?+i=1d?j=i+1d??Vi?,Vj??xi??xj?
    首先看看式子的第一項 <w,x><w, x><w,x> 的計算是由下圖中黃色實心圓表示的每個field的非零值相以及綠色箭頭都代表的權(quán)重 w 相乘后累加而得。

    接下來介紹FM式子中的二次項計算過程。首先理解下圖中的 Dense Embeddings 層,如果對輸入層和embedding層展開后可以得到下面的圖:

    看到圖中的 V11,V12,VikV_{11}, V_{12}, V_{ik}V11?,V12?,Vik?是不是很熟悉?由于CTR的輸入層一般是很稀疏的向量,因此需要隱藏層之前,先按照不同的 field 進(jìn)行 embedding 操作將高維稀疏壓縮向量到低維稠密向量。這個 embedding 過程有兩個特點:

    1,不同的 field 的輸入可能不同,但是在embedding之后向量的長度均為K

    2,在 FM 里得到的隱變量 VikV_{ik}Vik? 現(xiàn)在作為了嵌入層網(wǎng)絡(luò)的權(quán)重

    舉個例子,假設(shè) embedding 后的維度 k=5,則對于每個 field 的輸入,只有一個輸入節(jié)點 xix_ixi? 為1,例如 x2=1x_2 = 1x2?=1,此時輸入層與對應(yīng)的 filed 層中,僅有五條帶有權(quán)重的線與 embedding 層相連,這五條線上的權(quán)重 V21,V22,V23,V24,V25V_{21}, V_{22}, V_{23}, V_{24}, V_{25}V21?,V22?,V23?,V24?,V25? 的組合即為 FM 公式第二項中的 V2V_2V2?,如下圖綠色箭頭所示:

    同理,我們可以得到 V1,V3....VnV_1, V_3....V_nV1?,V3?....Vn?,然后在 FM 層中對不同 Vi,VjV_i, V_jVi?,Vj?的組合進(jìn)行內(nèi)積計算,例如下圖中綠色箭頭所示:

    最后,在最上層使用 sigmoid 激活函數(shù)得到該 FM 模塊的輸出值。

    DeepFM 中的 DNN 模塊

    首先看看這個模塊的整體結(jié)構(gòu):

    此模塊使用多層前饋神經(jīng)網(wǎng)絡(luò),用于學(xué)習(xí)高階交叉特征。具體過程是:得到了 Embedding 層的輸出后,連接一些隱藏層,然后在最上面的輸出層使用 sigmoid 函數(shù)得到最后的輸出值。

    需要注意的是,隱藏層的輸入是 Embedding 層,這個嵌入層是 FM 模塊與 DNN 模塊所共享的。這帶來兩個好處:

    1,可以從原始特征中學(xué)習(xí)到低階和高階特征

    2,不需要專業(yè)的特征工程

    到此為止,DeepFM 模型相關(guān)的解釋說明就結(jié)束了,后續(xù)可能會有文章講解 tensorflow2 的相關(guān)代碼實現(xiàn)。

    參考文章:

    DeepFM技術(shù)細(xì)節(jié)

    推薦系統(tǒng)遇上深度學(xué)習(xí)(三)–DeepFM模型理論和實踐

    總結(jié)

    以上是生活随笔為你收集整理的CTR深度学习模型之 DeepFM 模型解读的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。