推荐系统遇上深度学习(七十二)-[谷歌]采样修正的双塔模型

本文介绍的论文题目是:《Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations》
论文下载地址是:https://dl.acm.org/citation.cfm?id=3346996

本文是谷歌工业风论文的新作,介绍了在大规模推荐系统中使用双塔模型来做召回的一些经验,值得细细品读。本文仅对文章内容做一个简单介绍,更多细节建议阅读原论文。

1、背景

大规模推荐系统一般分为两阶段,即召回和排序阶段,本文重点关注召回阶段。

给定{用户,上下文,物品}的三元组,一个通用的方法首先是分别计算{用户,上下文} 和 {物品} 的向量表示,然后通过一定的方式如点积来计算二者的匹配得分。这种基于表示学习的方法通常面临两个方面的挑战:

1)工业界中物品的数量十分巨大。
2)通过收集用户反馈得到的数据集十分稀疏,导致模型对于长尾物品的预测具有很大的方差,同时也面临着物品冷启动的问题。

近几年来,随着深度学习的发展,双塔模型常用来用做召回阶段的模型,双塔模型的一般结构如下:

可以看到,双塔模型两侧分别对{用户,上下文} 和 {物品} 进行建模,并在最后一层计算二者的内积。对于每一个正样本,需要随机采样一些负样本,当物品数量十分巨大的时候,上述结构的双塔模型很难得到充分训练。

那么如何对双塔模型进行一定的改进呢?本文主要提出了以下两个要点:通过batch softmax optimization来提升训练效率和通过streaming frequency estimation来修正sampling bias

2、模型介绍

2.1 batch softmax optimization

假设训练集包含T条,物品数量为M:

x包括了用户特征和上下文特征,y则是物品特征,r是对应的label,x和y经过双塔模型得到对应的向量表示,分别记作u(x,θ)和v(y,θ),并通过内积得到二者的相似性得分:

那么给定一个x,从M个物品中选择对应y的概率可以经由下面的softmax方程得到:

损失函数如下:

上述的做法相当于把该样本中的y作为正样本,其余所有的物品当作负样本。但是当M非常巨大时,使用所有的物品来计算softmax方程并不是十分合适。一种通用的做法是通过随机mini-batch的方式来优化损失函数。假设一个包含B条数据的mini-batch,那么对于任意一条数据,softmax计算公式如下:

这种做法相当于把一个batch中此条数据之外物品当作负样本。但是这种做法存在的缺点就是会因为随机采样偏差而导致模型效果不好。对于热门物品来说,由于采样到的概率非常高,当作负样本的次数也会相应变多,热门物品会被“过度惩罚”。因此基于如下的公式对于x和y的评分进行一定程度的修正:

上式中,pj代表第j条样本对应的物品yj被一个mini-batch采样到的概率,这在下一节会详细介绍。

那么此时,softmax计算公式变为:

而batch的损失函数计算如下:

好了,整个的双塔模型训练过程再来回顾一下:

上图中采样概率的预估算法,就是我们下一节要介绍的内容。

2.2 streaming frequency estimation

由于youtube中不断会有新物品出现,那么使用固定长度的词表不太合适,因此采用hash的方式来对物品的采样概率进行更新。

具体来说,假设有一个散列地址大小为H的hash函数h,对物品ID进行映射。同时使用两个长度为H的数组A和B,通过h(y)来得到其在数组A和B中下标。

那么,A[h(y)]记录上一次物品y被采样到的训练时刻,B[h(y)]记录物品y采样的预估频率(这里频率的意思是预估每过多少步可以被采样到一次,那么倒数就是预估被采样到的概率)。当第t步物品y被采样到,基于如下的公式更新B[h(y)]:

而A[h(y)]则被赋予当前的训练步骤t。当训练完成时,预估的物品y的采样概率是1/B[h(y)]。

完整的过程如下:

既然是hash过程,当H<M时,就会存在冲突的情况。冲突的情况会导致B[h(y)]较小,因为t-A[h(y)]会较小。从而导致采样概率预估过高。这里的改进方案是使用multiple hashings。即使用多组hash方程和数组A和B。当训练完成时使用最大的一个B[h(y)]去计算采样概率。具体过程如下:

2.3 Nearest Neighbor Search

当模型训练完成时,物品的embedding是可以保存成词表的,线上应用的时候只需要查找对应的embedding即可。因此线上只需要计算{用户,上下文}一侧的embedding,而基于hash技术(如局部敏感Hash)得到对应的候选集。

2.4 Normalization and Temperature

文中还介绍了双塔模型在使用时两点工业经验。

1)对两侧输出的embedding进行L2标准化,如:

2)对于内积计算的结果,除以一个固定的超参:

除以超参的效果如下,可以看到softmax的效果更加明显:

超参的设定可以通过实验结果的召回率或者精确率进行微调。

3、双塔模型应用于Youtube推荐

双塔模型应用于Youtube视频推荐的框架如下:

训练Label:这里训练集Label并不是点击即为1,未点击为0。而是当一个视频被点击但是观看时长非常短时,label同样是0。当视频被完整看完时,label才是1。

视频侧特征:视频侧包含的特征既有类别特征如视频ID、频道ID,也有连续特征。类别特征中有分为单值类别特征和多值类别特征,对于多值类别特征,采用对embedding加权平均的方式得到最终的embedding。

用户侧特征:用户侧特征主要是基于用户的历史观看记录来捕获用户的兴趣。比如使用用户最近观看过的k个视频的embedding的平均值。对于类别特征,embedding在模型的两侧是共享的。

实时更新:模型基于Tensorflow实现,并且进行了分布式实现。同时,模型会进行天级别更新。

4、实验结果

接下来,看一下几个关键的实验结果。

4.1 频率预估实验

对于实验设置,这里共有M个物品,每个物品的真实出现概率为qi,所有qi的和为1。在前一万步,qi正比于i2,在后一万步,qi正比于(M-1-i)2。如果每次采样B个物品,那么每个物品被采样到的概率为pi=qi * B,并作为label。而预测的概率则是刚才介绍的公式1/B[h(y)],二者通过MAE计算误差。

使用不同的alpha来更新B,结果如下:

可以看到,当alpha越来越小时,随着训练步数的增加,误差是越来越小的。

当使用不同数量的Hash方程时,误差如下:

可以看到,使用更多的Hash方程数量,误差越小。

4.2 Youtube离线&在线实验

在youtube数据集上进行离线训练,结果如下:

上图中,plain-sfx表示不通过概率对采样偏差进行修正,correct-sfx表示修正采样偏差,可以看到修正后效果更为显著。线上结果同样如此:

5、总结

本文作为一篇工业实战类型的推荐文章,详细介绍了双塔模型在使用时的一些小技巧,一起简单来回顾下:

1)使用batch softmax optimization来训练模型。
2)使用frequency estimation来修正采样偏差,修正方法基于Multiple Hashings。
3)线上应用时使用hash等技术来提高检索效率。
4)对两侧得到的Embedding进行正则化。
5)通过对得到的内积除以一个超参数,使得softmax结果更加明显。

好了,本文就到这里了,大伙一定要去看原论文哟。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352

推荐阅读更多精彩内容