最开始的粗排是基于规则的方式,因为候选集比较少,基于规则的这种方式会比较便捷有效。之后随着候选级的增加,为了快速上线获得一些收益,我们上线了一个LR的模型,后来又为了能够提高模型表达能力,采用了双塔的双层模型的方式。双塔模型结构相对来说还没有特别复杂,可以满足线上项目的要求。后来我们调研了知识蒸馏的方法,主要是用更复杂的精排模型做指导,进一步的对齐精排的目标。 ② 粗排特征
由于粗排阶段有性能的要求,所以我们在做粗排之前对特征做了特征选择,最开始采用的方式是用树模型和LR模型的方式来去做特征选择,后来是用深度学习模型的方式去做特征选择。这里主要是加入了一个特征权重层,然后选取训练结果中特征权重比较大的一些特征,最终特征维度由450维降为降成了150维。
③ 粗排双塔模型
粗模型我们采用的是双塔模型的结构。双塔模型的一个好处就是user的塔和item的塔是解耦的,在线上预测的时候只需要进行用户侧向量的实时推断,item这一侧的向量可以近实时的更新在Redis中,然后在线上读取这些候选集item的向量,再跟实时计算好的用户向量去算相关性,算一个最终的点击率预估的结果。这个模型的离线AUC能达到0.68。
第一版的模型是把位置作为特征进行建模,上图右上角结果就是我们实验了不同填充不同位置来带来的效果。以实验结果来看不加入位置的特征效果会更好一些。 ② 精排模型DIN-bias
第二版的模型参考了YouTube的做法,把位置偏差的信息作为一个子网络的形式来去单独的进行建模(下图右侧),左边时bias子网络,右边是一个DIN的网络结构。DIN这个网络结构主要是用到了上下文特征,帖子的特征,以及用户侧特征,用户侧的特征中包含用户行为的特征。DIN网络的一个主要特点是用户侧点击的帖子与当前的帖子有一层attention的网络结构。之所以这么设计,是因为用户历史的点击对当前是否点击起到的作用是不一样的。第二版模型的线上效果是CTR涨了2个点。
③ 精排模型W3DA
为了更好地刻画用户和帖子之间的相关性,前面是bias子网络加上DIN的网络结构,DIN网络结构可以认为是高阶特征交叉的网络模型,为了更好地刻画用户和帖子之间的相关性,我们在Wide这一部分又加入了两个Wide的子网络,就是W2和W3。W2主要是用户的特征与帖子的属性特征做了特征交叉,属于一阶的特征交叉。W3子网络,是用户侧的信息与帖子侧的信息在向量维度上做了一个特征交叉,属于一个二阶特征交叉。这个模型的线上效果是CTR涨了3.46个点。我们将这个模型称为W3DA。W3指的左侧的三个Wide部分的子网络,DA指的就是DeepAttention,这一部分就是DIN的网络结构。