业界总结 | BERT的花式玩法(三)

简介: 业界总结 | BERT的花式玩法(三)

五、阿里闲鱼—搜索相关性



特征构造


搜索相关性的特征这里分为三个维度:基础特征、文本匹配特征以及语义匹配特征。基础特征主要包括 query 和 item 的统计特征,以及结构化相关的匹配特征,如类目是否匹配、关键属性(品类、品牌、型号等)是否匹配。文本匹配特征主要是字面上的匹配特征,如 term 匹配数、匹配率、带同义词策略的匹配、带 term weight 的匹配以及最基础的 BM25 分等。语义匹配特征则主要包括基于点击行为的表示匹配、文本和多模态语义匹配。


15862db5c9b5ec549901391c5b2a8cba.png


搜索相关性的特征


其中基础特征和文本匹配特征相对常规,不再详细展开。下面重点对语义匹配特征做进一步的介绍:


文本语义匹配



处于性能考虑,文本的语义匹配采用双塔向量匹配模型结构:基础模型使用开源的 BERT,Query 和 Item 共享相同的参数权重。同时为了适应下游的相关性分档,模型采用 Pointwise 的训练方式。篇幅原因,这里对模型细节不作展开。而相比模型结构的设计,其实闲鱼搜索中更重要的工作在于训练样本的构造。由于现阶段缺少人工标注数据的积累,所以当前该部分工作主要解决以下两个问题:


•高置信样本挖掘,缓解搜索点击日志“点击但不相关”的问题。


•定制化的负样本构造,避免模型收敛过快,只能判断简单语义相关性,而对上文提到的闲鱼场景"勉强相关"的难 case 无法区分。


针对以上问题,参考集团相关经验并结合对闲鱼搜索数据的观察分析,做了如下采样方案:


正样本:


•充足曝光下高点击 ctr 样本(ctr 大于同 query 下商品点击率平均值)


负样本:


•同父类目的邻居叶子类目负采样。
•高曝光低点击类目样本:同一个 query 搜索下,根据点击过商品的类目分布,取相对超低频类目样本


作为负样本(如类目分布占比 < 0.05 的商品视为负样本)。


•充足曝光情况下,低于相应 query 平均曝光点击率 10%以下的样本做负样本。
•基于 query 核心 term 替换构造负样本:如对于“品牌 A+品类”结构的 Query,使用“品牌 B+品类”结构的 query 做其负样本。
•随机构造负样本:为增加随机性,该部分实现在训练时使用同 batch 中其他样本做负样本,同时引入 batch hard sample 机制。


上述方式采样得到的训练数据,随机抽测准确率在 90%+,进一步采样后量级在 4kw+。在此基础上训练双塔模型,上线方式为离线抽取 Embedding,线上查表并计算向量相似度。


530f679bb588c114648edb0fe8b8e211.png


文本语义模型



该部分工作独立全量上线,抽测 top300 query + 随机 200query 搜索满意度+6.6%;同样文本语义向量用于 i2i 向量召回,复用到闲鱼求购场景,核心指标点击互动人次相对提升 20.45%。


定义搜索 query top10 商品完全相关/基本相关占比>80%为满意,一组 query 评测结果为满意的占比为 query 满意度。


多模态语义匹配



除了文本语义向量匹配,本次工作也尝试了多模态语义向量。模型侧使用预训练的多模态 BERT,类似工作集团已经有大量的尝试,本文主要参考过([1],[2]),并对模型和策略作了一些调整:


• 替换多图特征抽取为首图 region 特征抽取做图像特征序列(resnet pooling 前的特征序列),提升链路效率;


• 替换 Bert-base 为 Electra-small,减小模型参数(经测试 47M 的模型,下游分类任务精度损失 2 个点以内),方便与 Resnet 联合 E2E 训练。


下游的匹配任务仍使用双塔模型策略,和文本语义模型不同的是,这里直接使用 Triple Loss 的方式,主要考虑加大模型之间的差异性,使后面的模型融合有更大的空间。


b542386594cb673eecf8c2fb6d6cb8b8.png


多模态语义模型



PS: 该部分工作离线 AUC 为 0.75 相对较高,在下游特征融合 AUC 提升 1 个点以上。但在上线过程中,由于需要图像处理,增量商品特征更新回流相对其他链路延迟较大,容易造成新商品特征缺失,因此还需要进一步链路优化。


点击图表示匹配


除了上文提到的通过语义向量引入语义信息,还可以借助搜索日志中的点击行为表示 query 或 item 构造图结构引入新的语义表示。其中基于图结构的 match 算法 SWING 算法,在阿里内部应用广泛,相关的文章也有很多,这里不在阐述。针对闲鱼场景首先将<user, item>点击 pair 对改造为<item, query>点击 pair 对,这样直接沿用现有的 swing 工具,可以得到 query2query 的列表。聚合 key query 的所有相似 query,并进行分词,对所有的 term 进行加权求和,归一化后得到 key query 的表示。


其中的权重为 swing 算法输出的 score,key query 的 term 权重默认为 1。而对于行为稀疏的长尾 query 则使用上文语义向量召回最相近的头部 query,补充其语义表示。最终得到的 query 表示实例:


055c49bb564f1c3d937bfe59dd3ef4c5.png


