专栏首页机器学习AI算法工程新冠疫情相似句对判定,快速匹配准确答案

新冠疫情相似句对判定,快速匹配准确答案

向AI转型的程序员都关注了这个号???

机器学习AI算法工程 公众号:datayx

面对疫情抗击,疫情知识问答应用得到普遍推广。如何通过自然语言技术将问答进行相似分类仍然是一个有价值的问题。如识别患者相似问题,有利于理解患者真正诉求,帮助快速匹配准确答案,提升患者获得感;归纳医生相似答案,有助于分析答案规范性,保证疫情期间问诊规范性,避免误诊。

达摩院联合医疗服务机构妙健康发布疫情相似句对判定任务。比赛整理近万条真实语境下疫情相关的肺炎、支原体肺炎、支气管炎、上呼吸道感染、肺结核、哮喘、胸膜炎、肺气肿、感冒、咳血等患者提问句对,要求选手通过自然语言处理技术识别相似的患者问题。成果将作为原子能力助力疫情智能问答应用技术精准度提升,探索下一代医疗智能问答技术,具有广泛的技术和公益价值。

代码及运行教程 获取:

关注微信公众号 datayx 然后回复 相似句 即可获取。

AI项目体验地址 https://loveai.tech

1. 算法说明

本解决方案使用了基于病名\药名的数据增强+模型融合+训练时-测试时增强+伪标签的解决方案

  • 基于病名\药名的数据增强 Data augmentation

根据比赛组织方的信息,总共肺炎”、“支原体肺炎”、“支气管炎”、“上呼吸道感染”、“肺结核”、“哮喘”、“胸膜炎”、“肺气肿”、“感冒”、“咳血”十个病种,但是在train和dev数据集中仅仅出现了八个病种,其他的两个“肺结核”与“支气管炎”病种并没有出现,推测在test中包括了剩下的两个病种,是这次比赛的一个关键信息。

本次比赛需要模型学习的内容主要包括以下几个点:匹配语义信息,病名信息,药名信息,病理信息,我们需要针对这四个点来进行数据增强。

在测试集中,“肺结核”和“支气管炎”两个病种的测试数据中显然含有我们已有标注数据没有的病名、药名信息,但是这些信息是较为易得的;对于语义匹配信息和病理信息,1. 其生成难度要远远高于前两者,2.且很可能改变原数据集中的语义匹配和病理信息,出于这两点考虑,本解决方案采取了替换原数据中病名\药名的数据增强。

在实现过程中,挑选了病理与“肺结核”、“支气管炎”较为接近的“支原体肺炎”与“哮喘”标注数据中的部分样本,作病名替换,添加到原始标注数据中作为训练数据集。LB上升1.9个千分点(96.10->96.29)

  • 模型融合 models fushion

本解决方案使用了ernie + bert_wwm_ext + roberta_large_pair的融合模型,对最后的结果使用平均值。具体的来源和下载地址见参考资料。提升2.5个千分点(95.75->96.10)

  • 训练时-测试时增强 train-test time augmentation

本解决方案中,在预测时,首先用原测试集预测一遍标签;然后将原测试集的query1和query2字段交换,再次预测一遍;最后将两个结果相加作为最后的预测结果。出于训练时模型拟合方向的偏差考虑,在训练时也训练了两种模型,分别用于预测正序\逆序时的数据集,这一做法的提高非常稳定。

这样的技巧是为了让模型在学习\预测过程中看到数据的更多方面,结合数据中包含的边角信息。LB上升2个千分点(95.59->95.75)

注:这个地方的提升不仅是添加了train-test time augmentation, 另外考虑时间因素移除了pseudo_label, 故估计实际上升为2个千分点左右。

  • 伪标签 pseudo label

在预测完成后,使用预测结果和原训练集一起作为新的训练集再次训练一个模型做预测。LB上升1个万分点(96.29->96.30)

主要提升的过程

