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

    文章

    1208

    浏览量

    24701

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

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

收藏 人收藏

    评论

    相关推荐

    DFT的常见误区与解决方案

    DFT(离散傅里叶变换)在信号处理领域具有广泛的应用,但在使用过程中也常会遇到一些误区。以下是对DFT常见误区的总结以及相应的解决方案常见
    的头像 发表于 12-20 09:32 197次阅读

    SSM开发中的常见问题及解决方案

    在SSM(Spring + Spring MVC + MyBatis)框架的开发过程中,开发者可能会遇到一些常见问题。以下是对这些问题的详细分析以及相应的解决方案
    的头像 发表于 12-17 09:16 314次阅读

    EEPROM编程常见错误及解决方案

    EEPROM(电可擦可编程只读存储器)在编程过程中可能会遇到多种错误。以下是一些常见的EEPROM编程错误及其解决方案常见错误 数据写入
    的头像 发表于 12-16 17:08 614次阅读

    常见的时间继电器故障及解决方案

    时间继电器在工业自动化和电力控制等领域中发挥着重要作用,但由于长时间使用或环境因素等原因,可能会出现一些常见故障。以下是一些常见的时间继电器故障及其
    的头像 发表于 12-09 10:32 376次阅读

    常见的GND连接错误及解决方案

    GND(接地)连接在电子设计和硬件开发中至关重要,错误的GND连接可能导致电路不稳定、信号干扰甚至设备损坏。以下是一些常见的GND连接错误及其解决方案、GND网络未连接 问题描述
    的头像 发表于 11-29 16:02 1205次阅读

    常见BGA芯片故障及解决方案

    BGA(Ball Grid Array,球栅阵列)芯片在电子设备中扮演着重要角色,但其也可能出现一些常见故障。以下是一些常见的BGA芯片故障及其相应的
    的头像 发表于 11-23 13:54 297次阅读

    buck电路常见故障及解决方案

    Buck电路是种常用的降压电路,但在使用过程中可能会遇到一些故障。以下是一些常见的Buck电路故障及其解决方案
    的头像 发表于 11-21 10:02 913次阅读

    TTL电路中的常见问题及解决方案

    问题。以下是对这些问题的归纳以及相应的解决方案、电源问题 常见问题 : 电源电压过高或过低,导致电路无法正常工作或损坏。 电源与地颠倒接错,造成电流过大,损坏器件。
    的头像 发表于 11-18 10:32 696次阅读

    一些常见的动态电路

    无论是模电还是数电,理论知识相对来说还是比较枯燥,各种电路原理理解清楚不算容易,换种生动形象的方式或许会增加一些趣味性,也更容易理解这些知识。下面整理了一些常见的电路,以动态图形的方
    的头像 发表于 11-16 09:26 355次阅读
    <b class='flag-5'>一些</b><b class='flag-5'>常见</b>的动态电路

    aes加密的常见错误及解决方案

    的归纳以及相应的解决方案常见错误 编码问题 : 在将字节数组转换成字符串时,如果使用了不同的编码格式,可能会导致解密后的数据出现乱码。 密钥长度问题 : AES算法支持128位、1
    的头像 发表于 11-14 15:13 1350次阅读

    PID控制的常见问题及解决方案

    问题。以下是一些常见的问题及其解决方案: 1. 响应速度慢 问题描述: 系统响应速度慢,无法快速跟踪设定值的变化。 解决方案: 增加比例增益(P): 增加比例增益可以提高系统的响应速度
    的头像 发表于 11-13 14:37 2351次阅读

    分享一些常见的电路

    理解模电和数电的电路原理对于初学者来说可能比较困难,但通过一些生动的教学方法和资源,可以有效地提高学习兴趣和理解能力。 下面整理了一些常见的电路,以动态图形的方式展示。 整流电路 单相桥式整流
    的头像 发表于 11-13 09:28 306次阅读
    分享<b class='flag-5'>一些</b><b class='flag-5'>常见</b>的电路

    SUMIF函数常见错误及解决方案

    SUMIF函数是Excel中个非常实用的函数,用于根据给定条件对数据进行求和。然而,在使用过程中,用户可能会遇到一些常见错误。 1. 错误:范围不正确 错误描述: 用户可能没有正确设
    的头像 发表于 11-11 09:10 1233次阅读

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

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

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

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