由中国人工智能学会和杭州市余杭区公民政府主理,杭州未来科技城管委会和京东零售联合承办的“2022环球人工智能技能创新大赛—算法寻衅赛”于5月21日结束复赛。

2022全球人工智能技能立异大年夜赛—算法寻衅赛选手比赛筹划分享(二)_实体_模子 智能助手

本次大赛从人工智能领域的技能发展与跨界运用与领悟出发,开设了电商关键属性的图文匹配和商品标题实体识别两个赛道,以打造人工智能的人才互换平台和家当生态圈,促进人工智能干系领域的创新与发展。

经由激烈的复赛,大赛产生了两个赛道的7-14名获奖军队。
在搜聚选手的意愿后,我们将分两期对两个赛道部分选手的比赛方案进行分享,本次分享的是赛道二的选手参赛方案。

赛道二:商品标题实体识别

京东商品标题包含了商品的大量关键信息,商品标题实体识别是NLP运用中的一项核心根本任务,可以为多种下贱场景所复用,从标题文本中准确抽取出商品干系实体能够提升检索、推举等业务场景下的用户体验和平台效率。
本赛题哀求选手利用模型抽取出商品标题文本中的实体。

与传统的实体抽取不同,京东商品标题文本的实体密度高、实体粒度细,赛题具有特色性。

赛道二选手比赛方案分享

排名:第7名 队名:347的团队

间隔初赛结束仅为一周时,只是抱其实战学习NLP的态度来理解比赛,幸运的是,碰着了两位超级强力的队友,我们一起坚持到末了,拿到了复赛的第7名,现在把方案分享出来,欢迎各位同学参考和谈论。

比赛回顾

引用官方先容:京东商品标题包含了商品的大量关键信息,商品标题实体识别是NLP运用中的一项核心根本任务,能为多种下贱场景所复用,从标题文本中准确抽取出商品干系实体能够提升检索、推举等业务场景下的用户体验和平台效率。
本赛题哀求选手利用模型抽取出商品标题文本中的实体。

首先感谢各路大佬的无私分享。
初赛阶段,在baseline(0.806+)根本上,根据大佬们的分享,进行修正并实验,成功进入复赛(0.8144+,36名)。
复赛初期,花费了较多精力在模型考试测验、调参等,但线上提分效果不明显。

经由与队友的反思与总结,结合赛题的数据的以下特点:

京东商品标题文本的实体密度高、实体粒度细。

商品标题内部的实体之间联系并失慎密,实体种别极其不屈衡。

商品标题文本之间的分类信息可能对实体抽取有帮助,不同分类的商品标题文本可能标注办法不一致。

我们紧张从数据增强、模型构造、特色工程三个方向出发,考试测验各种优化方法或者各种组合,不断地探求更优解,我们在未利用伪标签数据的情形下,达到0.8179+,得到了复赛第7名。

数据

对实体内部空格更换,仅针对实体内部空格更换效果要好于全部空格更换。

将商品标题文本利用jieba分词后的结果与原文本拼接后喂入模型。

数据增强:

– 演习集中相同实体类型的实体抽取出来,拼接成句,加入到演习集,让模型学习到相同实体类型的内部的分类信息。

模型

1. 拼接文本,将商品标题文本利用jieba分词后的结果与原文本拼接。
期望模型学习到样本的分词信息

2. 利用Nezha-base模型对拼接之后的文本进行Embedding

3. 每个token都加上cls的token,补充标题种别信息

4. 依次喂入3层CNN,进行N-gram的特色提取。
利用CNN是由于考虑到N-gram和任务特点:商品标题内部的高下文信息很有限,而CNN的缺陷便是不善于学习高下文信息,期望CNN学习到实体内部的一些特色。

左边是将预测的标签进行Embedding作为特色输入,右边是将真实标签进行Embedding作为特色输入,两个一同预测标签,进行演习

1.将上述得到的每一层的输出当成特色进行拼接

2.新增判断数字还是字母等的特色Embedding

3.判断边界和实体类型

特色工程