题外话

  • 基本没调参,roberta-large-pair稍微调了一下,但是毕竟dev不是特别可信... 中间一段时间(3.10~3.17)提升比较多,然后最后10天开始玩杂技,比较想通过数据增强来获得更多的提升,一直没有提升...毕竟猜到测试集里的语义匹配信息以及病例信息难度过高...最后2天幡然悔悟调了调参,dev上暴涨3个千分点,然后LB暴跌了3个千分点。。。还是头太铁了,调参绝非一日之功。
  • 没有用K折的原因:因为使用train-test time augmentation已经6个模型了,太多了我心里过意不去也不好调,故放弃了K折,实际上我的train-test time augmentation也有一定的去随机性作用,其实可以考虑加个3折比较合适。
  • 没有用fgm & pgd的原因:纯菜。看了大佬们的post后试了一下,pgd效果爆棚,已经在这个github里更新了这两个算法和相关的参数。
  • 本人第一次打nlp的比赛,打过两次feature-based,都被吊打。。。奇淫技巧实在不会,所以在一开始的时候就把重心放在数据上,毕竟对新手比较友好,提升的机会更大。
  • 由于数据集正负比例尚可,没有使用focal loss
  • 实际上一直有考虑将病种信息编码并作为特征之一,但是考虑到存在OOV的病种,是一大问题。如果使用增强后(包含OOV病种的数据)数据,然后将类别信息编码为one-hot形式,然后与bert模型输出pool进行concat然后再dropout接fc也是思路之一,但是后面一段时间一直纠结数据去了。
  • 尝试了特征工程,效果不是特别好。具体表现为,使用ernie得到的pool结果作为特征,在训练集上五折可以得到96+的oof acc,但是在验证集上仍然只有94左右的acc,严重不对齐,遂放弃。
  • 尝试了使用textrank提取两个query中的keyword及其pr值,然后设计公式来使两个query的(keyword,pr)二元组列表交互来产生特征,效果也很一般。也尝试过一些其他chip2019 top1解决方案中的特征,都不太好。
  • 尝试了将待预测数据中的病名替换为已知病名来进行增强,效果比较差。事实证明,病名与其病理之间存在较强联系。
  • 尝试了根据已知标签比例修正logits转为标签的阈值,效果也不好。
  • 尝试使用多轮伪标签,效果也不好。
  • 尝试使用多次迭代的伪标签,每次使用预测信心最高的60%测试集样本加入训练集,效果更差。。。实际上根据测试,每次预测信心最高的60%测试样本的正确率为99+,基本相当于训练样本了。推测是因为加入大量同类型(简单)样本改变了数据集结构导致模型性能下滑。
  • 尝试了将病种名直接拼接进问句对,效果很一般
  • 尝试了将两个query中的最长公共子字符串去掉,效果下跌比较严重。
  • 有一个想法是在预测时对测试数据进行pgd和fgm扰动(单纯扰动),感觉会有挺好的效果
  • 通过判别模型来筛选增强数据
  • multidrop
  • 通过kl散度来判别与原始分布的距离

阅读过本文的人还看了以下文章:

TensorFlow 2.0深度学习案例实战

基于40万表格数据集TableBank,用MaskRCNN做表格检测

《基于深度学习的自然语言处理》中/英PDF

Deep Learning 中文版初版-周志华团队

【全套视频课】最全的目标检测算法系列讲解,通俗易懂!

《美团机器学习实践》_美团算法团队.pdf

《深度学习入门:基于Python的理论与实现》高清中文PDF+源码

特征提取与图像处理(第二版).pdf

python就业班学习视频,从入门到实战项目

2019最新《PyTorch自然语言处理》英、中文版PDF+源码

《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码

《深度学习之pytorch》pdf+附书源码

PyTorch深度学习快速实战入门《pytorch-handbook》

【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》

《Python数据分析与挖掘实战》PDF+完整源码

汽车行业完整知识图谱项目实战视频(全23课)

李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材

笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!

《神经网络与深度学习》最新2018版中英PDF+源码

将机器学习模型部署为REST API

FashionAI服装属性标签图像识别Top1-5方案分享

