推荐系统三十六式
刑无刀
“贝壳找房”资深算法专家,8年推荐系统工程师
立即订阅
11443 人已学习
课程目录
已完结 39 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 用知识去对抗技术不平等
免费
第1章 概念篇 (3讲)
【概念篇】你真的需要个性化推荐系统吗?
【概念篇】个性化推荐系统那些绕不开的经典问题
【概念篇】这些你必须应该具备的思维模式
第2章 原理篇 (20讲)
【内容推荐】画鬼容易画人难:用户画像的“能”和“不能”
【内容推荐】从文本到用户画像有多远
【内容推荐】超越标签的内容推荐系统
【近邻推荐】人以群分,你是什么人就看到什么世界
【近邻推荐】解密“看了又看”和“买了又买”
【近邻推荐】协同过滤中的相似度计算方法有哪些
【矩阵分解】那些在Netflix Prize中大放异彩的推荐算法
【矩阵分解】Facebook是怎么为十亿人互相推荐好友的
【矩阵分解】如果关注排序效果,那么这个模型可以帮到你
【模型融合】经典模型融合办法:线性模型和树模型的组合拳
【模型融合】一网打尽协同过滤、矩阵分解和线性模型
【模型融合】深度和宽度兼具的融合模型 Wide and Deep
【MAB问题】简单却有效的Bandit算法
【MAB问题】结合上下文信息的Bandit算法
【MAB问题】如何将Bandit算法与协同过滤结合使用
【深度学习】深度学习在推荐系统中的应用有哪些?
【深度学习】用RNN构建个性化音乐播单
【其他应用算法】构建一个科学的排行榜体系
【其他应用算法】实用的加权采样算法
【其他应用算法】推荐候选池的去重策略
第3章 工程篇 (10讲)
【常见架构】典型的信息流架构是什么样的
【常见架构】Netflix个性化推荐架构
【常见架构】总览推荐架构和搜索、广告的关系
【关键模块】巧妇难为无米之炊:数据采集关键要素
【关键模块】让你的推荐系统反应更快:实时推荐
【关键模块】让数据驱动落地,你需要一个实验平台
【关键模块】 推荐系统服务化、存储选型及API设计
【效果保证】推荐系统的测试方法及常用指标介绍
【效果保证】道高一尺魔高一丈:推荐系统的攻防
【开源工具】和推荐系统有关的开源工具及框架介绍
第4章 产品篇 (3讲)
【产品篇】推荐系统在互联网产品商业链条中的地位
【产品篇】说说信息流的前世今生
【团队篇】组建推荐团队及工程师的学习路径
尾声与参考阅读 (2讲)
推荐系统的参考阅读
【尾声】遇“荐”之后,江湖再见
推荐系统三十六式
登录|注册

【模型融合】深度和宽度兼具的融合模型 Wide and Deep

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

要深还是要宽

融合排序,最常见的就是 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/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《推荐系统三十六式》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(12)

  • 江枫
    老师好,特征embedding也是和模型训练过程一起进行的吗?如果提前做好embedding,比如用word2vec,效果如何?另外,对于新物品,新特征,可能没有embedding结果,怎么处理?谢谢。
    2018-04-06
    7
  • @lala0124
    老师,您好,这个wide&deep模型我之前有了解过,tensorflow的实现版本也很简洁,我想问一下deep模型中的embedding向量是否只能来自分类特征
    2018-04-11
    3
  • 林彦
    AUC 的不足之处有:(1)反映的是模型的整体性能,看不出在不同点击率区间上的误差情况。有可能线上实际用户点击多的那部分物品误差低,点击少的那部分物品误差高。与线下对所有物品的整体误差评估有差异;(2)只反映了排序能力,沒有提现精确度。比如,训练出的模型的点击率对所有物品同时乘以一个常数,AUC值不会改变,而模型对于点击率的预测值和真实值的差距肯定有变化。我的理解就是新的模型可能对于排名高,排名低,点击率高,点击率低等的某一类物品的点击率提升较大,但对排名本身的顺序影响不大。

    不足之处是参考了网上一篇不错的综述文章得到的,非原创。
    2018-04-06
    3
  • shangqiu86
    我补充下@江枫的问题,老师,有时候embedding的参数需要随着整个模型一起调优,有时候又说要先进行embedding,即embedding的参数不随着整个模型一起调优,什么场景下要一起,什么场景下不一起呢?
    2019-04-30
    1
  • 王王王
    越来越难了,很多技术概念需要慢慢消化

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

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

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

    2018-04-06
    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
  • 会飞的牛
    刑老师,有什么方法可以快速搭建一个抓取数据的推荐系统吗?
    2018-04-08
  • 有没有推荐系统的实例,可以测试
    2018-04-08
收起评论
12
返回
顶部