把数字,字母,笔墨等字符区分开,进行额外编码。
考虑到某些实体种别可能存在数字,字母,笔墨的组合的规律,比如

加入词频,偏旁部首,实体的长度等特色,(提升效果明显,但跟数据增强结合后,须要较大变动,舍弃了这些特色)

其他优化策略

预演习

动态MASK 策略:可以每次迭代都随机天生新的mask文本,增强模型泛化能力。

Mask概率设置为0.5,考试测验加大演习难度

N-gram 掩码策略:以Mask掩码概率选中token,为增加演习难度,选中部分以70%、20%、10%的概率进行1-gram、2-gram、3-gram片段的mask(选中token利用[MASK]、随机词、自身更换的概率和原版Bert同等)

多任务学习

采取了多任务学习,把预测实体的边界和类型两个任务加进模型。

优化了多任务学习,将模型预测的多任务标签和真实标签进行联合对抗学习

对抗学习

利用FGM,通过一些embedding层添加眇小扰动来进行对抗学习,以提升模型的泛化能力。

其他有效的优化方法

AdamW、Dropout 、EMA 、分层学习率 、 Grad Clip 、weight decay、early stop等。

舍弃的Tricks

利用了针对演习标签比例失落衡的Focal_Loss和Dice_Loss,线上无提升。
预测可能是由于演习和测试数据同分布,修正Loss反而改变了模型学习到的分布。

利用了针对类内类外不同丢失打算的比拟学习Contrastive_loss,线下有提升,但是线上提升不大,此外,加上往后演习时长险些翻倍,韶光本钱过高,故舍弃。
-

gp全指针网络的修正,对付实体strat和end矩阵的特色抽取,原包是用爱因斯坦乘法,现在补充了直接相加的方法,但是提升不大

考试测验用了R-Drop、mixup、warnup学习率,提升不大。

结束语

作为一个刚刚入门深度学习的菜鸡,在这比赛过程中,看到各种各样的tricks,仿佛自己是在琳琅满目的货架上挑选衣服,那些网红爆款的可能也未必是适宜自己,那些过期老款也可能穿上更加精神。
真的适宜什么,可能真的须要试了才知道。

末了,祝大家都能找到最适宜自己的“衣服”。

排名:第10名 队名:DahuaKG

简介

本方案由大华DahuaKG团队供应,在本次竞赛中本方案获二等奖。
DahuaKG团队由来自浙江大华技能株式会社大数据研究院知识图谱团队的成员组成,大华知识图谱团队专注于行业知识图谱构建和自然措辞处理等技能的研究与运用,并致力于干系技能在语义检索、信息提取、文本理解、图挖掘、智能交互等任务上完成家当落地,为大华数据智能办理方案供应NLP和知识图谱干系领域的算法支撑。
整体上,我们基于预演习措辞模型NeZha构建商品标题实体识别模型,通过连续预演习加微调的演习范式学习模型参数,并有效结合数据增强、丢失函数优化、对抗演习等手段逐步提升模型性能。
该方案大略有效,复现流程不超过36小时,线上推断1万条样本仅需254秒(NVIDIA T4,单卡)。

赛题先容

赛题链接:https://www.heywhale.com/home/competition/620b34ed28270b0017b823ad

本赛题哀求选手用模型抽取出商品标题文本中的关键信息,是范例的命名实体识别任务。
哀求准确抽取商品标题中的干系实体,有助于提升检索、推举等业务场景下的用户体验和平台效率,是电商平台一项核心的根本任务。

赛题供应的数据来源于特定类目的商品标题短文本,包含演习数据和测试数据,详细文件目录如下。
个中:

演习数据包含4W条有标注样本和100W条无标注样本,选手可自行设计合理的方案利用;

初赛A榜、B榜分别公开1W条测试集样本,可***到本地用于模型演习(如,作为预演习语料、用作伪标签数据);

复赛阶段测试集同样也是1W条,但只能在线上推理时根据路径读取,无法***到本地。

