作者 | 崔轩阁 整理 | NewBeeNLP
大家好,这里是NewBeeNLP。KDD除了正常论文投稿之外,还会召一些业界公司协办KDD Cup比赛,如果能在KDD Cup数据竞赛中获得Top 10,就能中稿KDD Cup Workshop会议,所以KDD Cup还是挺值得参加的。今天我们分享来自一份文本相关性赛题的Top方案。
KDD Cup 2022,Amazon Product Search。Query-SKU相关性识别赛题。今年是Amazon文本相关性,Baidu风电预测两道赛题。
然而从Google H5-Index指标来看,"数据挖掘和分析"领域的会议引用量偏低。猜测是因为很多工作都不放源码,让其他人根本没法Follow :)
Google H5-Index @ DataMining
这篇文章,分为三个部分:数据描述,介绍个人方案,摘录Top3方案。内容会比较简略,直接展现有效、核心的策略。
ProductSearch 赛题数据介绍
输入数据Query: 分词后,99%长度小于20;
输入数据Product: 包含标题、品牌、颜色、卖点介绍、商品描述。bulletpoint,desc字段分词后的数据较长
评估数据集: 没有在训练集中出现过的Queries,以及部分没有出现过的Products数据。
Task1: NDCG排序任务
Task2: 4分类任务。识别为Exact、Substitute(可替代的商品)、Complement(配件类型商品)、Irrelevanct
Task3: 2分类任务。识别Query-Prodcut是否构成可替代商品。举例: Query=毛衣 SKU=羊毛
Amazon提供的数据量级在200w,包含三种语言,英语、日语、西班牙语,访问连接在[1]。
这是传统的文本匹配问题,在我们看来,这场比赛主要有两个挑战点:
Q1. 如何提高那些训练集中"看不见"的Queries的搜索质量?
A1: 我们需要更加 "通用" 的Embedding表征。
Q2.商品侧,products拥有非常丰富的文本信息,如何才能充分表征这些信息?
A2: 对于Bert-Like的模型,随着max_length参数增长,训练耗时快速增长到难以承受。 我们需要一个额外的语义单元来捕捉所有的文本信息。
+-----------+---------------------------+-------------------+-----------+
| SubTask | Methods | Metric | Ranking |
+-----------+---------------------------+-------------------+-----------+
| task1 | ensemble 6 large models | ndcg=0.9025 | 5th |
+-----------+---------------------------+-------------------+-----------+
| task2 | only 1 large model | micro f1=0.8194 | 7th |
+-----------+---------------------------+-------------------+-----------+
| task3 | only 1 large model | micro f1=0.8686 | 8th |
+-----------+---------------------------+-------------------+-----------+
受到一些多任务预训练工作的启发[2],我们采用的MLM Task,分类Task,对比学习Task。
预训练策略 & 效果;最有价值策略: Product2Query
最主要的收益的来源于Product2Query任务,核心思路: 从商品侧截取一部分文本作为Query,此类样本作为正样本,负样本则是随机构造。这个策略是检索比赛中的常见策略之一[2],这里我们拿来作为预训练任务。
备注: 我们借鉴Span-Bert论文截取策略,使得Query长度满足泊松分布(数据真实分布)。其中日语单独设置泊松分布的参数,详细步骤参见论文Appendix部分。
Tri-gram分词粒度的思路来源于,KDD'21 两篇的业界论文[3,4]
微调阶段策略 & 效果;最有价值策略: 细粒度分词EmbeddingLayer
在微调阶段,我们使用Poly1-Loss,FGM、R-Drop、EMA等等策略,提升了模型训练的稳定性。由于本次比赛的数据量较大,我们没有采用PGD、FreeLB、Smart更复杂的对抗训练策略,不过这些有效策略的代码实现可以在这里[5]找到。
置信学习效果。Task1胜出,Task2、Task3落败
值得一提的是,我们使用"置信学习"[6],来尝试剔除~4%的噪声数据,在Task1取到正向效果。在论文Experiments部分,我们使用数据集的"困难度"角度对此进行解释。
段落总结: 我们使用数据增强、多任务预训练和几种微调方法来提高我们模型的泛化性和鲁棒性。
方案来源: 比赛讨论区: https://www.aicrowd.com/challenges/esci-challenge-for-improving-product-search/discussion[1] Papers录取结果: ESCI Challenge for Improving Product Search[2]
[1]
https://www.aicrowd.com/challenges/esci-challenge-for-improving-product-search/discussion: https://link.zhihu.com/?target=https%3A//www.aicrowd.com/challenges/esci-challenge-for-improving-product-search/discussion
[2]
ESCI Challenge for Improving Product Search: https://link.zhihu.com/?target=https%3A//amazonkddcup.github.io/
[3]
ESCI Challenge for Improving Product Search: https://amazonkddcup.github.io/
[4]
https://github.com/cuixuage/KDDCup2022-ESCI: https://github.com/cuixuage/KDDCup2022-ESCI
[5]
https://discourse.aicrowd.com/t/solution-zhichunroad-5th-task1-7th-task2-and-8th-task3/8006: https://discourse.aicrowd.com/t/solution-zhichunroad-5th-task1-7th-task2-and-8th-task3/8006
[6]
Shopping Queries Dataset: A Large-Scale ESCI Benchmark for Improving Product Search: https://arxiv.org/abs/2206.06588
[7]
阿里灵杰电商搜索召回2022比赛: https://github.com/muyuuuu/E-commerce-Search-Recall
[8]
蘑菇先生:KDD'21 | 淘宝搜索中语义向量检索技术: https://zhuanlan.zhihu.com/p/409390150
[9]
蘑菇先生:KDD'21 | 揭秘Facebook升级版语义搜索技术: https://zhuanlan.zhihu.com/p/415516966
[10]
Poly1-Loss 分类损失函数: https://aijishu.com/a/1060000000321354
[11]
[SemEval 2022比赛,SemEval 2022 Task2: 对抗训练和对比学习: https://zhuanlan.zhihu.com/p/488455448