点击率预估模型结构优化方向小结

简单总结一下近期点击率模型结构优化的尝试与思考

一 背景:

广告推荐系统涉及的模块较多,如果从一个请求的处理链路来看分为分流、召回、精排、调价等环节。其中精排负责对一个用户请求携带的几百个广告按照点击率进行精准排序,找出用户点击概率最大的广告应答回请求。在CPC点击扣费的模式下点击率的提升和收入直接相关,提升点击率意味着平台收入的提升。广告场景下点击率预估算法要做的事情是对输入的训练数据进行有效的信息挖掘和组合并最终回归到点击率这一目标。

二 异构特征交互

点击率场景下最强的一个先验就是特征交互对点击率有强相关性。比如20岁的男性用户对足球广告的点击率要远高于20岁年龄的女性用户,性别和年龄的交互对模型有较高的信息增益。业界建模特征交互有隐式建模与显示建模两种方式:

(1)隐式建模:如全连接网络可以隐式的自动学习特征交互,但是它是一个黑盒模型难以进一步指导优化且缺乏可解释性。

(2)显示建模:在LR模型采用特征之间做笛卡尔积交叉手动构建特征交互,后来的矩阵分解及因子分解机通过向量内积显示建模二阶特征交互关系。

实践中发现不同的特征交互方式模型效果有其各自的特点,建模方式不同挖掘的信息角度也会不同,如果能够丰富异构特征交互则可大幅增强模型表达能力。目前主流的模型特征交互方式均较为单一,无论是因子分解机还是矩阵分解都只使用向量内积这一种交互方法,表达能力一定程度上是受限的。可以将数学上一些算子应用在特征交互函数建模中,增强从不同角度挖掘信息的能力。比如外积、四元素等等。

三 多尺度建模

思路来源于实践中的经验以及图像领域中Inception结构的启发。实践中笔者发现不同的模型结构其最优的尺寸是不一样的,比如内积交互的FM模型Embedding的尺寸长一些效果更好,基于全息交互双HMF模型Embedding最优尺寸要小一些,一方面是因为它内部有压缩降维操作,尺寸越大的话导致的信息损失也越大,另一方面复杂交互结构只需要较小的参数量效果就可以媲美简单交互模型。因此模型的尺寸是一个先验。除此之外,数据分布的不同也会导致最优尺寸是存在差异的,广告点击率场景中特征的频次分布非常不均匀,热门和长尾现象很明显,低频特征样本量少,用较大尺度的Embedding来建模难以收敛。而高频特征用较大尺度的embedding却能比小尺度获得更好的表达,提升模型精度。基于模型结构和数据分布都存在对尺度不一致的需求,为了从多个尺度去挖掘不同粒度的信息因此借鉴了Inception的思想,把多种异构的模型按照不同的尺度进行并联组合成Multi-Embedding block结构,可同时挖掘不同尺度的信息。

四 端到端模型融合

多模型Ensemble可以组合不同模型获得更好的效果,但存在三点问题导致难以应用于在线学习场景:第一,缺乏对隐层中间信息表示进行融合的方法;第二,模型融合效果分析是个黑盒,缺乏白盒验证方法;第三,模型融合参数优化非端到端不能适应在线学习数据快速变化场景。通过对Multi-Embedding block中各个子模型的pooling输出concat之前在插入Re-Weight层,可显示建模模型融合的线性组合关系,通过观察该系数可以在离线阶段即可白盒验证新模型结构的加入是否真正带来了信息增益,并且参数端到端训练契合在线训练快速拟合数据分布的场景。通过该Re-Weight系数可以实现各模型信息与回归点击率这一目标的影响力进行缩放,提升有效模型信息忽略无效模型信息。

五 小结

以上思想主要聚焦于Embedding层相关的一些优化,思路来源于实践中发现隐层的高阶建模如DeepCross, XDeepFM效果不显著,从信息的流向来看,首层的输出是隐层信息的输入,扩充隐层的信息表达可以为隐层提供更多有效信息和燃料,进而提升模型整体表达能力。实践中也验证了这一思想,获得了非常好的线上效果收益。