业界总结 | BERT的花式玩法
阿泽的学习笔记
共 6686字,需浏览 14分钟
· 2022-01-09
BERT在工业界的落地:新数据预训练、多任务、蒸馏/裁剪、双塔的在线应用;
如何蒸馏模型;
在BERT基础上有哪些有效的改进点;
如何融入知识图谱;
相关性的框架:考虑到业务效果,必要的前置/后置规则可能有效;两阶段分别解决不相关、以及区分强相关/一般相关;
多业务场景;
下面就带大家一起看看阿里、美团和百度等公司是如何将BERT应用在业务中并提升业务指标的。
业界实践
一、百度-ERNIE(艾尼)
二、阿里大文娱—Poly Encoders
Doc(离线):为了降低双塔模型的指标衰减,对于Doc侧,它其实保存的并不是一个Embedding,它是M组的Embedding,M组可以理解为从M个侧面刻画Doc的特征,这样也是为了最大限度的去保留Doc侧的一些丰富的信息; Query(在线):三层BERT,但是也会导致指标衰减;
对于query,通过对KG进行一个查询找到它的子图,然后把它子图的结构化信息编码成BERT通用的序列化的输入,然后再在KG层和文本层之间做一些attention的监督操作
三、知乎—搜索文本相关性与知识蒸馏
四、美团—BERT搜索核心排序
使用下单数据作为正样本,使用未点击过的数据构造负样 Skip-Above采样:受限于App搜索场景的展示屏效,无法保证召回的POI一次性得到曝光。若直接将未被点击的POI作为负例,可能会将未曝光但相关的POI错误地采样为负例。为了保证训练数据的准确性,我们采用Skip-Above方法,剔除这些噪音负例,即从用户点击过的POI之上没有被点击过的POI中采样负例(假设用户是从上往下浏览的POI)。
对于模型输入部分,我们将Query、Doc标题、三级类目信息拼接,并用[SEP]分割,区分3种不同来源信息。对于段向量,原始的BERT只有两种片段编码EA和EB,在引入类目信息的文本信息后,引入额外的片段编码Ec。引入额外片段编码的作用是防止额外信息对Query和Doc标题产生交叉干扰。由于我们改变了BERT的输入和输出结构,无法直接基于MT-BERT进行相关性Fine-tuning任务。我们对MT-BERT的预训练方式做了相应改进,BERT预训练的目标之一是NSP(Next Sentence Prediction),在搜索场景中没有上下句的概念,在给定用户的搜索关键词和商户文本信息后,判断用户是否点击来取代NSP任务。
样本:单条样本为三元组 +, Doc->; loss:除了输入样本上的变化,为了考虑搜索场景下不同样本之间的偏序关系,我们参考RankNet[34]的方式对训练损失函数做了优化。
Partition-model的思想是利用所有数据进行全场景联合训练,同时一定程度上保留每个场景特性,从而解决多业务场景的排序问题。
裁剪、蒸馏、低精度量化
五、阿里闲鱼—搜索相关性
特征构造
文本语义匹配
定义搜索 query top10 商品完全相关/基本相关占比>80%为满意,一组 query 评测结果为满意的占比为 query 满意度。
多模态语义匹配
PS: 该部分工作离线 AUC 为 0.75 相对较高,在下游特征融合 AUC 提升 1 个点以上。但在上线过程中,由于需要图像处理,增量商品特征更新回流相对其他链路延迟较大,容易造成新商品特征缺失,因此还需要进一步链路优化。
点击图表示匹配
评论