演习样例如下,每行是一个字符(汉字、英笔墨母、数字、标点符号、分外符号、空格)及其对应的BIO标签(“O”表示非实体,“B”表示实体开始,“I”表示实体的中间或结尾;共52类实体,脱敏后用数字1-54表示,不包含27和45),样本间以空行分隔。

彩 B-16

色 I-16

金 B-12

属 I-12

镂 B-13

空 I-13

鱼 B-4

尾 I-4

夹 I-4

长 B-4

尾 I-4

夹 I-4

O

手 B-13

帐 I-13

设 B-5

计 I-5

绘 B-5

图 I-5

文 B-4

具 I-4

收 B-11

纳 I-11

大赛官方哀求只许可产出一个模型,不许可在推断过程中进行模型领悟。
用实体级别的micro F1打算评测指标,记G是测试集真实标注的实体凑集,P 是预测的实体凑集:

大赛对模型的推理速率进行了限定:

模型在单卡(NVIDIA T4,或者同等算力的 GPU 卡)上单条数据的推理韶光要小于360ms,如果超过360ms,会根据推理耗时进行惩罚:

· 如果模型在单卡上单条数据的均匀推理韶光小于360ms,不做惩罚;

· 反之,如果大于360ms,须要乘以一定的惩罚系数

详细如下:

若超过1.5小时,线年夜将自动停滞评审,并反馈“超过最大运行韶光”。

数据剖析

在对数据进行建模前,从文本和标签角度进行一些大略的数据剖析。
各文件内文本长度的统计结果如下图,横轴表示文本长度,纵轴是相应的文本数量。

实体长度分布如下,横轴表示实体长度,纵轴是相应的实体数量。

实体标签分布如下,横轴是各种标签,纵轴是相应的实体数量

大略剖析可以创造本赛题的数据存在以下特点:

文本以短句为主,最大长度不超过128,各数据集文本长度分布大致同等,长度紧张集中在60旁边;

除少部分实体长度过长外(217个实体长度超过20,约占总体0.03%),别的实体长度紧张集中在10以内;

总计包含662,478个实体,存在明显的种别不屈衡问题,最多的实体种别是 4 ,占全部实体的25.25%,而 24 、 26 、 35 、 53 等类型实体数量均少于10;

商品标题一样平常由大量关键字组合而成,因此句中实体分布稠密,而且实体间没有重叠关系。

总体方案

本方案的总体算法架构图如下图所示,整体上包含预演习和微调两部分。

预演习阶段用领域干系、任务干系的数据进一步对通用措辞模型预演习,能极大提高措辞模型不才游任务上的表现。
因此,我们总体技能方案可以分为预演习阶段(一)、预演习阶段(二)、微调阶段三个阶段,如上图所示,个中:

预演习阶段(一):该阶段称为 Domain-Adaptive Pre-training(DAPT),便是在所属领域的文本数据上连续预演习,目的是迁移通用预演习模型参数,使实在用于目标领域。
本方案将无标注数据用于DAPT,包括100W条无标注演习集样本和2W条初赛A、B榜测试集样本,预演习任务只包含MLM,个中mask形式为n-gram,预演习模型主体为NeZha,并选用nezha-cn-base作为初始权重;

预演习阶段(二):该阶段称为 Task-Adaptive Pre-training(TAPT),将预演习阶段(一)演习得到的模型在详细任务数据上连续预演习,可以让模型进一步下贱任务文本的特点。
本方案选择用演习集的4W条标注样本用于TAPT,演习任务同预演习阶段(一)同等;

微调阶段:在预演习阶段(二)演习得到的模型根本上,用下贱命名实体识别任务的标注数据微调。
命名实体模型采取GlobalPointer,这是一种将文本片段头尾视作整体进行判别的命名实体识别方法,详情可参考GlobalPointer:用统一的办法处理嵌套和非嵌套NER - 科学空间。
不同的是,我们采取多分类办法建模而不是多标签办法。

此外,我们考试测验了很多优化方法改进模型效果,如数据增强、丢失函数、对抗演习、R-Drop等,还针对性设计了后处理方法改动模型结果,将不才文详细先容一些改进较大的技巧。

数据处理

