要点简介

我们要解决以下几个问题:

  • 视频业务的背景与场景是什么?
  • 粗排阶段整体的架构是怎样?
  • 粗排架构设计的优缺点
  • 粗排双塔建模细节
  • 改进双塔方案1:大模型bert模型蒸馏
  • 改进双塔方案2:精排蒸馏,指导粗排
  • 改进双塔方案3:如何在双塔后增加交互层
  • 改进双塔方案4:改进匹配层esim算法
  • 改进双塔方案5:多模态通道特征融合
  • 模型训练总结
  • 粗排策略相关
  • 模型压缩

业务的背景与场景是什么?

腾讯视频业务

腾讯视频双排视频流的推荐业务场景,包括2个具体业务场景:

1.视频精品专区模块

2.短视频模块,这个属于综合区

一次用户的检索过程是: 检索-》召回—> 粗排-》精排-》混排-》 用户展现

因为这里涉及到中文标题等,所以用到的更多的是文本nlp相关知识点。

粗排阶段整体的架构是怎样?

粗排网络

上图是腾讯视频流粗排双塔的网络架构。采用的bert的双塔设计。

粗排设计,query一个塔,文本一个塔。2个塔参数共享,分别输出query的embedding和文本的embedding。 然后相乘后经过一个sigmoid得到一个概率值。

这个设计方向最大的好处就是快。其中query可以实时查询得到embedding,文本可以离线计算好。效率高。

粗排架构设计的优缺点

1.缺少query和文本的交互特征

2.交互时机在取的embedding后,时机太晚,丢失细节特征。

粗排双塔建模细节

bert双塔架构

腾讯视频粗排精品专区也短视频综合区采用的是bert的双塔建模架构。如上图。

因为双塔天然的存在2个问题:

1.缺少query和文本的交互特征

2.文本和query的交互是在embedding后相乘,交互晚了。

所以,这里使用了比较多的trick。

1.针对语义判别,先大模型训练,然后蒸馏到小模型。目的弥补双塔判别不足问题。–这个后面会细说。

2.对齐精排,改进交叉特征缺陷。

3.交互层优化,避免交互晚缺陷。

4.多加几个塔,弥补信息的损失。这块思想即增加信息融合通道。

改进双塔方案1:大模型bert模型蒸馏

12层bert效果更好,但是计算效率低下,所以离线先训练12层的bert模型,然后线上使用4层bert模型,但是用12层的bert模型去指导4层的bert模型。

训练12层bert模型细节 teacher模型

防止过拟合使用的策略:

1.学习率调整

2.加dropout,加到反向传播里,提取随机丢弃

3.梯度累加,用一个指标去判断参数的重要程度,这个指标是FIM(fisher 信息矩阵),最重要的也是分最高的,这部分参数作为网络去更新传输。

腾讯视频这个场景,第3种的效果不如第2种。 第2种12层的bert模型 auc+0.4

3.针对bert采用不同的mask比例,选择最合适的比例是多少,没有细说,效果是使12层的bert模型auc+0.5,12层的bert的auc0.861

4层的bert模型细节。student 模型

4层模型架构

1.加了一个kd loss(kd指的是knowledge distill loss)

2.12层的bert模型的样本得分指导4层的bert模型,去训练,auc增加1.99

改进双塔方案2:精排蒸馏,指导粗排

目的是补充粗排的特征交互不足问题。好处是可以提高粗精排的一致性。

分析办法:

离线数据集,用精排对测试集打分。正负样本对有M种。
粗排在精排打分的测试集上打分,看粗排打分的正序对有N种。
N/M=70.5%。

存在差异,这种差异产生原因就是:

1.特征集不同。粗排是双塔结构,没有文本和query的特征交叉。精排有

2.模型结构,粗排是单一的,交互也是embedding后,比较浅,精排是深的。

为了缩小gap,弥补粗排特征的不足,知识蒸馏精排指导粗排。

在这个阶段,teacher是精排,student是粗排。

这里有个经验:

1.训练后期,可以适当增大蒸馏的loss。

粗精排一致性loss实验

2.训练后期,取消粗排阶段的loss,因为后期模型已经学到了很多语义知识了。这样可以扩大精排对粗排的影响力,这个方案使得 auc增加1.28%, auc达到 0.854 。粗排正序对增加5.37% ,占精排的正负样本对为75.85%。在线时长+2.27%。

改进双塔方案3:如何在双塔后增加交互层

这个点主要在于弥补精排的特征交互不足问题。

1.multi-head的思想,主要解决一词多义问题。

2.目前的双塔是叉乘,匹配能力不足,想办法增加匹配能力

multi-head

1.通过bert模型提取出query的向量

2.bert的输出连接各种nn网络,映射不同embedding空间。

粗排multi-head

利用这个multi-head思想内部的soft attention 乘法来打分,auc增加1个点。auc达到0.848

改进双塔方案4:改进匹配层esim算法

主要是目前的双塔embedding直接点成,匹配度低。 改进办法 为esim办法。 交互更加充分。

优点:突出核心语料。匹配效果好。 缺点,复杂度高。在线推理压力大。改进办法:模型压缩。

比上面的soft attention doct方式,auc增加0.59

esim思想:

1.query和doc得到每个句子的embdddin -》 匹配矩阵

2.nn网络

3.得到score

改进双塔方案5:多模态通道特征融合

因为双塔是最后才融合,信息交叉太晚,自然想到如何弥补信息损失。方式有增加塔个数和宽度。

这里介绍是另一种办法,融合多模态特征。主体思想是,

不同的模态特征,单独的向上通道。如下的架构图

多模态特征的融合

这里重点在于如何融合不同的模态特征为最终的特征。 如文本用xlm,类别直接embedding等和多塔的embedding融合。

模型训练总结

1.12层的bert模型指导4层的bert模型。auc增加1.99

2.样本是搜索点击,正负样本不准确,人工标注一部分,但是量少,办法:改变蒸馏策略: 每个batch,query和文本doc的相似度得分,4层的bert模型要学习这个得分。这个办法使auc增加1.42%。 现在4层的bertauc是0.832

粗排策略相关

针对精排专区视频:

粗排直接截断粗排得分低的视频。这里涉及到卡多少分算低,需要实验设计。

针对短视频综合区

粗排是按照得分先分档,具体多少分在一个档位,分多少个档,需要设计。

档内根据粗排的ctr排序筛选。

模型压缩

这里主要谈了4个方面。
1.涉及到乘法等,尽量用矩阵去乘,这样便于mkl加速

2.减少head数目和各层参数

3.pooling方式

4.信息对齐增强办法尝试