0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

列举一些常见的数据问题以及解决方案

深度学习自然语言处理 来源:CS的陋室 作者:机智的叉烧 2022-11-09 10:28 次阅读

日常工作中,因为很多原因,我们面对的问题总不能一下放模型里,就能就得到很好的效果,前面有文章详细讲过可以通过bad case分析定位并解决问题(心法利器[40] | bad case治疗术:解决篇,这是最后一篇),今天换个角度,从一个分类任务来看,会有哪些问题,以及有哪些可以考虑的解决方案。

这里,我按照问题作为分类,来给出一些常见的解决方案。

看完这篇文章后,别遇事不决换模型了,别让老板知道你只会这招(狗头)。

数据的问题

在现实问题下,有80%以上的效果不好,都是由于数据的问题,这里我来列举一些常见的数据问题以及解决方案。

数据标注错误

人很难不犯错的,即使是一些比较出名的开源数据集,其实也很难达到全对的水平,很多数据集只要认真做过case,例如做过case分析,就会发现其实有很多的标注错误,实际应用中,大部分情况准确率能达到95%就已经是高质量的数据了,一般能达到90-92%这个数据集就基本可用了,而如果模型本身预测的结果准确率就只是在90%上下,其实模型已经很大程度拟合好了这个数据集,再往上的提升很可能只是分数高,拟合了错误结果而已,这个是需要首先说明的。

其次,有些数据集,和很多原因有关,无论是训练集还是测试集,准确率可能都只是在六七十甚至更低,我们其实无法苛求模型能达到更好的水平。对训练集,如果质量低,这事就和拿了本错误的教材一样,根本学不好,对测试集,再优秀的模型遇到这个测试集,即使预测对了,标注是错的,体现在指标上也是准确率很低,模型怎么换效果都不好。

这个数据标注问题,往往体现的是这个系统的上限,此时,我们所应该聚焦的,就是提升数据标注的准确性,这里给出大家提一些可以考虑的策略:

仔细修正标注策略(毕竟数据标注除了人工还有很多方法),制定更多规则来优化。

如果数据标注比较困难,可以考虑多人标注,对不一致的部分进行复合,整体质量提升会比较明显。

配合模型、规则等多个策略进行比对,对不一致的部分进行复标。

利用模型,对模棱两可(二分类概率在0.5上下)或者明显错误的(正类prob在0.1左右或负类prob在0.9左右),进行复标。

后面几个策略其实挺“主动学习”的,核心就是通过模糊或者不一致来挖掘很可能有错的部分进行复合,来提升整体的质量。

数据数量问题

现阶段,虽然有无监督之类的很多策略,但是对于特定的任务或者需求,总是离不开训练数据的,我们需要数据来让模型知道“遇到这个情况该选哪个”,因此数据数量是需要基本保证的。

首先,很多人很容易想到两个常见策略:

数据增强。

无监督。

这两个方案,是可以的,但不是万能的:

数据增强——在本身数据的覆盖面已经较充足的情况。例如天气意图的分类,其实来回就这么集中情况,列举完增强就行。但是遇到类似电影、电视剧意图的分类,分布很难完整覆盖,只有几条样本完全不能通过常规的增强解决。

无监督——如果有自信模型能往特定的方向预测,那这么做其实还行,但是定向这事很困难的,例如都是二分类问题,一个分是否是天气意图,一个分是否是电影意图,都是同一批数据,如何知道训出的无监督模型朝着那个任务的方向预测?

所以,私以为还是要从人体的根源出发。分几个情况吧:

整体数据都很少的情况。

整体数据尚可,但是特定类目或者特定情况的数据太少的情况。

对于整体数据都很少的问题,如果是像我前面说的——在本身数据的覆盖面已经较充足的情况,那其实直接数据增强是可以的,增强之后会让模型强化对特定意识的了解,直接就能学出来了,但是如果不足,那就要找渠道增加数据了,有用户数据的,可以捞一些用户query,根据用户点击在整理下,没有的,结合一些词典构造一些样本放入也是可以的,甚至有一些场景是有公开数据的,直接拿来用。

而对于数据样本不均衡的问题,之前有写过文章介绍,此处不赘述了(心法利器[44] | 样本不均衡之我见)。

小补充

只有在数据的数量和质量都比较充足的时候,我们才有资格去谈模型,谈其他的优化策略,这应该是一名成熟的算法工程师所需要掌握的基础知识。