从数据样例可以看到,标题文本中可能存在空格字符,这些空缺字符带有标注 O ,这隐蔽了一个随意马虎被大家忽略的细节。
详细地,目前业界在对中文文本进行分词时,都是在英文BERT词表中添加中笔墨符后,直接采取BERT分词器处理文本。
但是 transformers.models.bert.BertTokenizer 为英文设计,分词过程首先会基于空缺符对文本进行预分词,这一步大略地通过 split 实现,这就使文本中空缺符被直接忽略,导致数据处理过程中发生文本序列、标签序列位置对应缺点。
因此,我们对BERT分词器进行了改进,使其可以精确划分出空缺符,并可指定任意 space_token 进行替代。

BERT分词器和改进后的分词器比拟效果如下,我们用 [unused1] 来代表文中的空缺符:

在本次比赛中,空格和部分低频非常字符(如'\x08','\x7f'等)被更换成“^”符号(相对其它符号而言涌现频率较低)。

模型构建

全体方案分为预演习和微调阶段,各阶段都采取NeZha作为主体编码模型,只在任务建模层有所差异。

(1)预演习阶段

预演习模型大小采取Base,在NeZha主体构造后添加BertOnlyMLMHead层,该层将隐层编码表示映射到词向量空间中,从而预测被粉饰位置的token。

个中,预演习过程中学习任务只利用MLM任务,mask办法为n-gram,mask比率为15%,演习过程中动态天生样本,学习率为1e-4,末了微调的模型对应的预演习mlm丢失约为1.0旁边。

(2)微调阶段

在经DAPT和TAPT演习后的NeZha根本上,添加BiLSTM、实体识别模型。
实体识别基于GlobalPointer,用文本片段的头、尾位置对应的词向量打算种别评分,并加入旋转位置编码(RoPE)表达相对位置关系,详细技能细节参考GlobalPointer:用统一的办法处理嵌套和非嵌套NER - 科学空间。

个中,演习过程采取多学习率 策略,BERT部分学习率为3e-5,别的部分为1e-3,dropout概率为0.5。

方案优化

数据增强

我们考试测验了以下几种数据增强方案:

随机选择token并用 [MASK] 更换:目的是加强模型的高下文建模能力,提高模型的泛化性;

随机选择实体并用 [MASK] 更换:方案1的改进版,不再随机选择token,而是选择完全的实体粉饰;

随机选择实体并用同义词更换:方案2的改进版,不再用 [MASK] 而是用实体的同义词,同义词由Word2Vec词向量确定;

随机丢弃文本中的实体:随机选择完全的实体删除,由于降落了实体涌现频率,过多丢弃实体可能导致模型欠拟合。

但实际效果都不是特殊明显,因此并未在终极方案中采取。

对抗演习

常用的提升模型鲁棒性和泛化性的方法,紧张思想是针对模型求取特定扰动并混入到样本中,再在加噪样本下学习精确的标签,可以表述为

常用方法有FGM、PGD、FreeLB等,我们利用了FGM、AWP两类对抗演习方法。
详细地,每次演习迭代等分别求取FGM扰动和AWP扰动下的模型梯度,再将两者梯度共同累加到原始模型梯度上,末了更新模型参数。
这样做可以使扰动多样化,有利于提升模型泛化性。

(1) FGM

即Fast Gradient Method,来自论文Adversarial Training Methods for Semi-Supervised TextClassification,扰动由下式求解

(2) AWP

AWP,即Adversarial Weight Perturbation,来自论文Adversarial Weight Perturbation HelpsRobust Generalization,与FGM只对输入施加扰动不同,AWP的思想是同时对输入和模型参数施加扰动。

个中,FGM采取默认参数,并参与全体演习流程,而由于AWP会对全体模型产生扰动,为防止模型在演习初期不稳定,仅当验证F1评分超过一定阈值(如0.810)后才加入AWP。

陈丹琦等人于四月份提出SimCSE,通过“Dropout两次”布局相似样本进行比拟学习,提升句向量表征。
后续R-Drop: Regularized Dropout for Neural Networks将 “Dropout两次”思想运用在有监督学习中,在多个任务取得明显提升。
详细算法流程如下:

后处理

本题数据中没有嵌套实体,而GlobalPointer输出结果可能存在嵌套,因此需设计合理的方案纠正模型输出。
我们提出了一种结合规则和非极大抑制(non-maximum suppression, NMS)的后处理方法

规则:通过比拟验证集标签和模型输出,我们设计了以下后处理规则:

若两个实体发生重叠,且实体类型相同,则从中保留一个较长或较短实体,这根据实体类型决定,如类型 4 须要保留短实体, 38 则保留长实体;

若三个实体发生重叠,且实体类型相同,则从中保留最长的实体;

若三个实体发生重叠,且实体类型不同,则从中保留最短的实体;……

NMS:上述设计的规则难免产生遗漏,因此末了会用NMS算法再处理一遍,确保结果中没有实体重叠。
熟习视觉任务的同学该当对NMS不陌生,这是一种基于贪婪的算法,浸染是去除冗余的目标框。
在本方案中用于去除实体嵌套时,将模型输出的种别概率作为实体片段评分,依次从剩余实体中选择评分最高的实体保留,如果当前选中实体与已保留实体重叠,那么舍弃该实体。

后续提升方向

1.从周星分享内容来看,伪标签有一定的提升效果,可以从伪标签方向进行提升。

2. 本赛题官方规定只能产出一个模型,那么一定程度上可以采取知识蒸馏技能将多个模型蒸馏到单个模型。

3. 大略的EDA方案可能毁坏了数据的分布,可考试测验别的数据增强方法,如AEDA等。

总结

本文先容了我们参加2022年环球人工智能技能创新大赛商品标题识别赛题的获奖方案,整体上,我们基于预演习措辞模型NeZha构建商品标题实体识别模型,通过连续预演习加微调的演习范式学习模型参数,并有效结合数据增强、丢失函数优化、对抗演习等手段逐步提升模型性能,但还存在优化空间,如可采取伪标签、知识蒸馏、数据增强等技能进一步提升效果。

排名:第11名 队名:ohmyzsh

方案先容

1.验证集划分:4w 演习数据的后4k条作为验证集,复赛线上线下分数差不多。

2.基线:nezha-cn-base + global pointer ,seed=42,epoch=30, early_stop=6, bs=16, bert_lr=3e-5, gp_lr=1e-3, gp 的threshold=-0.1;

3.预演习:100w无标数据+初赛A、B榜2万演习数据,直接原始mlm预演习20轮, 大概能提升1-2个千分点;

4.rdrop:https://spaces.ac.cn/archives/8373,alpha=2;

5.fgm:https://zhuanlan.zhihu.com/p/445354197,epsilon=0.3,从第0步就开始了;

6.ema:https://zhuanlan.zhihu.com/p/68748778,ema_start=9000;

7.由于题目哀求限定,没做多模型领悟。

8.代码后续整理好了公开到github中:https://github.com/YuanWind/gaiic_ner。

性能比拟

末了把上述所有方案领悟到一起,再利用全部4w数据演习,直接提交第六轮模型预测的结果, 终极线上得分0.81748056,复赛排行榜rank 14。
官方哀求复现,前边有几个团队复现失落败了,复赛终极排名11。

总结

比赛大概做了一个多月吧,考试测验了不少方案,学到了不少东西。
周周星的分享也很好,收益颇多。
终极觉得便是做的还不足,究其缘故原由还是代码写的不足顺手,调参太慢。
对数据的审查不足。
例如一个实体词对应了多个实体类型,考试测验过针对性的办理该问题,但是都没有效果。
在比赛群里看大佬们谈论也创造了自己的很多不敷之处,比如复现实验太慢,写的代码问题较大(GP的rdrop初赛用错了,复赛看了苏神的博客才改正过来,改正之后效果很好)。
还有便是实验记录整理做的不足好,须要进一步提高。
总的来说,都是已有的常用的比赛方案领悟到一起,然后深入调参工程。
这或许也是没能进前10的主要缘故原由吧。
不屈不挠,希望看到前排大佬的分享!