天天看点

【推荐算法论文阅读】Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations

一、背景

工业界现有的推荐系统都需要从一个超大规模的候选集中拉取item进行打分排序。解决数据稀疏和指数级候选集分布的一种通常做法是从item的内容特征中学习出item的稠密表示。这里很自然地就想到了工业界大名鼎鼎且应用广泛的双塔神经网络结构,其中的一塔就是从丰富的item内容特征中学习到item的表示。

工业界目前训练双塔结构一般是通过随机mini-batch的方式来优化损失函数。这种训练方式存在的一个显著问题就是in-batch loss会因为随机采样偏差而导致模型效果不好,尤其是当样本分布出现明显倾斜的时候。我们提出了一种全新的算法,可以从流式数据中预估item的频率。通过理论分析和实验,新算法有能力在不知道候选集全部的词典情况下做出无偏差的估计并且可以自适应候选集分布的变化。在Youtube线上的实验也证明了该算法的有效性。

二、亮点

在大规模的推荐系统中,利用双塔模型对user-item对的交互关系进行建模,学习【用户,上下文】向量与【item】向量,针对大规模流数据,提出in-batch softmax损失函数与流数据频率估计方法(Streaming Frequency Estimation),可以更好的适应item的多种数据分布。

三、模型结构

3.1 模型框架

利用双塔模型构架推荐系统,Queries特征向量 { x i } i = 1 N \{x_i\}^N_{i=1} {xi​}i=1N​和item特征向量 { y j } j = 1 M \{y_j\}^M_{j=1} {yj​}j=1M​ ,目标是给定一个query,检索到一系列item子集用于后续排序推荐任务。模型结构如图所示:

【推荐算法论文阅读】Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations

3.2 In-batch loss function

【推荐算法论文阅读】Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations

直觉上,检索问题可以看作是一个多分类问题,给定query X,从M个item中得到y的概率可以利用softmax函数计算:

【推荐算法论文阅读】Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations

当M非常大时,我们通常可以利用负采样算法进行计算。然而对于流数据,我们考虑在同一个batch中采样负样本,batch-softmax函数为:

【推荐算法论文阅读】Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations

在每个batch中,由于存在幂律分布现象,即如果在每个batch中随机采样负样本,会使热门商品更容易被采样到,在损失函数中就“过度”惩罚了这些热门商品,因此考虑用频率对采样进行修正,即:

【推荐算法论文阅读】Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations

这里引入 p j p_j pj​的作用是:当 p j p_j pj​越小时, − l o g ( p j ) -log(p_j) −log(pj​)越大, s c ( x i , y j ) s^c(x_i,y_j) sc(xi​,yj​)就越大;反之,当 p j p_j pj​越大时, s c ( x i , y j ) s^c(x_i,y_j) sc(xi​,yj​)就越小。相当于降低了热门商品的得分,提高了冷门商品的得分。

3.3 Streaming Frequency Estimation

此方法用于估计在流数据中,每个batch下item出现的概率。

如果一个item每50步出现一次,那么该item出现的概率p=1/50=0.02。按照这样的想法,针对流数据,利用哈希序列来记录采样id(暂时不考虑hash collision的问题)。

定义两个大小为H的数组A,B,哈希函数h可以把每个item映射为[H]内的整数。

A[h(y)]表示item y上次被采样到的时刻

B[h(y)]表示每多少步item y可以被采样一次

先说结论,当第t步y被采样到时,利用迭代可更新A,B:

【推荐算法论文阅读】Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations

利用上述的In-batch loss function与Streaming Frequency Estimation可建立双塔模型:

【推荐算法论文阅读】Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations

为了解决hash collision的问题,可以建立多个数组 A i , B i A_i,B_i Ai​,Bi​,最终在多个数组中取最大:

【推荐算法论文阅读】Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations

3.4 YouTube推荐

利用双塔模型训练,对YouTube的视频推荐,模型架构如下图所示:

【推荐算法论文阅读】Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations

训练标签:当点击了video并观看完整,则 r i = 1 r_i=1 ri​=1 ,否则 r i = 0 r_i=0 ri​=0

视频特征:视频 id,频道id等,特征转化为embedding,对于多值类别时,对embedding加权平均

用户特征:历史观看视频embedding等

参考资料

  1. Google工业风最新论文, Youtube提出双塔结构流式模型进行大规模推荐
  2. 【推荐系统经典论文(九)】谷歌双塔模型

继续阅读