wide&deep 阅读笔记

introduction

给定一个query,推荐系统任务就是在数据库里找到相关的items,然后对召回的items根据确定的目标属性进行rank排序。

推荐系统的一个目标,就是同时达到memorization和generalization。

memorization可以被定义为去学习items和features之间的关系,同时探索在历史数据上他们之间的相互联系。局限性较强。

generalization(泛化性)可以被定义为这种联系的可信度,新特征是否能符合这种联系。比较有多样性。

推荐系统概览

用户会发起一个query,这个query通常包含着用户的信息(国家,语言),以及现在的上下文的信息(比如使用的设备,现在几点,现在是星期几)。然后系统进行一个retrieval召回一批候选池,因为全量的app数量级太大,不可能对其一个一个打分排序,所以先进行召回一批数据。之后在进行ranking排序,最后返回一些头部的结果,这些会转换为用户的点击或者购买。

wide的部分

特征方面除了单列输入的特征以外,还有将它们进行叉乘之后得到的组合特征(cross-product transformation),比如将性别和语言叉乘,就得到了,性别为男语言为英语,性别为女语言为英语等等结果。这一操作捕获了特征之间的关系,引入了非线性。

deep的部分

将这些输入特征转换为embedding的形式,维度通常在10-100之间,转换的过程一开始会被随机初始化。之后将特征送入mlp。

wide & deep 的联合训练

wide和deep分别的部分输出之后,会用一层网络weight他们的输出来得到最后的输出,最后使用logistics loss来进行优化。

不同于集成,联合训练有一些特点:

1. 集成的各个子模型之间是不知道对方的存在的,也就是独立存在的;而联合训练是一起训练的,彼此的输出相互影响,而且不需要每一部分(wide ||  deep)的输出那么准确,因为可以相互弥补。

2. 集成由于各个模型独立,需要把每个模型训练到很高的点,这就导致了每个模型参数会很大,而联合训练则没有这种弊端。

在优化方面,使用Follow- the-regularized-leader+L1正则化来优化wide的部分,使用adagrad优化器来优化deep的部分。

p是模型后面的输出,两个w是模型的weight,sigmoid funciton用来压缩模型输出值到概率值0-1的空间内。

系统实现

推荐系统pipeline包含三个部分:数据生成-》模型训练-》模型推断服务

数据生成

训练数据通过一段周期内的用户数据生成,标签是用户的反馈,比如下载app与否,如果没下载就是0,下载了就是1。对于一些词汇来说,会把它们映射到id的空间去,也就是根据范围来确定id的范围,然后会normalize特征到0-1的范围内。

模型训练

如果新的训练数据来了,就将重新训练,但是重新训练量太大比较麻烦,所以提出可以用之前的版本来做一个warm-starting的启动。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值