网站首页 > 技术文章 正文
本周讲解DeepFM模型原理,该模型可认为是Wide & Deep推荐模型的升级版。论文可以从这里获取 https://github.com/talentlei/PaperList。想了解Wide & Deep模型的可以看我写的前一篇文章。
和Wide & Deep的模型类似,DeepFM模型同样由浅层模型和深层模型联合训练得到。不同点主要有以下两点:
- wide模型部分由LR替换为FM。FM模型具有自动学习交叉特征的能力,避免了原始Wide & Deep模型中浅层部分人工特征工程的工作。
- 共享原始输入特征。DeepFM模型的原始特征将作为FM和Deep模型部分的共同输入,保证模型特征的准确与一致。
文中通过大量实验证明,DeepFM模型的AUC和Logloss都优于目前的最好效果。效率上,DeepFM和目前最优的效果的深度模型相当。
1. Introduction
CTR预估是目前推荐系统的核心技术,其目标是预估用户点击推荐内容的概率。在CTR预估任务中,用户行为的隐式low-order和high-order特征都起到十分重要。有些特征是易于理解的,可以通过领域专家进行人工特征工程抽取特征。但是对于不易于理解的特征,如“啤酒和尿布”,则只能通过机器学习的方法得到。同样的对于需要特别巨量特征的模型,人工特征工程也是难以接受的。所以特征的自动学习显的十分重要。
简单线性模型,缺乏学习high-order特征的能力,很难从训练样本中学习到从未出现或极少出现的重要特征。FM模型可以通过点积和隐向量的形式学习交叉特征。由于复杂度的约束,FM通常只应用order-2的2重交叉特征。深层模型善于捕捉high-order复杂特征。现有模型用于CTR预估的有很多尝试,如CNN/RNN/FNN/PNN/W&D等,但都有各自的问题。FNN和PNN缺乏low-order特征,W&D需要人工构造Wide部分交叉特征。
本文提出的DeepFM模型是一种可以从原始特征中抽取到各种复杂度特征的端到端模型,没有人工特征工程的困扰。本文贡献如下:
- DeepFM模型包含FM和DNN两部分,FM模型可以抽取low-order特征,DNN可以抽取high-order特征。无需Wide&Deep模型人工特征工程。
- 由于输入仅为原始特征,而且FM和DNN共享输入向量特征,DeepFM模型训练速度很快。
- 在Benchmark数据集和商业数据集上,DeepFM效果超过目前所有模型。
2. DeepFM模型
为了同时利用low-order和high-order特征,DeepFM包含FM和DNN两部分,两部分共享输入特征。对于特征i,标量wi是其1阶特征的权重,该特征和其他特征的交互影响用隐向量Vi来表示。Vi输入到FM模型获得特征的2阶表示,输入到DNN模型得到high-order高阶特征。模型联合训练,结果可表示为:
2.1 FM部分
FM模型不单可以建模1阶特征,还可以通过隐向量点积的方法高效的获得2阶特征表示,即使交叉特征在数据集中非常稀疏甚至是从来没出现过。这也是FM的优势所在。
2.2 Deep部分
该部分和Wide&Deep模型类似,是简单的前馈网络。在输入特征部分,由于原始特征向量多是高纬度,高度稀疏,连续和类别混合的分域特征,为了更好的发挥DNN模型学习high-order特征的能力,文中设计了一套子网络结构,将原始的稀疏表示特征映射为稠密的特征向量。
子网络设计时的两个要点:
- 不同field特征长度不同,但是子网络输出的向量需具有相同维度;
- 利用FM模型的隐特征向量V作为网络权重初始化来获得子网络输出向量;
这里的第二点可以这么理解,如上图假设k=5,对于输入的一条记录,同一个field只有一个位置是1,那么在由输入得到dense vector的过程中,输入层只有一个神经元起作用,得到的dense vector其实就是输入层到embedding层该神经元相连的五条线的权重,即vi1,vi2,vi3,vi4,vi5。这五个值组合起来就是我们在FM中所提到的Vi。文中将FM的预训练V向量作为网络权重初始化替换为直接将FM和DNN进行整体联合训练,从而实现了一个端到端的模型。
假设子网络的输出层为
DNN网络第l层表示成
假设一共有H个隐藏层,DNN部分对CTR预测结果可以表示为:
3. 实验部分
文中通过在Criteo数据集和Company*数据集进行大量实验,证明DeepFM在效果上超越了目前最优的模型,效率上的与当前最优模型相当。实验评价指标采用AUC和Logloss两个离线指标。
3.1 效率实验
实验在Criteo数据集上进行,通过
指标衡量模型执行时间。实验分别比较了各个模型在CPU和GPU上的运行效率,DeepFM都取得了和最优效率相当的结果。(从图中看OPNN的执行效率也很高,但是OPNN结果效果波动性大,不稳定)
3.2 效果实验
实验结果可以看出,DeepFM模型比其他对比模型AUC提升至少0.37%,logloss减少至少0.42%。同时可以得到以下结论:
- 学习特征交互可以改善CTR预估模型。
- 同时学习high-order和low-order特征可以改善CTR模型效果。
- 通过共享输入特征学习high-order和low-order交互特征表示可以提升CTR模型。
3.3 参数学习实验
为了比较实验效果,文中对超参数进行了多组实验。详细内容直接看实验结果。
激活函数
Dropout
每层节点数
隐藏层数
网络形状
猜你喜欢
- 2024-10-12 CIKM2022 IntTower:超越单塔的双塔模型
- 2024-10-12 赤子城刘春河:流量运营3.0时代,SoloMath深入布局基于AI的程序化广告
- 2024-10-12 相比于 SVM,FM 模型如何学习交叉特征?其如何优化?
- 2024-10-12 深度CTR之AFM:基于Attention网络的FM模型
- 2024-10-12 个性化推送的机器学习算法实践 个性化推荐算法
- 2024-10-12 基于FM+GBM排序模型的短视频千人千面实战与分析
- 2024-10-12 深度学习在美团配送ETA预估中的探索与实践
- 2024-10-12 超赞0.65分!视频点击预测大赛开源baseline分享
- 2024-10-12 全新的深度模型在推荐系统中的应用
- 2024-10-12 如何使用深度学习技术,准确预计外卖的送达时间?
你 发表评论:
欢迎- 最近发表
-
- 在 Spring Boot 项目中使用 activiti
- 开箱即用-activiti流程引擎(active 流程引擎)
- 在springBoot项目中整合使用activiti
- activiti中的网关是干什么的?(activiti包含网关)
- SpringBoot集成工作流Activiti(完整源码和配套文档)
- Activiti工作流介绍及使用(activiti工作流会签)
- SpringBoot集成工作流Activiti(实际项目演示)
- activiti工作流引擎(activiti工作流引擎怎么用)
- 工作流Activiti初体验及在数据库中生成的表
- Activiti工作流浅析(activiti6.0工作流引擎深度解析)
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)