得到 query 表示后,item 同样做类似的归一化表示。上线时使用稀疏存储的方式,在线计算匹配 term 的加权和作为点击图表示匹配分。


特征融合



准备好必要的相关性特征后,下一步则是对众多特征的有效融合,本文则采用经典的 GBDT 模型完成该步骤。选择 GBDT 模型的好处一方面在于检索引擎(Ha3)精排算分插件中有现成的组件可以直接复用,另一方面也在于相比于更加简单的 LR 模型可以省去很多特征预处理步骤,使得线上策略更加简单。


模型的训练使用人工标注的训练数据,标注目标为四档(完全相关、基本相关、勉强相关以及完全不相关)。在训练阶段,四个档位被映射到 1、0.75、0.25 和 0 四个分位,GBDT 模型则通过回归的方式对分位进行拟合。由于该部分策略是对子特征的 ensemble,因此并不需要非常多的训练数据(这里的量级在万级别)。


c2b92ea81f3e417087002a863da0a1bf.png


特征融合模型



最终,经过常规的调参,GBDT 特征融合模型离线 AUC 可以达到 0.86,基本符合预期(最优单特征 AUC 为 0.76)。该策略全量上线,在文本语义向量的基础之上,不影响成交效率的前提下:随机 query 抽测(top 800w)DCG@10 相对提升 6.51%,query 搜索满意度+24%;头部 query 同样也有相应的提升,相应地搜索体感也得到有效提升。


相关文章
|
存储 NoSQL 异构计算
业界总结 | BERT的花式玩法(二)
业界总结 | BERT的花式玩法(二)
752 0
业界总结 | BERT的花式玩法(二)
|
机器学习/深度学习 自然语言处理 搜索推荐
业界总结 | BERT的花式玩法(一)
业界总结 | BERT的花式玩法(一)
760 0
业界总结 | BERT的花式玩法(一)
|
PyTorch 算法框架/工具
Bert Pytorch 源码分析:五、模型架构简图 REV1
Bert Pytorch 源码分析:五、模型架构简图 REV1
245 0
|
PyTorch 算法框架/工具
Bert Pytorch 源码分析:五、模型架构简图
Bert Pytorch 源码分析:五、模型架构简图
198 0
|
1月前
|
机器学习/深度学习 数据采集 人工智能
35_BERT与RoBERTa:优化编码器模型
2018年,Google发布的BERT(Bidirectional Encoder Representations from Transformers)模型彻底改变了自然语言处理领域的格局。作为第一个真正意义上的双向预训练语言模型,BERT通过创新的掩码语言模型(Masked Language Model, MLM)预训练策略,使模型能够同时从左右两侧的上下文信息中学习语言表示,从而在多项NLP任务上取得了突破性进展。
|
1月前
|
人工智能 自然语言处理 调度
24_BERT模型详解:从预训练到微调的全方位指南
BERT(Bidirectional Encoder Representations from Transformers)是由Google AI在2018年推出的革命性预训练语言模型,它彻底改变了自然语言处理(NLP)领域的格局。通过创新的双向训练方式,BERT能够捕捉词语在上下文环境中的完整语义信息,从而在各种下游任务中取得了突破性的表现。
|
5月前
|
存储 机器学习/深度学习 自然语言处理
避坑指南:PAI-DLC分布式训练BERT模型的3大性能优化策略
本文基于电商搜索场景下的BERT-Large模型训练优化实践,针对数据供给、通信效率与计算资源利用率三大瓶颈,提出异步IO流水线、梯度压缩+拓扑感知、算子融合+混合精度等策略。实测在128卡V100集群上训练速度提升3.2倍,GPU利用率提升至89.3%,训练成本降低70%。适用于大规模分布式深度学习任务的性能调优。
214 2
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
昇腾AI行业案例(四):基于 Bert 模型实现文本分类
欢迎学习《昇腾行业应用案例》的“基于 Bert 模型实现文本分类”实验。在本实验中,您将学习如何使用利用 NLP (natural language processing) 领域的AI模型来构建一个端到端的文本系统,并使用开源数据集进行效果验证。为此,我们将使用昇腾的AI硬件以及CANN等软件产品。
676 0
|
自然语言处理 PyTorch 算法框架/工具
掌握从零到一的进阶攻略:让你轻松成为BERT微调高手——详解模型微调全流程,含实战代码与最佳实践秘籍,助你应对各类NLP挑战!
【10月更文挑战第1天】随着深度学习技术的进步,预训练模型已成为自然语言处理(NLP)领域的常见实践。这些模型通过大规模数据集训练获得通用语言表示,但需进一步微调以适应特定任务。本文通过简化流程和示例代码,介绍了如何选择预训练模型(如BERT),并利用Python库(如Transformers和PyTorch)进行微调。文章详细说明了数据准备、模型初始化、损失函数定义及训练循环等关键步骤,并提供了评估模型性能的方法。希望本文能帮助读者更好地理解和实现模型微调。
996 2
掌握从零到一的进阶攻略:让你轻松成为BERT微调高手——详解模型微调全流程,含实战代码与最佳实践秘籍,助你应对各类NLP挑战!
|
机器学习/深度学习 自然语言处理 知识图谱

热门文章

最新文章