模型升级的收益

模型的升级往往带来的是一个系统级别的提升,这个系统提升是上限的提升,只有到这个系统内部的多个位置都已经有比较高了,这时候换模型才能带来比较明显的收益,例如数据已经调教的比较好,没有什么大问题,这个时候升级模型能很快提分,这里例如fasttext->textcnn,上预训练模型等,但是确实是要看清切换的时机,毕竟切换是需要成本的,到时候切换完效果不提升,白干活的话KPI很容易崩的(狗头)。

有关切换时机,大家可以看这篇(心法利器[63] | 预训练模型的上线时机)。

特定样本引入打来的提升

常规下,要调整效果,还是要从bad case里出发,理解数据中常见的问题,然后进行优化,其实是日常最常用的方式,这个方式简单快速,但是也有难点,难的是发现规律并进行解决,这里给大家介绍一些比较常见的问题和主要解决方法。

正负样本里某些词的词频差距很大,导致模型认为出现的这个词就是分类标志,导致分类错误。

解决方法1,捞日志,这个词在正类多就找带这个词的负类样本,反之亦然。

解决方法2,删除样本,例如这个词在正类多就干掉一些正样本。

泛化能力不足,模型只学到了正规的句式,对于泛化、换个说法的样本可能就预测错了。

r-dropout,值得推荐

拼接,和一些无意义、闲聊类的句子进行拼接,维持源类别,放入对应类目的样本中。

数据增强,尤其关注随机交叉的这个策略,有收益。

检索增强,用向量召回最接近的句子,用这批放入对应类目。

因为缺乏特定形式的样本(模型没见过),导致模型只能猜还猜不对。

加入特定类型的样本。(在天气意图分类数据里,把“天气之子”作为负样本放入训练集中)

考虑通过别的方式解决,例如用词典(心法利器[41] | 我常说的词典匹配到底怎么做)或者以搜代分的方式来处理(心法利器[60] | 以搜代分的生效机理)补充。

当然,还有一些别的策略,这些策略很大程度和自己对业务、数据的理解有关,越是了解提升的幅度会越大。最近的一次实验,由于用户query其实都是语音转文字得到的句子,而由于采音、ASR等问题,得到的用户query可能不是完整的,不完整意味着可能有关键词但是信息仍旧模糊,这就容易导致误召回了(模糊或者无意义的句子是会被认为是负类的),因此,我才用的策略是对常见高频的句子做随机截断,然后放入负类中,最终结果是以2%的召回率代价换来了4%的准确率提升,算是收益较大的,漏召回的会根据实际情况再调整即可。

其他策略的引入

一个完整可控的系统,不能光靠模型来解决所有问题,而实际上也是模型并不能解决所有问题,我们需要众多的支持和辅助,构造成一个系统,才能让整体效果达到新的高度,这里有一些可以考虑的思路。

对于简单、高频的问题,其实不太认为需要模型,处理用一些词典和规则能更加稳定可控地解决。

如果问题的尾巴比较长,长尾问题的样本比较难获取,占比较低,此时模型并不能学得好,与其考虑增强和挖掘,不如交给检索的方式做更加高效,别考虑增加特定样本了(以搜代分:心法利器[26] | 以搜代分:文本多分类新思路)。

模型附带后处理,解决模棱两可,或者比较边界的问题,举个例子:

阈值大于0.7的才是正类,0.5-0.7的部分需要依赖别的因素做进一步判断才准入。

多个分类模块组合,最终用加入rank层进行多结果的排序,解决复杂多变的分类场景。

多个二分类,不让模型处理混淆问题,最终rank层再来择优。

类目体系更新频繁,重训模型对其他类目影响大。

多个分类场景差异大,数据不好平衡。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据集
    +关注

    关注

    4

    文章

    1197

    浏览量

    24552

