负采样
0.广告系统存在的问题
转载:https://www.jianshu.com/p/2f64f49e43cd
0.1 训练数据跟线上数据的分布不一致
也可以称为样本选择偏差问题。由于用户点击的广告只占总广告的一小部分,也就是我们训练只用到的一小部分数据集,但是我们在线上预测的时候是在整个数据集上预测,所以就有了样本选择偏差问题。
0.2 曝光未点击的广告不一定是用户不喜欢的
0.3 数据稀疏问题。正负样本比例太大
0.4 长尾分布问题
0.5 不能用只用曝光未点击的数据作负样本
1.该数据较优质,已经经过上一次排序,召回筛选,只能在较优质与优质文章中筛选
2.未见过坏样本数据,导致训练强度不够,导致训练出结果偏差较大
1.随机负采样
转载:https://blog.csdn.net/u011233351/article/details/104951598/
1.1 存在问题
头部效应非常重。热文被大量分发,个性化能力大幅减弱。站在一个用户的角度看,用户的样本可以通过一些手段做到均衡化。站在一篇文章的角度看,就不是这么回事了,被频繁点击的文章有大量正样本,因为负样本是随机采样,冷文章和热文章被采到的几率相等,那么被频繁点击的文章正样本相对负样本就会多很多,多到均衡化都带不动。
1.2 失效原因
库中有1000个item,我需要随机负采样5000次,那么理论上对于每篇文章会出现5个负样本,假设有5000次点击形成的正样本,5000个正样本里点击频率top10的item瓜分了500个点击,那么top10中的每个item就有了50个正样本。50个正样本+5个负样本带入模型训练,模型会认为这篇文章适合推荐给绝绝绝大多数人,但这篇文章很肯能是“杨幂离婚”类,“杜兰特感染冠状病毒”类,“王者荣耀新英雄”类文章(在某个大领域人人都关注,点击,但出了这个圈子有大量人其实并不care)。
1.3 改进方式
热门物品作正样本时,降采样;作负样本时,过采样
2 Real-Negative Subsampling(百度,广告)
百度广告展示系统整体的广告点击率只有0.03%。而且曝光频次是长尾分布的,所以少数的广告占据了大部分曝光。
这些广告可能同时出现在正样本和负样本中。我们不希望这些广告出现在负样本中被压制,因为他们通常具有很高的商业价值。因此会对这部分广告进行降采样。
采用的方法是:训练集中具有较高曝光频率的广告的负样本三元组,以这个概率丢弃:
3 加权随机负采样(百度,广告)
百度,CIKM2020,Sample Optimization For Display Advertising
1.根据广告的曝光频次对广告进行分组:
将大于阈值的记为Ah, 小于阈值的为Al, f(a)为广告a的曝光频次。
2.生成一个(0,1)之间的随机数p
如果p小于Pl,则从Al使用均匀采样的方法得到一个广告;
否则从Ah中基于unigram distribution分布采样得到一个广告。
上面Pl的定义:
4 hard负样本(FB)
4.1 将样本分三类
1.正样本(用户点击)
2.easy 负样本(随机筛选,模型很容易区分出)
3.hard负样本(能够增加模型训练难度,可提升模型关注细节的能力)
4.2 筛选负样本的方式
1.增加属性相似负样本(例如同城Item)
2.增加被拒绝的负样本
3.利用上一版本模型召回算出101-500的文章作为负样本
4.2.1 用其他样本的点击作为负样本
适用于Online负样本采样
一个batch中从其他user的点击中随机选取k个作为负样本(文中k=2)
频繁被点击的文章会被频繁负采样,可做到文章侧的样本均衡,有效减轻了头部效应。并且相对于排序的负采样,数据的广度更宽,模型可处理多种类型的文章。
但是实际上以这种方式选取出来的负样本还不够 hard,因为这些 negative 是属于不同的 query 的,不同 query 的相关性不高,因此这些样本的相似性也不高,因此还需要offline hard negative mining
4.2.2 取上一版本的召回排在101~500的样本作为负样本
适用Offline负样本采样
在每个 query 的所有 document 中,选择那些排序在 101-500 的位置的样本作为 hard nagative
easy:hard=100:1
5 模型维度的负样本的使用(FB)
5.1并联模型
分别使用easy负样本、hard负样本构成的样本训练多个模型,对得到的embedding加权拼接(权值需要手工调整)。
5.2 串联模型
先用easy负样本完成第一阶段的训练,再用第一阶段的输出作为第二阶段的初始值,使用hard样本训练。
根据文章中的经验,使用“曝光未点击”作hard negative训练出来的hard model同样没有效果,反而是挖掘出来的hard negative训练出来的hard model做二次筛选更加有效。