![13b067557a746a5bcbd2d7184d82a7fa.png](https://i-blog.csdnimg.cn/blog_migrate/4ccc6c38e02be4d97b6783b0ab03017c.jpeg)
[论文阅读] DeText——领英深度神经网络排序框架实践
CIKM2020, Linkin
摘要
如何 搭建 基于 BERT-base 性能工业可用的 排序框架 ? 领英 开源了 其 深度神经网络排序框架 DeText. 可以根据应用场景的不同,考虑效果和性能对不同模块进行替换,灵活配置。并在领英场景下的三个搜索垂域任务(People Search, Job Search 和 Help Center)做了对比试验 .
模型上没有做什么创新,但可以好好看看代码学习一下和学习一下排序框架。好文,感觉会是经典文章。
![226b96a8722107a58fefdf5ce602e844.png](https://i-blog.csdnimg.cn/blog_migrate/fdd0104f686822abb6e1dc2722bfb342.jpeg)
任务特性
![22550b710b5ac8a48e18df500fe7aedc.png](https://i-blog.csdnimg.cn/blog_migrate/afc18d662d50e2f32d202f80d9701fc9.jpeg)
找人:召回会员个人资料,特点:实体居多,无语法
找工作:召回发布的工作文档 ,特点:介于两者之间
求助中心: 召回FAQ文档,特点:最接近自然语言
总而言之,都是基于很多人工筛选的特征召回相关的文档。
模型框架
工业用BERT,都是使用其表征学习。同时文本表征也适配神经网络比如CNN和LSTM
框架三个特点:1.通用灵活 2.性能和效果平衡为工业所用
如摘要里的图所示,框架除输入文本其有6个部分。
Input Text Data
通用的可以分为两类,source (queries, user profiles) text 和 target (docs) text。
所有的域都可以是 multi filed, 比如query可以由多个,doc也可以有多个。这一点我第一次见。一般都是 doc 是多域的。这样做有两个好处:1.引入会员简历文本域个性化特征2.可以更鲁棒效果更好
Token Embedding Layer
CNN/LSTM: words
BERT: subwords
Text Embedding Layer
BERT,LSTM,CNN
Ineraction Layer
cos sim, 点积,concatenation
Traditional Feature Processing
人工筛选(传统)特征,比如个性化特征,社交网络特征,用户行为特征,传统特征要做归一化。
要做归一化
![c0582e4ce0f05f9288136c12ac161513.png](https://i-blog.csdnimg.cn/blog_migrate/8f28d724b22d4e0c9d6b0c04df0e8170.png)
MLP Layer
计算final score
LTR Layer
输入是多个target score,输出是排序。 支持:pointwise (点击概率重要), pairwise/liswise LTR(相对位置重要) 和Lambda rank。
其他
DeText-BERT 首先在同样的域做了 预训练(LinkedIn's in-domain data),叫做 LiBERT.
BERT的 fine tuning不会产生好结果,学习率应当小,在1e-5左右。其他模块1e-3
支持CNN,token embedding用的是word而不是triletters, 考虑计算成本高。
线上部署策略
线上策略
![0f18e9eed2e581a3939a38d0d09875ae.png](https://i-blog.csdnimg.cn/blog_migrate/a21129d2411ebd3f8e0e9e35a26aa587.jpeg)
BERT
离线计算doc。库刷新按一定周期刷新(比如,daily)
CNN
可以做实时推理。效果也不错。
线上指标
![7b717d87957a2615f391546b97132910.png](https://i-blog.csdnimg.cn/blog_migrate/9beda3cab24d9557c564d34f46848232.jpeg)
实验
实验设置
数据:点击数据,1.找人:会员个人简介字段: headline, current position, past position. 2.找工作:字段:job post title, cmpany name. 3.帮助中心:字段:doc title, example question.
指标:对比baseline的相对指标,无绝对指标
baseline model:工业模型,XGBoost, 通过手工和自动调参(pairwise vs listwise, number of tree, etc) 。
每个垂域可以的手工特征可以分为三个部分:
1.文本匹配特征:cosine similarity, jaccard similarity, semantic features (named entity ids (obtained by applying in-house entity linking tools))
2.个性化特征:找人:查询者与个人简介的社交网络距离特征;找工作:搜索者的题目与工作的题目的重叠度
3.文档欢迎特征:找人:会员静态排名;找工作/求助中心:工作/FAQ的点击率
DeText 模型:两个模型比较:DeText-LiBert 和 DeText-CNN。
1.Token embedding layer: CNN: 领英文本训练数据训练的Glove。 LiBert:用的是bert里的,但是也是基于领英数据训练的
2.Text embedding layer: CNN: window大小为3 (大窗口并没有有效收益),64个过滤层。
3.Interactions layer:
4.Feature processing layer: 传统特征做 归一化,和element-wise re-scaling
5.MLP: 隐藏层大小200
6.LTR: 设置为listwise,因为 listwise效果更好
训练:DeText-CNN 和 DeText-LiBert, 2 epochs, Adam 优化器,CNN lr:1e-3, BERT:1e-5, miniBatch: 256 queries 和相关 docs。
BERT pretrainig on LinkedIn Data: LiBert:6层 512隐藏层大小 8 heads. 34 millions 参数。 BERT-base 三分之一。领英数据集 685 million words vs 3.3 billion words WiKi。 领英三个垂域数据集定期更新(比如 daily), 保证没有leaking bias.
![f05e2c76a55a6ee231b0bbe156430b1d.png](https://i-blog.csdnimg.cn/blog_migrate/d8a87268a1347fc69ae351740eaefcac.jpeg)
搜索排序结果
离线实验
总体性能,table5: D-MLP保留了 MLP层和LTR层作用于传统特征。MLP可以媲美base model。实验结果如预期。HELP CENTER垂域最接近自然语言,所以效果提升最好,PEOPLE SEARCH 搜索多实体少语法,效果提升最少。JOB SEARCH 正好介于俩者之间,效果提升也介于两者之间。
![b8a6b9133b6a7662a5787e07888a55eb.png](https://i-blog.csdnimg.cn/blog_migrate/59fed2f561982bfb9b7458702382cf7c.jpeg)
LiBERT vs BERT-base,见table 6: 领域内数据预训练优于领域外数据与训练。而且 LiBERT的参数还是BERT参数的三分之一。
![d428fffdad2c040d7a28984ec685c0af.png](https://i-blog.csdnimg.cn/blog_migrate/eff428a54d56797a00ba2d1d78acfdfc.png)
CNN的局限,见table 7:CNN是性能和效果表现很好。传统特征已经很有效了,提升过滤层的数量没办法在提高效果增益,所以考虑时延和收益,64层最佳。
![bf63554afe2eaf085486ff67b58d51ea.png](https://i-blog.csdnimg.cn/blog_migrate/6f8801fb929e83c13a558f1e6e0ceb10.png)
文本表征交互, 见table8: 简单concatenate表现一般,cosine 和 点积应该都要。
![73b75dbd23e6cb42ac73a3f16a0e86ca.png](https://i-blog.csdnimg.cn/blog_migrate/045a85d094757c85bcd4448dbe94d37c.jpeg)
传统特征,见table9: 传统特征很重要,不能丢
![91acaf07aebe5810f4ee1cde573ca097.png](https://i-blog.csdnimg.cn/blog_migrate/3735cbb69d3738a6a6afb98df0e53d6a.jpeg)
多字段(multiple fields), 见table10: 多字段,多信息,多提升。
![bb55f4d2ff36e1cbf3976303bb52d12c.png](https://i-blog.csdnimg.cn/blog_migrate/d6b280834c46204c7c455b19ebe239f4.jpeg)
在线实验
工业环境实验,模型压测 at least 20% traffic for more than 2 weeks. 所有模型在线上表现均显著优于 base model (XGBOOST). job search 要求数据更新是按小时的,LiBERT没有做job search 的实验。
总体效果,见table11:
![e3595d1d316e0eed939b7442970386b0.png](https://i-blog.csdnimg.cn/blog_migrate/e226227e8773b6e29a6a5b093704dffa.jpeg)
时延, 见table12: offline P99 latency, 文章空间有限,所以只展示 people search. all -decoding:在线score所有召回的文档。 two pass rankingg: CNN只处理 MLP中的topk 文档。 pre-computing: doc 离线算。
![2a1697510549704deacd1c994ec4cb92.png](https://i-blog.csdnimg.cn/blog_migrate/0229da2aae918e20f044adb84566790b.png)
DeText 扩展
可做 job recommendation, query auto completion(暂时不是很清楚这块如何做).
总结
深度NLP模型更适应与有自然语言基因的任务。
领域内预训练模型很有效。
传统特征很有效。
时延降低方法:1.BERT 需要离线算DOC,业界共识 2. two pass ranking 3. 领域内训练可以使用更少参数的BERT模型。