重要开源!CNN-RNN-CTC 实现手写汉字识别

yolo3 检测出图像中的不规则汉字

同样是机器学习算法工程师,你的面试为什么过不了?

前海征信大数据算法:风险概率预测

【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类

VGG16迁移学习,实现医学图像识别分类工程项目

特征工程(一)

特征工程(二) :文本数据的展开、过滤和分块

特征工程(三):特征缩放,从词袋到 TF-IDF

特征工程(四): 类别特征

特征工程(五): PCA 降维

特征工程(六): 非线性特征提取和模型堆叠

特征工程(七):图像特征提取和深度学习

如何利用全新的决策树集成级联结构gcForest做特征工程并打分?

Machine Learning Yearning 中文翻译稿

蚂蚁金服2018秋招-算法工程师(共四面)通过

全球AI挑战-场景分类的比赛源码(多模型融合)

斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)

python+flask搭建CNN在线识别手写中文网站

中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程

不断更新资源

深度学习、机器学习、数据分析、python

搜索公众号添加: datayx


机大数据技术与机器学习工程

搜索公众号添加: datanlp

长按图片,识别二维码

本文分享自微信公众号 - 机器学习AI算法工程(datayx)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-10-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 机器学习法则:(谷歌)机器学习工程最佳实践

    机器学习(ML)最优实践方法,浓缩了其多年技术积累与经验,尤其是YouTube、Google Play和Google+ 等平台背后的ML算法开发、维护经历。谷歌...

    机器学习AI算法工程
  • Catboost:超越Lightgbm和XGBoost的又一个boost算法神器

    今天介绍一个超级简单并且又极其实用的boosting算法包Catboost,据开发者所说这一boosting算法是超越Lightgbm和XGBoost的又一个神...

    机器学习AI算法工程
  • 你还在用“人工特征工程+线性模型”?

    作者:李沐M 11年的时候我加入百度,在凤巢使用机器学习来做广告点击预测。当时非常惊讶于过去两年内训练数据如此疯狂的增长。大家都在热情的谈特征,每次新特征的...

    机器学习AI算法工程
  • ML/DL科普向:从Sklearn到TensorFlow

    大数据、处理器等技术的成熟,将已经有60多年历史的“人工智能”推向了舞台中心。随着机器学习、深度学习等概念的火热,很多同学也摩拳擦掌,准备在人工智能这一“弯道”...

    木东居士
  • 十问机器学习

    本文中的问题精选自上期【你问我答】——深度学习专题中读者的提问。【你问我答】是由美团点评技术团队推出的线上问答服务,你在工作学习中遇到的各种技术问题,都可以通过...

    美团技术团队
  • 特征工程的黑色艺术

    想象一下,当今社会备受瞩目的人工智能和数据挖掘算法工程师每天大部分时间都在做什么呢?是花大量时间手推公式,还是思考各种trick对算法调参,还是一遍遍清洗数据和...

    小萌哥
  • 特征工程

    特征工程是用数学转换的方法将原始输入数据转换为用于机器学习模型的新特征。特征工程提高了机器学习模型的准确度和计算效率,体现在以下五个方面

    week
  • 完整的端到端的机器学习流程(附代码和数据)|比赛、工程都可以用!

    这是2018年夏天,一位美国数据科学家在申请工作时的“作业”,完整的英文版作业在:

    黄博的机器学习圈子
  • 干货 | 携程酒店浏览客户流失概率预测

    作者简介 陈无忌,就读于中国科学技术大学计算机学院,15 级硕士研究生。研究方向机器学习、大数据、智能交通等。在校期间多次参加大数据竞赛,在携程云海平台比赛中,...

    携程技术
  • 如何从机器学习数据中获取更多收益

    对于深度学习而言,合适的数据集以及合适的模型结构显得至关重要。选择错误的数据集或者错误的模型结构可能导致得到一个性能不佳的网络模型,甚至可能得到的是一个不收敛的...

    用户3578099

扫码关注云+社区

领取腾讯云代金券