前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >庖丁解牛之Deep Retrieval

庖丁解牛之Deep Retrieval

作者头像
炼丹笔记
发布2021-05-14 16:34:30
9980
发布2021-05-14 16:34:30
举报
文章被收录于专栏:炼丹笔记

作者:十方,炼丹笔记一品炼丹师

Deep Retrieval: AN End-to-End Learnable Structure Model for Large-Scale Recommendations

01

Why DR?

一个规模较大的推荐系统,需要解决的核心问题就是如何从百万甚至亿级别的候选集中快速找到最相关的top-k个候选。以前的解决方案都是两步:

  • 双塔模型,最后做Dot
  • 用Annoy Tree或者HNSW给候选集建索引,在线计算向量实时检索top-k

之前方案存在的问题:

  • 因为要分两步,而两步的目标是不一样的。
  • 双塔限制了模型的表达能力

基于此,又出现了TDM等树结构模型,但是把每个候选分配到唯一一个叶子节点是最好的方案吗?所以end-to-end的Deep Retrieval(DR)就这样诞生了。

02

DR长什么样?

DR并没用用树结构,而是采用了一个矩阵结构(图a所示),现在规定只能从左向右走,因此走步就可以走完这个矩阵,一共有种走法,每一种走走法,都代表一簇候选。所以一个候选,可能存在于多种走法,一种走法也会有多个候选。类比到电商,比如一种类别就对应一种走法,一种类别包含多个商品,一个商品可能也属于多个类别,比如巧克力既可以是食品,也可以是情人节礼物。拿图(a)来说,(1,2,1)和(2,1,2)两条路径分别表示情人节礼物和食品,里面都可以有巧克力。

那怎么从从user的特征,找到一天路径,拉出候选商品呢。可以通过user特征,embeding后,user-embedding接softmax层确定先走到哪个节点,走第k步(),就可以用历史走过的所有节点的embedding和user-embedding concat在一起,接softmax层判断第k步走到应该走到哪个节点,最终得到的路径就可以拉出很多candidate了。

DR的优势:

  • 训练的时候item的露肩可以和神经网络参数用EM算法一起学习
  • DR是end-to-end的模型,容易部署
  • 多对多的编码方式使得DR能学到user和item更复杂的关系

03

DR如何定义目标函数?

DR模型结构是个的矩阵,我们认为是D层,每层K个节点。D层对应D个MLP结构的网络,最后接softmax计算K个概率。假设一共有种商品,把V商品映射到唯一条路径()。现假设已知(其实是未知的,我们并不知道每种商品的应该属于哪种路径),已知训练样本(x,y),x表示用户embedding,y是V的一种,该样本表示用户x对商品y点击,点赞,转发等操作。对于这个样本(x,y),我们能预估出一条概率最大的路径,我们肯定希望,所以就会有下式:

p(c|x,\theta) = \prod_{D}^{d = 1}p(c_d|x,c_1,..., c_{d-1}, \theta_d)

既然是概率,我们就可以定义类似logloss的目标函数,如下式:

Q_{str}(\theta, \pi) = \sum_{i = 1}^{N}\log p(c_i = \pi(y_i)|x_i,\theta)

融合上面两个式子:

Q_{str}(\theta, \pi) = \sum_{i = 1}^{N} \sum_{d = 1}^{D} \log p(c_{i,d}|x_i,c_{i,1},...,c_{i, d-1}\theta)

看到这里,大家肯定有疑问,不是一个商品对应多个路径吗,目标函数咋一点没体现?下面才开始介绍多路径的目标函数。

其实并不复杂,增加了一个新的超参,每个样本对应多条路径,此时函数也发生了变化,,多路径的目标函数变成了下式子:

Q_{str}(\theta, \pi) = \sum_{i = 1}^{N} \log \sum_{j = 1}^{J}p(c_{i,j} = \pi_j(y_i)|x_i, \theta)

预估的时候,用Beam Search找到J条路径,合并每条路径召回的item即可。

04

DR如何学习参数?

因为有目标函数有的存在,所以目标函数不连续,也就不可以做梯度下降,因此论文提出EM算法解决这个问题,并用正则化降低过拟合。

再看下多路径目标函数:

然后论文说上式有出现log(0)的风险,通过融合下面不等式,就可以避免这个情况:

\sum_{i = 1}^{N} \log p_i \leq N(\log \sum_{i=1}^{N} p_i - \log N)

于是最终目标函数变为下式,我们可以看到多了一个累和"",因此log里等于把同类别商品J条路径的概率都加了起来,这样log(0)的风险基本降到最低了:

最终,EM训练算法总结如下,关于正则化就不细说了:

05

DR为何如此优秀?

论文提到,DR能如此优秀,是因为目标函数包含了softmax层,因为一开始每个物品的路径是随机初始化的,增加了优化的困难,因为softmax的输入是共享embeding的,使得模型一直在往正确的方向学习,最后还用了beam search,所以召回如此优秀。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 炼丹笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01
  • 02
  • 03
  • 04
  • 05
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档