原文标题:文本分类日常提点技巧

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    芯片失效分析中常见的测试设备及其特点

    在芯片失效分析中,常用的测试设备种类繁多,每种设备都有其特定的功能和用途,本文列举一些常见的测试设备及其特点。
    的头像 发表于 08-07 17:33 450次阅读
    芯片失效分析中<b class='flag-5'>常见</b>的测试设备及其特点

    远程IO常见报错及解决方案,轻松应对远程控制难题

    随着科技的发展,远程IO技术在工业、医疗、家居等领域得到了广泛应用。然而,在使用过程中,我们难免会遇到一些报错问题。本文将为您盘点远程IO常见报错及解决方案,让您轻松应对远程控制难题。
    的头像 发表于 07-23 18:19 1118次阅读

    CAN232模块的常见问题和解决方案

    在使用CAN232模块时,用户常会遇到系列问题,这些问题可能涉及硬件连接、软件配置、通信稳定性以及故障排查等多个方面。以下是一些大家常问的CAN232模块使用问题及其可能的解决方案
    的头像 发表于 07-18 11:34 612次阅读

    underfill工艺常见问题及解决方案

    underfill工艺常见问题及解决方案Underfill工艺是种集成电路封装工艺,用于在倒装芯片边缘点涂环氧树脂胶水,通过“毛细管效应”完成底部填充过程,并在加热情况下使胶水固化。该工艺在缓解
    的头像 发表于 04-09 15:45 547次阅读
    underfill工艺<b class='flag-5'>常见</b>问题及<b class='flag-5'>解决方案</b>

    音视频解码生成常见问题及解决方案

    在音视频解码生成的过程中,我们可能会遇到一些常见问题,这些问题可能会影响解码的效果和效率。以下是一些常见问题及其解决方案: 问题1:解码失败
    的头像 发表于 02-21 14:39 958次阅读

    PCB金手指设计的常见问题和解决方案

    PCB金手指设计的常见问题和解决方案
    的头像 发表于 12-25 10:09 1641次阅读

    石英谐振器应用中常见问题及解决方案

    石英谐振器应用中常见问题及解决方案 石英谐振器是种广泛应用于电子设备中的振荡器。它通过石英晶体的谐振效应来提供稳定的频率信号。然而,在实际应用中,石英谐振器可能会遇到一些
    的头像 发表于 12-15 14:00 427次阅读

    大功率插件电感损坏的一些常见表现

    大功率插件电感是电子电路中非常重要的种电子元器件,它对于设备的稳定运行有直接的影响的。如果在设备的日常运行中遇到故障,如何辨别是否是大功率插件电感损坏造成的呢?本篇我们就来简单探讨下大功率插件电感损坏的一些
    发表于 12-11 16:22 3次下载

    LED显示屏常见几种控制解决方案

    常见的几种操作解决方案:3G/4G解决方案、Wi-Fi解决方案、同异步双模控制方案、多屏画面同步方案
    的头像 发表于 11-23 12:00 5877次阅读
    LED显示屏<b class='flag-5'>常见</b>几种控制<b class='flag-5'>解决方案</b>

    分享一些SystemVerilog的coding guideline

    本文分享一些SystemVerilog的coding guideline。
    的头像 发表于 11-22 09:17 598次阅读
    分享<b class='flag-5'>一些</b>SystemVerilog的coding  guideline

    列举一些嵌入式Linux应用开发里经常使用的技巧和套路

    本篇文章,我们基于ELF 1S这款开发板,来列举一些嵌入式Linux应用开发里面,经常使用到的开发技巧和套路。
    的头像 发表于 11-14 10:44 401次阅读
    <b class='flag-5'>列举</b><b class='flag-5'>一些</b>嵌入式Linux应用开发里经常使用的技巧和套路

    常见双绞线问题及解决方案

    在弱电工程中,双绞线是常见的传输介质。以下是关于双绞线的一些常见问题及其解答。
    的头像 发表于 11-03 10:47 856次阅读

    针对RF PCBA设计的一些建议

    射频(RF)PCBA设计涉及系列复杂的考虑因素,包括天线设计、滤波器设计以及传输线(RF Trace)的优化。这些因素对于无线通信和射频应用的性能至关重要。以下是针对RF PCBA设计的一些建议。
    的头像 发表于 10-30 10:19 376次阅读

    LoRa技术在实际应用中可能遇到的问题和挑战以及解决方案

    LoRa技术在物联网和其他应用领域中取得了显著的成功,但在实际应用中仍然面临一些问题和挑战。以下是一些可能的问题和挑战,以及针对这些挑战的一些建议
    的头像 发表于 10-13 18:20 666次阅读

    列举一些C语言中常用的宏定义

    写好C语言,使用宏定义可以防止出错,提高可移植性、可读性等。下文列举一些成熟软件中常用的宏定义。
    发表于 10-07 10:54 430次阅读
    <b class='flag-5'>列举</b><b class='flag-5'>一些</b>C语言中常用的宏定义