每周一文(六)Facebook EBR向量召回模型

契机

从样本和模型两方面来介绍向量级别召回模型的由来。提出很有建设性的工业级别的参考价值。

样本角度

有监督的二分类模型需要构建正负样本,正样本的选择不管是召回和排序来说都是一致的,即用户有显式的点击行为的样本为正样本。而对于召回模型(甚至对于粗排模型)来说,负样本的选择至关重要,如下会介绍正样本的构建方法和两种级别的负样本构建方法。

正样本抽样

有些item在用户显式点击反馈中出现的次数过高,这会导致召回模型会被这些item绑架,因而需要对用户显式点击反馈中的item进行抽样,被抽到的概率为如下公式,其中 Z ( w i ) Z(w_i) Z(wi)代表item在整个item库中出现的频次。

P p o s = ( Z ( w i ) 0.001 + 1 ) 0.001 Z ( w i ) P_{pos}=(\sqrt{\frac{Z(w_i)}{0.001}}+1)\frac{0.001}{Z(w_i)} Ppos=(0.001Z(wi) +1)Z(wi)0.001

这里抄这位大神的图,可以看出抽样概率和item出现频次是呈反比的,即出现频次越高,其抽取的概率越低。
在这里插入图片描述

负样本构建之easy negative

顾名思义,easy negative即模型比较容易判别出来的负样本,这些负样本必须特别"负"才行,换句话说就是和用户兴趣八竿子打不着的item会被当做easy negative,这样才能更好的模拟线上数据分布。

负样本构建之hard negative

送到召回模型的负样本不能只有比较容易区分的easy negative,也必须有一些较为难分的样本,即为这里的hard negative。文章中所提到的hard negative是线上召回模型排序后位置不前不后的item作为hard negative来用,这样的效果是最好的。

负样本抽样

构建好负样本后,也会面临和正样本一样的问题,即冷门和热门的问题,因而这里抽样的公式如下,其中 n ( w i ) n(w_i) n(wi)代表的是item在整个item库中出现的频次。

P n e g = n ( w i ) α ∑ j n ( w j ) α P_{neg}=\frac{n(w_i)^\alpha}{\sum_j{n(w_j)}^\alpha} Pneg=jn(wj)αn(wi)α

该公式能够兼备冷门和热门的问题,证明过程为如下代码:

import numpy as np

# 每个item出现的频次
>>> x = np.array([10, 20, 30, 50]) 

# 没有特殊处理的各item抽样概率
>>> x / sum(x)
array([0.09090909, 0.18181818, 0.27272727, 0.45454545]) 

# 处理过的各item抽样概率,可以发现热门资源被抽中的概率被打压下来
# 而且冷门资源抽中概率被放大
>>> x ** 0.75 / sum(x ** 0.75)
array([0.12040937, 0.20250362, 0.27447401, 0.402613  ])

曝光未点击为"鸡肋"

这只是针对召回模型来说,用户未点击并不代表用户显式的不喜欢这些资源,而只是更加喜欢那些他们主动点击的资源,这也是召回和排序对于样本层面的不同之处。文章中也提到,用曝光未点击样本作为负样本,并没有指标上的显著提升。

模型角度

这里阐述两个概率:easy model和hard model。easy model是用easy negative作为负样本训练出的模型,hard model是用hard negative作为负样本训练出的模型。而且这里的"模型角度"主要想阐述的是不同模型之间的融合方式。

并行融合:不同模型的加权求和。
串行融合:先过easy model,再过hard model,这其实和召回+粗排的逻辑是一样的。

参考

  1. 负样本为王
  2. facebook EBR模型
  3. word2vec中的正负样本采样方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值