推荐系统三十六式
刑无刀
“贝壳找房”资深算法专家,8 年推荐系统工程师
43607 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 40 讲
开篇词 (1讲)
原理篇 · 深度学习 (2讲)
原理篇 · 其他应用算法 (3讲)
推荐系统三十六式
15
15
1.0x
00:00/00:00
登录|注册

15 | 深度和宽度兼具的融合模型 Wide and Deep

模型服务
模型验证
模型初始化
宽模型
深度模型
连续值归一化
特征映射
样本生成
深度模型部分
线性模型部分
推荐系统架构
激活函数
隐藏层
深度学习
特征工程
线性模型
特征海洋战术
广义线性模型
可以预估的CTR行为
服务响应效率
类别型特征处理
训练效率
开源实现
深宽模型特点
模型应用
模型训练
数据生成
Wide & Deep模型
深度模型
宽模型
CTR预估
总结
几点技巧
融合排序
深度和宽度兼具的融合模型 Wide and Deep

该思维导图由 AI 生成,仅供参考

我在前面已经提到过一个事实,就是推荐系统的框架大都是多种召回策略外挂一个融合排序。召回策略的姿势繁多,前面的专栏文章已经涉及了一部分内容。今天我们继续说融合排序。

要深还是要宽

融合排序,最常见的就是 CTR 预估,你一定不要把自己真的只局限在 C 上,这里说的 CTR 预估的 C,可以是产品中的任何行为,视频是不是会看完,看完后是不是会收藏,是不是会分享到第三方平台,查看的商品是不是会购买等等,都可以看成那个可以被预估发生概率的 CTR。
CTR 预估的常见做法就是广义线性模型,如 Logistic Regression,然后再采用特征海洋战术,就是把几乎所有的精力都放在搞特征上:挖掘新特征、挖掘特征组合、寻找新的特征离散方法等等。
这种简单模型加特征工程的做法好处多多:
线性模型简单,其训练和预测计算复杂度都相对低;
工程师的精力可以集中在发掘新的有效特征上,俗称特征工程;
工程师们可以并行化工作,各自挖掘特征;
线性模型的可解释性相对非线性模型要好。
特征海洋战术让线性模型表现为一个很宽广(Wide)的模型,可以想象逻辑回归中那个特征向量在特征工程的加持下,越来越宽的样子。
最近十年,是深度学习独步天下的十年,犹如异军突起,一路摧城拔寨,战火自然也烧到了推荐系统领域,用深度神经网络来革“线性模型 + 特征工程”的命,也再自然不过。
用这种“深模型”升级以前的“宽模型”,尤其是深度学习“端到端”的诱惑,可以让每天沉迷搞特征无法自拔的工程师们主动投怀送抱。
深度学习在推荐领域的应用,其最大好处就是“洞悉本质般的精深”,优秀的泛化性能,可以给推荐很多惊喜。
硬币总有正反面,深度模型的泛化强于线性模型,也会导致推荐有时候看上去像是“找不着北”,就是大家常常自问的那句话:“不知道这是怎么推出来的?”用行话说,就是可解释性不好。
以前全面搞特征时,你叫人家“宽模型”小甜甜,现在新模型换旧模型,“深模型”一出,就叫“宽模型”牛夫人,这样不好,还是要两者合作,才能最大限度地发挥效果。
因此,Google 在 2016 年就发表了他们在 Google Play 应用商店上实践检验过的 CTR 预估方法:Wide & Deep 模型,让两者一起为用户们服务,这样就取得了良好效果。
下面,我就为你详细介绍一下这个深宽模型。

Wide & Deep 模型

