双塔模型专题1:论文解读之Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations

背景介绍

推荐系统中特征一般分为三类:user(年龄、性别和省份等)、context(时间、搜索词、手机型号和来源页等)和item(具体推荐物品的特征)。

其他术语:

Items(documents):推荐系统推荐的实体,对于YouTube就是视频,对于Google应用商店就是app。

Query(context):推荐系统用query的信息进行推荐,query信息包括用户信息(用户id,用户交互特征)和上下文信息(时间,设备)。

Embedding:离散值到向量空间的隐射,大部分的推荐系统都是基于学到的item和query的向量表达来做推荐的。

模型结构

双塔模型结构如下图:

左边网络对{user , context }进行编码,右边网络对{item}进行编码,那么假定左边query和右边item分别对应的特征向量为:\{\textbf{x}_i\}^N_{i=1}\{\textbf{y}_j\}^M_{j=1},注意\textbf{x}_i \in \chi\textbf{y}_i \in \gamma为根据各种特征学习出的高纬度特征向量。目标是,给定一个query,召回items的子集。

用两个参数化的embedding函数来建模

embedding函数1:\mu : \chi \times \mathbb{R}^d \rightarrow \mathbb{R}^k

embedding函数2:v: \gamma \times \mathbb{R}^d \rightarrow \mathbb{R}^k

模型的输出是两个embedding的内积:

s(x,y) = <u(x,\theta), v(y, \theta)>

目标是通过T个样本的训练集:

\{(x_i,y_i,r_i)\}^T_{i=1}

学习模型参数\theta(x_i,y_i)表示query x_i和item y_ir_i为用户反馈,例如点击过该视频或者观看该视频的时长。

召回问题可以看作是一个连续回复的多分类问题,分类问题中对于所有的正样本,label的值为1,而推荐中,r_i可以分为多级,例如新闻推荐中,可以拿一篇新闻的阅读时间或者停留时间来做label,给定一个query: x,是否选择y \in \{\textbf{y}_j\}^M_{j=1}通常基于softmax函数:

进一步考虑r_i,可以得到如下log loss损失函数:

M 太大的话,是不太可能计算该损失函数的,一种比较合理的方法是取子集,即batch-softmax的方法,对于一个batch:\{(x_i,y_i,r_i)\}^B_{i=1},对应的batch softmax 为:

如果直接采用此函数,会引入巨大的偏置,因为受欢迎的item会被过度的惩罚,因此修改等式为:

p_j表示item j 被一个随机batch采到的概率, 那么可以得到修正后的batch softmax:

 进一步得到loss function 为:

那么就可以通过梯度下降算法求解了:

 

整个算法实现流程如下:

流频率估计

考虑一组随机batch的item样本组成的一组流,我们的问题是估计每一个batch命中item y的概率。一个严格的设计标准是要求对分布式支持的,也就是对于每个training job都能准确估计。

在分布式训练的过程中,有个全局变量:global step,在多个workers和paramter server之间同步,我们可以把对某个item出现频率p的估计转换为对于\delta的估计,\delta表示连续两次命中item平均要间隔多少step,例如每50steps命中一次,那么p=0.5。global step的优势:1.多个workers在频率估计中通过global step同步 2.\delta的估计可以通过滑动平均来实现,这样可以与分布的不断变化相适应。整个频率估计算法步骤如下:

哈希函数h[y]负责将item转换为转换为H中的一个整数, 两个表AB的大小均为HA[h(y)]记录了y最后一次采样的步数,而B[h(y)]存的是y的估计\delta。如果y出现在步t中,那么更新B:

更新完t后,将t赋值给A[h(y)]。文中证明,该估计是无偏的。

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值