iT邦幫忙

2022 iThome 鐵人賽

DAY 23
0
AI & Data

親手打造推薦系統系列 第 23

Day23 - Wide&Deep 介紹 - 親手打造推薦系統

  • 分享至 

  • xImage
  •  

今天要和大家介 Google 在 2016 年發表的一種重量級的推薦算法 Wide&Deep 。它出自 Wide&Deep for recommendation 這篇論文,它當初運用在 Google App Store 的 APP 推薦,使得下載率大大的提升,也成為後來需多演算法是架在這個思維下再擴充。所以說這也是一個在推薦系統領域裡,非常具有里程碑意義的演算法。

為什麼需要 Wide & Deep 呢?

在做推薦時,我們常會需解決 2 種情況:

第一種,明顯知道特徵與結果關係很強烈,無論他們中間過程是如何複雜,這種共現關係最好是被硬記、硬學起來,等下次再有類似場景時,不必再思考,就馬上拿出來用就好了!

第二種,對於沒見過,或是特徵與結果不明顯的事,那就要細細思考來龍去脈,把所有可能的因果關係全用上,再來做結論。

解決第一種情況,就稱它為 Wide ,就是要死背硬記所有對應規則,這就是傳統 LR 的絕活。

要解決第二種情況,就是深度學習的看家本領,它有辦法比對所有的特徵之間的關係,然後做出哪些特徵組合與結果是有關係的。這就稱他叫 Deep 。

現在問題來了,這Wide&Deep兩個東西要怎麼併在一起?

廣與深 Wide & Deep 如何兼得?

沒什麼特別的,看了還覺有點簡單粗暴。

Wide&Deep 還真的拿了兩個模型最後用 Sigmoid 結合起來。
一個模型是 DNN , 另一邊就是傳統的LR。

https://ithelp.ithome.com.tw/upload/images/20221009/201525568GKoUgd7FF.png

負責 深度的 (Deep) 的 DNN 模型的說明

這邊是把輸入分為兩類:連續性特徵及分類特徵(離散特徵)。其中,分類特徵是做了 One-hot 編碼,然後再送到 embedding 裡去做轉換,然後與連續性特徵,共同做了三次的 Relu,最後再和另一邊的 LR (Wide 那部份)傳來的訊號,一起送進 Logloss 輸出層再輸出。

所以這部份負責的就是深度的部份 。

負責廣度的(Wide) 說明

Wide 部份,用輸入,也是和 Deep 相同的特徵向量,只是它是用 交叉積變換層,來做到 LR 要做的事。

這部份的輸出,也是直接和 Deep 那邊一起送入 Logloss 裡,估最後的輸出。

到這邊,是不是覺得這個模型在解決問題上,是針對他們的需要去決。並且解決的思路並沒有特別的難懂,但對於他們的應用場景上,是非常有用的。

對了這個演算法,目前在 TensorFlow 上也有提供,大家也可以去玩玩。

參考資料

Wide & Deep Learning: Better Together with TensorFlow


上一篇
Day22-用 Surprise 實作矩陣分解 SVD 推薦系統 - 親手打造推薦系統
下一篇
Day24 - DeepFM 和 Deep&Wide 比較,有什麼改進? - 親手打造推薦系統
系列文
親手打造推薦系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言