新冠疫情医疗问答基于对抗训练的BERT
白癜风治疗白癜风 https://disease.39.net/bjzkbdfyy/210922/9476461.html 一、背景 年2月27日-4月4日,阿里达摩学院主办了天池“公益AI之星”大赛,旨在面对疫情抗击,使疫情知识问答应用得到普遍推广,从而探索下一代医疗智能问答技术,具有广泛的技术和公益价值。这项比赛发布的是新冠疫情相似句对判定任务。比赛整理近万条真实语境下疫情相关的患者提问句对,要求选手通过自然语言处理技术识别相似的患者问题。 本着宁缺毋滥的原则,问题的场地限制在20字以内,形成相对规范的句对。要求选手通过自然语义算法和医学知识识别相似问答和无关的问题。 二、问题描述 数据包括:脱敏之后的医疗问题数据对和标注数据。医疗问题涉及“肺炎”、“支原体肺炎”、“支气管炎”、“上呼吸道感染”、“肺结核”、“哮喘”、“胸膜炎”、“肺气肿”、“感冒”、“咳血”等10个病种。 2.1数据描述 每一条数据由Id,Category,Query1,Query2,Label构成,分别表示问题编号、类别、问句1、问句2、标签。Label表示问句之间的语义是否相同,若相同,标为1,若不相同,标为0。其中,训练集、验证集Label已知,测试集Label未知。 表1,训练集数据示例 2.2评价指标 测评指标为准确率,计算公式为: 准确率=正确预测数目/总问题对数目 三、任务理解 命题属于自然语言处理下游任务中的语义相似度判别,即设计一个算法计算两个语句的语义相似度,最后表示是否为同义和非同义。然后数据label包含两类1和0,属于经典的二分类问题。 四、数据分析 问题描述中给出了10个类别的病种,但是在提供的训练集和验证集中只包含8个类别的病种,初步推测,还有两个类别的病种应该在测试集中,用来评判模型的鲁棒性。另外我们分别统计了问句长度分布,训练集和测试集中所有病种正负样本的比例,以及每个病种所占比例,每个病种中正负样本所占比例等分布。 4.1数据分布 1、文本长度统计 单问句的长度集中在12左右,两个问句合并后的长度集中在25左右. 2、不同病种数据比例 3、正负标签分布 训练集和验证集中正负样本标签比例在3:2左右 4、数据校验 在分析数据时,我们发现其中有部分噪声数据,比如query1和query2完全相同,但是label却为0. 五、特征工程 数据清洗数据比较规整,数据清洗部分只简单做了特殊字符处理等操作。 数据增强传递闭包扩充(标签传递)根据IFA=BandA=CTHENB=C的规则,对正样本做了扩充增强。根据IFA=BandA!=CTHENB!=C的规则,对负样本做了扩充增强。在对负样本进行扩充后,正负样本比例从原始的1.4:1,变成2.9:1。所以又对负样本进行了下采样,是的正负样本比例1:1。 六、模型设计思路 单模型选择语句对相似性判断,属于语句对分类(SentencePairClassificationTask)范畴,18年以来,BERT在很多自然语言处理的下游任务中表现非常突出,所以我们选择BERT作为基础模型结构,在pooler层后加了dropout全连接层和Sigmoid激活层。没用Softmax层是为了能够容易修改类别的阈值。 尝试了多种不同的预训练模型,包括BERT-Base,BERT-wwm,BERT-wwm-ext,roeberta_zh,chinese_roberta_wwm_ext,chinese_roberta_wwm_large_ext,RoBERTa-large-pair以及百度的ERNIE1.0,小模型中BERT-wwm-ext和RENIE的表现最好,大模型中RoBERTa-large-pair的表现最好.单模型Fine-Tuning的过程中我们对max_len,batch_size,dropout-rate,单模型训练过程中使用了K-fold方式训练,最后对k个模型取平均。 对抗训练数据集中存在一些对抗样本,所以我们在单模型训练的时候还采用了对抗训练的方法,对wordembedding添加扰动,可以提高模型应对对抗样本的鲁棒性;同时可以作为一种regularization,减少overfitting,提高泛化能力。使用的对抗训练方法是FGM。 模型融合模型融合采用的方式是:同一模型先进行五折融合,五折模型间使用投票方式得到结果;然后将多个五折投票的结果再进行投票。 七、创新点 主要包括: 根据数据的分布特性,做了相应的数据增强,数据增强后模型效果会有提升;单模型训练过程中,加入了对抗训练,对bert的Embedding输出进行扰动,提高模型在对抗样本上的鲁棒性,线上效果明显提升;模型融合过程中,多模型的输出结果使用sigmoid反函数求平均后在通过sigmoid转换作为最后输出,线上效果会有提升。 八、总结 总结一下优化过程中有效的trick: 1)通过相似性传递增强数据; 2)采用对抗训练; 3)组间投票再投票的融合方式。 也有很多尝试过,但是无效的trick: 1)由于问句的句式较短,剔除医学疾病实体之后句式更短,多数属于问句,所以同义词替换,随机删除,随机替换,随机交换的效果并不好,但是可以尝试使用公开医学预料训练词向量模型来做同义词替换(没有尝试); 2)数据降噪,剔除上文提到的噪声数据重新训练,但是提交测试准确率反而下降,推测测试集中也存在类似的样本。 3)取多层bert输出进行各种骚操作,包括在bert后增加lstm、gru、cnn等各种网络,测试准确率下降;3)将类别判定loss加进去效果都下降了。 九、实际应用探索 语句相似性判断常见于问答系统,一般问答系统中会将用户问与知识库中的标准问进行相似性判断,除了医疗领域,金融领域的智能问答系统,处理用户问与标准问也是一个比较好的应用方案。 实验中并未使用catagory字段,但也有一些启发,在实际应用中可以先对标准问进行类别标签的分类作为召回类别,对用户问先进行相应的分类召回,再进行两个问句之间的相似性判断,可以提高搜索效率,模型中使用了BERT预训练模型,实际工程项目中如果要达到毫秒级别推理响应,还可以加一些自蒸馏等方式来缩减模型。 |
转载请注明地址:http://www.feiyane.com/gmxfy/11603.html
- 上一篇文章: 防控育肥猪肺炎,先防支原体猪价低迷,养
- 下一篇文章: 金河生物002688SZ猪圆环病*