机器学习本质上是在学习数据的分布, 其有效性的假设是模型 training 和 serving 时的数据是独立同分布(Independent and Identically Distributed, IID) 的,但是在实际应用中,由于采样有偏、具体场景等约束, training 的样本与 serving 时的样本并不是 IID 的。
在广告场景下,最典型的就是训练 cvr 模型时,训练样本都是 post clicked 的,但是 serving 时,cvr 模型面临的是所有被召回的样本;这类问题也被称为 exposure bias 或 sample selection bias,除了 exposure bias,position bias 等也是常见的 bias。
本文首先会简单介绍一些机器学习中的常见 bias,并着重介绍上面提到的 exposure bias(也叫 sample selection bias) 的在当前的一些解决思路, 笔者将其总结为 Data Augmentation、IPS 和 Domain Adaption 三大类方法。
除了本文要重点介绍的 exposure bias,这篇综述 Bias and Debias in Recommender System: A Survey and Future Directions[1] 描述了当前的推荐系统中存在的若干种 bias,paper 将当前的推荐系统划分为 User、Data、Model 三个大模块,并将各个模块的 iteraction 导致的 7 种 bias 归纳成下图
Bias in ML
产生训练数据的过程,也是 Bias 的最主要来源
利用数据训练出模型的过程
指的是模型预估的过程
上面的各种 bias 的起因、影响以及一些解决思路可归纳为下表
Bias details Table
可以看到,上面这些 bias 并不是孤立的,而是相互影响和恶化的,其中 position bias 和 exposure bias 又是最为常见且相关研究较多的一个领域。
下面主要详细描述一些应对 exposure bias 的方法,值得注意的是,这里的 selection bias 跟 exposure bias 面临的问题是一致的,因此这里的方法也会一并归纳;bias 相应的方法可以参考上面的 paper。
exposure bias 也被称为 Sample Selection Bias(SSB), 本质上是一个 「training 和 serving 不一致的问题」。这个问题往往是由于具体业务场景的限制,导致 training data 中的样本只是其 serving 时的很小一部分,因为其他的样本没被曝光/点击,导致了无法得到其 label。
如文章开头提到的 cvr 模型,对于那些不被点击的样本是无法得知其是否被转化的;同样地,在 ctr 模型中,那些没有曝光机会的样本是无法得知其是否被点击的了;但是在 serving 阶段,ctr/cvr 模型面对的是所有的样本,而其中有很多是从未曝光过的,因此便导致了一个 training 与 serving 不一致的问题。
针对这个问题,当前有以下几种解决思路(不限于上面综述的 paper)
(1) 「Data Augmentation」:这个是最朴素的想法,就是尽可能将那些没进入训练数据集的样本利用上,因此不少研究也是给 unobserved/unclicked 的样本打上一个「相对准确的 label」;而这里面也主要分为下面三类方法
(2) 「IPS(Inverse Propensity Score)」: 这个方法的假设是样本被「曝光或点击服一个伯努利分布」,然后从概率论推导出:只要给每个曝光的样本加权(权重即为 inverse propensity score),最终在曝光的样本上求得的期望等于在全量样本上的期望;实际上,这个方法的思想就是 importance sampling[3]
(3) 「Domain Adaption」: 类似 transfer learning 的思想,将曝光/点击的样本视为 source domain,全部样本视为 target domain;通过 domain adaption 的一些方法去进行 debias
上面提到了,最朴素的想法是将那些未被观测到的样本利用上,而这里面又可分为三大类方法:all nagative with confidence、imputation model 和 multitask learning
第一类方法是将所有未被观测到的样本都当做负样本,而这里的核心是如何给每个样本一个合理的 confidence,其实就是样本的加权,上面提到的综述中介绍了三种方法,分别是 「Heuristic、Sampling、Exposure-based model」
第二种方法也很直观,就是训练一个 imputation model 为那些未曝光/点击的样本打上标签,然后基于这些 imputed label 来训练模型;而 imputation model 可单独训练,也与目标的模型做 joint training;
这个方法的弊端也很明显,就是生成的 imputed label 缺少绝对的 ground truth 来衡量其效果,实际上,这个是所有直接为样本生成 label 的方法的弊端。
第三种方法是基于 multitask 的方法,主要思想就是「同时建模当前的任务及其更浅一层的任务,进而间接利用那些没被曝光/点击的数据」;
其中为人熟知的是阿里在 2018 年发表的 ESMM, Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conversion Rate[4],这篇 paper 主要针对的是 cvr 模型中缺少未点击的样本带来的 bias,增加了两个 auxiliary task(CTR 和 CTCVR) 来缓解这个问题,总体的模型结构如下图所示
ESMM
训练的 loss function 如下所示(
表示点击事件,
表示转化事件)
可以将模型利用的样本视为 (show, click, convert) pair 对,则相比传统 cvr 模型,ESMM 能够利用那些曝光未点击的样本(即下表中最后一列,0/1表示对应的中间链路事件是否发生)
show | click | convert |
---|---|---|
1 | 1 | 1 |
1 | 1 | 0 |
1 | 0 | 0 |
在预估时,通过如下条件概率公式,能够从统计意义上保证 cvr 的值是无偏的
实验效果如下,各种方法的具体含义如下
ESMM 效果对比
Inverse Propensity Score 的做法是为每个有 label 的样本预估一个 propensity score(倾向性得分),其含义直观来说就是样本进入训练集(被标记 label)的概率,如对于 CTR 模型,propensity 就是曝光的概率,对于 CVR 模型,propensity 就是点击的概率。
IPS 实际上借鉴了 Importance Sampling 的思想,通过给每个样本一个概率值作为权重,从统计学上证明了基于观测到的数据求得的期望与全量数据的期望是一致,其推导过程可简单描述为如下方式
记
是观测到 label 的样本数,
则是同时包含了那些没被观测到的样本(
);则无偏的优化目标应该是 (
、
分别表示 label 与预估值)
现在令第
个样本的是否被观测到记为
,则可假设
服从一个伯努利分布即
, 这里的
是样本
被观测到的概率,则上面的优化问题可写成如下形式
则上面问题 (1) 可被写成如下形式, 即可通过观测到的数据进行模型的训练,而
可利用label 为是否被观测到的数据进行训练,训练方式可以是单独训练或与这个 task 做 joint training。
而如果套用 importance sampling[6] 的方法,其实也能得到上面问题(2)的形式,在观测到的样本中, 样本
被采样的概率是
, 而在全部样本中,由于每个样本都会被采样到,因此其采样概率是 1,即加权的系数是
此外,也有方法同时融合了第一类方法中的 imputation model 和这里的 IPS 方法,被称为 「Doubly Robust Method」,则其损失函数可写成如下形式(
是通过 imputation model 得到的 label)
上述方法在 Improving Ad Click Prediction by Considering Non-displayed Events[7] 有较为详细的描述,可以参考一下
Domain Adatption[8] 可以认为是 transfer learning 的一个子领域,根据 wiki 的说法其目标是
aim at learning from a source data distribution a well performing model on a different (but related) target data distribution.
这个说法比较宽泛,实际中用到的方法可分为下面四大类(from wiki[9]),实际上跟我们上面提到的方法的思想都比较相似
而在 Exposure Bias 场景下,观测到的数据被当做 source domain,全量数据被当做 target domain,利用 domain adaption 解决 exposure bias 比较有代表性的 paper 是阿里在 2020 发表的 ESAM,ESAM: Discriminative gDomain Adaptation with Non-Displayed Items to Improve Long-Tail Performance[10]
ESAM(Entire Space Adaption Modelling) 跟上面提到的 ESMM(Entire Space Multi-Task Model) 名字很相似,要解决的问题也很相似,但是前者是召回场景, 后者是 cvr 场景;
ESAM 总体如下所示,各符号含义如下(基本上就是向量化召回的涉及到的概念)
: query
: 有曝光的 item
: 没有曝光的 item
,
: 将 query 和 item 映射成 embedding 的函数
,
: query 和 item 被
,
映射出来的 embedding
: 计算
,
相似性的函数,常见的是內积
: 基于
吐出的预估值
计算的损失函数,常见的有 point-wise、pair-wise、list-wise 三大类
、
、
: paper 中提出的缓解 exposure bias 的三种途径,以 loss 形式叠加在原始的
上,也是下文要重点展开描述的部分
ESAM Overview
ESAM 的核心在于叠加在原始损失函数
上的三项:
、
、
,下面会分别描述这三项的含义和计算方式
:Domain Adaptation with Attribute Correlation Alignment
这个 loss 项的出发点是两个特征在 source domain 和 target domain 中的相关性是保持一致的,如下图所示,左边的图认为 price 跟 brand 是具有强相关的、brand 跟 material 中度相关、price 跟 material 弱相关,而
这个损失项是基于下面两个假设产生的
(1) 相关性在 source domain 和 target domain 都是一致的 (2) 原始的特征(即 price、brand、material)会被映射到 embedding 中某一维或几维
L_DA
因此,可以设计 loss 项「令两个特征的相关性在 source domain 和 target domain 尽可能保持一致」, 而这里的相关性可采用协方差
因此,
项计算方式如下,令
为 n 个 source domain 样本映射出来的 embedding matrix,而
则是 n 个 target domain 样本映射出来的 embedding matrix, 每个
是一个长度为
的向量
如果将每个 embedding 相同的维度提取出来作为一个 vector
,则
和
也可写成如下形式,每个
是一个长度为
的向量
则
计算方式如下
上式中的
和
分别代表 source domain 和 target domain 的 covariance matrix,此外,笔者认为上面的公式其实表达不完全准确,因为 covariance[11] 计算还需要减去均值的,上面并没有这么做
加上改了这一项后,可以认为 source domain 和 target domain 在向量空间中的分布变化如下
ESAM_L1
:Center-Wise Clustering for Source Clustering.
第二项 loss
跟人脸识别中最早提出的 center loss[12] 很相似,就是让相同类型的样本在向量空间中尽可能接近,在广告的场景下这个类型可以是 click、non-click、purchase等;此外,还会令不同类型的样本在向量空间中的距离尽可能远;这个思想比较好理解
而为了定义出距离,会为每一个类型定义出一个聚类中心,聚类中心会被参数化;具体计算方式如下
上面的公式中
和
分别是两个 margin,表示样本距离其类簇距离小于
和 类簇之间的距离大于
的情况下无需优化;同时假设所有样本有
种类型, 第
种类型(即样本 label 为
)样本的 center 是
,其定义为当前训练样本中类型为
的样本的向量的中心,表示如下(
函数的值为 1(cond=true) 或 0(cond=false))
则加入
这一项后,source domain 和 target domain 在向量空间中的分布变化如下,可以看到,「虽然 target domain 中的样本具有高内聚性,但是其聚类的簇可能是错误,其原因是对于 target domain 中的样本,目前为止都没有加入 label 信息」,而这便是下一项 loss
要解决的问题
ESAM_Loss2
:Self-Training for Target Clustering.
从这项 loss 的描述中的 「self training」,可以猜测其做法是为 target domain 中 unlabeled 的样本打上标签用于训练模型,这是 semi supervised learning 中常见做法,而 paper 中并「没有直接为 unlabeled 的样本打上标签,而是通过 loss
较为巧妙地实现了这一点」,其表达如下
其中
和
是两个阈值,表示含义是样本的「置信度达到一定程度才认为其是负样本/正样本,则这个 loss 的目标会让预估值小于
的样本预估值更接近 0,预估值大于
的样本的预估值更接近 1」,原因见可以看下面画出的
的函数,直接令这一项最小即可达到 self-training 的目标
Entropy regularization
加入
这一项后,source domain 和 target domain 在向量空间中的分布变化如下, 也是 ESAM 的最终形态
ESAM_Loss3
则最终的 loss 为下式所示,其中
,
,
是三个超参, 通过 gradient descent 即可求解
综上,本文主要针对 exposure bias 介绍了三大类方法,分别是 Data Augmentation、IPS 和 Domain Adaption,三类方法主要思想如下
此外,上面的一些方法虽然从理论上看起来比较 fancy,但是根据笔者当前的工作经验,实际中应用这些方法,还需要考虑到模型的迭代效率、理论的假设是否符合实际等等;比如说 data augmentation/ESAM 方法会导致数据量增加不止一个量级,而这会势必会导致训练时长增加,即使这个方法有效果,也要考虑带来的收益以及牺牲的迭代效率和机器资源等兑换是否划算, 或者考虑如何改进采样策略尽可能打平样本量。
[1]
Bias and Debias in Recommender System: A Survey and Future Directions: https://arxiv.org/abs/2010.03240
[2]
Inductive Bias: https://en.wikipedia.org/wiki/Inductive_bias
[3]
importance sampling: https://en.wikipedia.org/wiki/Importance_sampling
[4]
Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conversion Rate: https://arxiv.org/pdf/1804.07931.pdf
[5]
这篇 paper: http://wnzhang.net/papers/unbias-kdd.pdf
[6]
importance sampling: https://zhuanlan.zhihu.com/p/41217212
[7]
Improving Ad Click Prediction by Considering Non-displayed Events: https://www.csie.ntu.edu.tw/~cjlin/papers/occtr/ctr_oc.pdf
[8]
Domain Adatption: https://en.wikipedia.org/wiki/Domain_adaptation
[9]
wiki: https://en.wikipedia.org/wiki/Domain_adaptation#Four_algorithmic_principles
[10]
ESAM: Discriminative gDomain Adaptation with Non-Displayed Items to Improve Long-Tail Performance: https://arxiv.org/pdf/2005.10545.pdf
[11]
covariance: https://en.wikipedia.org/wiki/Covariance
[12]
center loss: https://link.springer.com/chapter/10.1007/978-3-319-46478-7_31
- END -