本文主要介绍WCE
原始论文:[Youtube] Deep Neural Networks for YouTube Recommendations (Youtube 2016)
WCE
- Weighted Cross Entropy,加权交叉熵,也叫做Weighted LR,Weighted Logistic Regression
- 用于解决回归问题
- 主要是存在大量负样本(值为0)的回归问题
- 比如视频浏览时长问题(点击率就比较低)
- 训练时使用损失函数:
$$
loss = \sum_i w_i y_ilog(p_i) + (1-y_i)log(1-p_i)
$$- 其中 \(p_i = \frac{1}{1+e^{-\theta^{T}\boldsymbol{x}}}\)
- \(w_i\) = 回归值(如观看时长)
- \(y_i\) = 是否为正值(即是否点击,未点击表示观看时长为0,视为负样本)
- 对任意样本,我们真实想要的预估目标是一个视频被点击且观看的概率\(pred = wp\)
- serving时使用下面的定义来表示回归值:
$$
pred = e^{\theta^{T}\boldsymbol{x}}
$$- 对于原始的CE损失函数,有\(Odds = \frac{p}{1-p} = e^{\theta^{T}\boldsymbol{x}}\)(补充:Odds表示样本为正的概率除以样本为负的概率,\(log(Odds) = \theta^{T}\boldsymbol{x}\))就是logit
- 当前损失函数下,正负样本的比例(或权重)发生了变化,实际上\(Odds = \frac{p}{1-p} = e^{\theta^{T}\boldsymbol{x}}\)表示的值不再是原始样本中正负样本的比例,而是带权重的比例,详情看后续的证明
- 可以证明上面的方法会造成预估值有偏
WCE改进
- 改进后的损失函数
$$
loss = \sum_i w_i y_ilog(p_i) + log(1-p_i)
$$ - 改进前方案是有偏的,修改为上面的损失函数后,\(pred = Odds = e^{\theta^{T}\boldsymbol{x}}\)是无偏的
- 证明:
- 假设在原始的CE损失函数下,正负样本的比例为A:B,此时有\(p = \frac{A}{A+B}\)【这里只是假设训练时遇到特征值完全相同的多个样本(有正有负),模型在遇到serving时遇到同一个特征值样本时,应该预估样本为正的概率为多少?】
- 原始CE下,样本为正的概率就是正样本数/总样本数
- 那么在上述加权的损失函数下,相当于正负样本的比例为\(wA:B+A\),此时有\(p’ = \frac{wA}{wA+B+A}\)
- 因为权重被修改了,可以证明样本不变,增加权重等价于权重不变,增加样本(重复采样)
- \(wA:B+A\)的原因是因为正样本被加了\(w\)倍的权重,而负样本则被增加了A个(原始的CE函数中正样本不会累加\(log(1-p)\)作为损失,但改进后的WCE会
- 我们真实想要的预估值是:\(pred = wp = w * \frac{A}{A+B}\)
- 可以表述为样本为正的概率乘以样本为正时的值(用户点击视频的概率*用户点击视频后观看的概率)
- 经推导有:
$$
pred = e^{\theta^{T}\boldsymbol{x}} = \frac{p’}{1-p’} = \frac{\frac{wA}{wA+B+A}}{1-\frac{wA}{wA+B+A}} = w * \frac{A}{A+B} = wp
$$- 注意,我们需要的是\(pred = wp\)而不是\(pred = wp’\)
- 因为\(p’\)是被我们修改权重后得到的模型输出(均值)
- 真实serving时,模型的输出值\(p’\)是不用的,只使用\(pred = e^{\theta^{T}\boldsymbol{x}}\)就可以了
- 其他:
- 对于原始CE,有:
$$
pred = e^{\theta^{T}\boldsymbol{x}} = \frac{p}{1-p} = \frac{\frac{A}{A+B}}{1-\frac{A}{A+B}} = \frac{A}{B} = \frac{p}{1-p}
$$ - 对于YouTube的WCE,有:
$$
pred = e^{\theta^{T}\boldsymbol{x}} = \frac{p’’}{1-p’’} = \frac{\frac{wA}{wA+B}}{1-\frac{wA}{wA+B}} = w * \frac{A}{B} \approx w * \frac{A}{A+B} = wp
$$- 约等于符号成立的前提是正样本占比特别少,此时\(\frac{A}{B} \approx \frac{A}{A+B}\)
- 也就是说,在正样本占比特别少时,使用YouTube的WCE也是没问题的,但是为了保证无偏,建议使用改进后的WCE
- 对于原始CE,有:
- 注意,我们需要的是\(pred = wp\)而不是\(pred = wp’\)
- 假设在原始的CE损失函数下,正负样本的比例为A:B,此时有\(p = \frac{A}{A+B}\)【这里只是假设训练时遇到特征值完全相同的多个样本(有正有负),模型在遇到serving时遇到同一个特征值样本时,应该预估样本为正的概率为多少?】
扩展问题
- 在面对回归问题是,WCE相对MSE真的有提升吗?
其他
- WCE也可以用于分类问题中,目的是让模型更关注某些特殊样本