一个典型的推荐系统架构,其实很类似一个搜索引擎,搜索由检索和排序构成。推荐系统也有召回和排序两部构成,不过,推荐系统的检索过程并不一定有显式的检索语句,通常是拿着用户特征和场景特征去检索召回,其中用户特征也就是在前面的专栏中提到的用户画像。
示意图如下.
简单描述一下这个示意图。
首先使用用户特征和上下文场景特征从物品库中召回候选推荐结果,比如得到 100 个物品,然后用融合模型对这 100 个物品做最终排序,输出给用户展示。
同时开始记录展示日志和用户行为日志,再把收集到的日志和用户特征、上下文场景特征、物品特征拉平成为模型的训练数据,训练新的模型,再用于后面的推荐,如此周而复始。
今天要说的深宽模型就是专门用于融合排序的,分成两部分来看。一部分是线性模型,一部分是深度非线性模型。整个示意图如下:
我来解释一下这个示意图,这个示意图有三部分。最左边是宽模型,中间是深宽模型,最右边是纯的深度模型。
首先,线性模型部分,也就是“宽模型”,形式如下:
再次强调一下,这是线性模型的标准形式,逻辑回归只是在这基础上用 sigmoid 函数变换了一下。
模型中的 X 是特征,W 是权重,b 是模型的偏置,也是线性模型的截距。线性模型中常用的特征构造手段就是特征交叉。
例如:“性别 = 女 and 语言 = 英语。”就是由两个特征组合交叉而成,只有当“性别 = 女”取值为 1,并且“语言 = 英语”也取值为 1 时,这个交叉特征才会取值为 1。线性模型的输出这里采用的 Logistic Regression。
好,现在把头转到右边,看看深度模型。深度模型其实就是一个前馈神经网络。
深度模型对原始的高维稀疏类别型特征,先进行嵌入学习,转换为稠密、低维的实值型向量,转换后的向量维度通常在 10-100 这个范围。
这里的嵌入学习,就是先随机初始化嵌入向量,再直接扔到整个前馈网络中,用目标函数来优化学习。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Wide & Deep模型是一种融合了传统CTR预估方法和深度学习技术的推荐系统模型。该模型结合了线性模型和深度神经网络,通过特征交叉和嵌入学习实现对高维稀疏类别型特征的处理,同时提供了非线性转换,使模型具有更强的泛化能力和推荐效果。这种工程创新适合高维稀疏特征的推荐场景,将传统的“宽模型”和新的“深模型”结合,展现出了较好的应用前景。该模型已经开源在TensorFlow中,大大减小了落地成本,为读者提供了深入了解和应用该模型的基础知识。在GooglePlay的App推荐服务中的应用情况表现良好,用户安装表现良好,线上效果相对于对照组有3.9%的提升。然而,线下的AUC值提高并不明显,这也引发了对AUC值是否是最佳的线下评估方式的讨论。整体而言,Wide & Deep模型是一个既博学又精深的模型,为推荐系统领域带来了新的思路和应用前景。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《推荐系统三十六式》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(12)

  • 最新
  • 精选
  • 王王王
    越来越难了,很多技术概念需要慢慢消化

    作者回复: 坚持住,我们能赢!

    2018-04-06
    1
  • 曾阿牛
    AUC值衡量的是整体排序,但对前N1个物品排越前对用户影响越大,跟AUC值是有一定出入

    作者回复: 最终的商业目标受很多因素影响,排序好坏只是其中一方面,影响用户最终消费的因素都应该纳入考虑。

    2018-04-06
    1
  • 江枫
    老师好,特征embedding也是和模型训练过程一起进行的吗?如果提前做好embedding,比如用word2vec,效果如何?另外,对于新物品,新特征,可能没有embedding结果,怎么处理?谢谢。
    2018-04-06
    9
  • 林彦
    AUC 的不足之处有:(1)反映的是模型的整体性能,看不出在不同点击率区间上的误差情况。有可能线上实际用户点击多的那部分物品误差低,点击少的那部分物品误差高。与线下对所有物品的整体误差评估有差异;(2)只反映了排序能力,沒有提现精确度。比如,训练出的模型的点击率对所有物品同时乘以一个常数,AUC值不会改变,而模型对于点击率的预测值和真实值的差距肯定有变化。我的理解就是新的模型可能对于排名高,排名低,点击率高,点击率低等的某一类物品的点击率提升较大,但对排名本身的顺序影响不大。 不足之处是参考了网上一篇不错的综述文章得到的,非原创。
    2018-04-06
    6
  • @lala0124
    老师,您好,这个wide&deep模型我之前有了解过,tensorflow的实现版本也很简洁,我想问一下deep模型中的embedding向量是否只能来自分类特征
    2018-04-11
    3
  • shangqiu86
    我补充下@江枫的问题,老师,有时候embedding的参数需要随着整个模型一起调优,有时候又说要先进行embedding,即embedding的参数不随着整个模型一起调优,什么场景下要一起,什么场景下不一起呢?
    2019-04-30
    1
  • shangqiu86
    用过wide&deep模型,效果 并不太理想,是在资讯推荐中,把资讯内容先做了word2vec,再加上一些其他特征,准确率就比随机高一点点,老师,不知道这种还怎么调优
    2019-04-30
  • Dan
    老師您好,想請教您,在paper表示,深模型的optimizer 用adagrad,寬模型用FTRL。在joint training的階段是使用前面兩個學習完的權重做為initial,使用mini batch 的sgd做joint train嗎?還是說是分開使用不同的optimizer ,只是使用相同的 logistic loss?
    2018-04-22
  • Dan
    老師您好,請教您,在深模型的embedding 層的dense vector長度通常是如何setting 或者 tuning ?作者設32 - 1200 - 1024 - 512 - 256,有什麼涵意嗎?感謝您
    2018-04-22
  • 半瓶墨水
    昨天刚搞明白这篇论文,就是TensorFlow的函数名称太复杂了
    2018-04-13
收起评论
显示
设置
留言
12
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部