心法利器

本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。

近期,我再次总结了我的历史文章,累积起来有50w字,百余篇文章了,有兴趣可以拿来看看,获取方式:七夕清流,百余篇累计50w字文章合集发布。

往期回顾

  • 心法利器[47] | 为什么我的BERT不行?

  • 心法利器[48] | 开放域文本分类技术思考

  • 心法利器[49] | 数据分布的含义理解

  • 心法利器[50] | 测试集构造思考

  • 心法利器[51] | 长短句语义相似问题探索

众所周知,按照人类的语言习惯,书面语和口头语是存在巨大差别的,书面语一般会比较正式,内容会更加直接而且信息的浓度也会比较高,力求更快表达,但是口头语则会多很多语气词或者是一些口头的语言习惯,在NLP领域,当我们去对句子进行语义理解的时候,也会有很大的区别,最直观的感受就是在文字搜索场景和语音交互场景,可以非常明显的看到口语化的场景的query会含有更多无关、混乱的信息,这些信息势必会对最终的预测效果。

背景

照例还是聊聊背景,口语化问题其实在NLP领域似乎是一个不太被聊但其实还挺常见的问题,按照语言习惯,很多人在说话的时候会带上很多习惯的词汇,例如语气词、某些口头禅之类的,还有一些连接词,而这些变换往往会带来同一个语义的多种说法,这些其实都会很影响我们对语义的理解。

举例子大家应该能感受到,比较正式的说法应该是“电脑发热”,但是换成语言了,就会是“我的电脑好烫啊”,“电脑怎么这么热”,“今天我爸妈的电脑怎么这么热”,当然了可能还会带一些被屏蔽的词语,这里不展开了,大家要应该明白了,这种所谓的口语化是什么意思。

问题及其机理分析

数据层面的问题

对人来说,口语化的表达我们其实非常习惯,理解完全没有什么障碍,但是对模型却似乎很有问题,我们不妨从这个角度先入手看看。

首先,我们在构造样本的时候,很多时候回更倾向于去取更为标准化的句子,因为比较容易想到,所以占比自然就比较高;其次,从频次上来看,标准化的句子更加高频(甚至在有query suggestion之类的推荐时),而口语化句子更多变分布也就弥散了,很难覆盖长尾的说法;第三,句式信息本就冗余,本身就不利于句子信息解析,这个和上次讲的长句问题其实类似。

因此,数据层面的缺陷,就很容易导致模型就学不到这部分本就比较难的信息了,效果自然就很难好。

模型的鲁棒性

尽管数据层面有问题,但是模型本身的泛化能力理论上也能处理一部分问题,不至于这么严重,但实际上模型多少还是让我们失望了,哪怕强如BERT之类的预训练语言模型,在这类问题占比比较高的情况下都好像和小模型区别不大,我们还是希望模型能够一定程度去解决这些问题。

  • 模型的鲁棒性不足,缺少对句子的灵活理解能力。

而我们知道,模型本身的理解能力其实就来源于本身给他学习的数据以及学习方法,当然有模型本身知识储备能力的上界所在,但从实验看来模型的上界似乎还没有那么快达到(如果预训练模型和传统小模型效果差异不大的话,而且这个其实并不少见),此时我们应该探索的还是更好的学习方法,而不是换模型那么简单了,说白了不好的教材和学习方法,哪个学生都学不好。

解决方案

对问题有了更深层次的理解,其实我们的解决方案也就呼之欲出了。

数据层面的优化

第一反应应该就是预处理,因为模型不好处理这种东西,那我们完全可以先把句子中的一些这种元素去掉再来给模型处理,效果理论上就会很好,例如一些异常的字符、常见不影响任务结果的词汇、前后缀等,我自己曾经试过用正则把一个词去掉,没错就只是一个词,能带来1%的召回率提升而准确率持平(分子分母都小幅增加下),可以说受益巨大了,所以大家可以多分析数据,把一些典型的问题优先用最快的方式处理掉。

同样是处理,我们可以通过一些改写,把句子整理成更加规范的格式,例如长句处理中的丢词、风格迁移的文本生成等,进行一些更为灵活的转化,转化成模型更好处理的方式(这个应该在这篇里讲过一些业界的尝试:前沿重器[13] | 知乎query改写思路启示),同样能让模型处理。

另外,值得注意的是,很容易出现一个情况,在构造训练集的时候,负类样本中很可能因为自己的抽取方式,把很多时候口语化的一些说法放在了负样本,让模型直接就认为这些口语化的说法就是负类了,这个问题的占比还是会不少的,如果是这个问题,我们可以尝试用一些口语化的说法拼接正类比较标准的样本作为正类方进训练样本中,说起来,这个有点数据增强的意思了。

我知道会有人说数据增强的,确实是可以,而且亲测有一些效果,不过数据增强这件事我一直抱着比较谨慎的看法,我一再强调增强不是增多(NLP.TM[32] | 浅谈文本增强技术),简单的赋值或者随意的扰动效果可能不是很好,如果是知道问题定向增强,绝对是事半功倍。所以针对口语化的问题,我们应该做的构造一些和口语化相关的句子,让模型能更好地学到,比较有针对性的,就是给句子增加一些口语化的元素,例如拼接口语词、随机加词等,前面提到的风格迁移生成也可以尝试,需要注意的是我们应该保证增强的质量,让他们一定程度原有意思保持不变,这个当然也是数据增强的一个难点了。

模型层面的优化

该说模型层面了,这类型的问题下模型其实没有完全发挥出实力,更多是在训练过程没有调校好,所以这探索更多是模型的学习方式,口语化句子相比原来比较正常的句子来说更多是产生了一些扰动,而这些扰动又正好命中了模型的盲区,所以模型很容易分不出来了,此时我们该做的其实就是增强模型的鲁棒性。

对抗学习是一种很好的增强方式,让模型能够抵抗某种形式的攻击,所谓的攻击就是找到模型漏洞从而发现bad case,从这个角度看,口语化bad case的产生无疑是模型对这块的应对能力下降导致,因此一些比较通用的对抗学习方式就是能缓解这些问题很好的解决方法,常见的FGM、PGD、FreeLB等都是比较合适的。

对抗学习更多地可以看做是在损失层面增加的扰动(至少我看大部分主流方法都是如此),另一种其实就是和现在对比学习构造正样本的方式类似了,就是在模型层面加一些扰动,例如dropout,随机失活让模型的预测出现一些偏差,这些偏差能让模型对同一个case有不同的预测,我们要求这些预测尽可能接近,从而实现对模型稳定性的提升,最有代表性的我认为是r-dropout,即dropout两次,要求这两次尽可能接近,这个我前面有文章聊过(前沿重器[15] | R-Dropout——一次不行就两次),没看过的同学可以了解一下。

这里值得注意的是,如果数据层面还是有比较大的问题的话,对抗学习也好,r-dropout也罢,方法不见得能药到病除,对抗学习的本质是学习一些扰动下的样本,dropout也是随机的,但是这个扰动并不具有针对性,实验效果显示可能没想象的这么好,有时间和精力更多还是希望能放在数据上,提升会比较快。

数据分布的问题

这里还是想强调一下数据分布的问题,口语化的句子变化比较多,所以相比于比较规整的句子(这个往往可能还是高频)分布上会很零散,对于不去重的数据集,口语化的占比应该不会很高,但是一旦去重,就会比较明显。

评测集去重与不去重针对的其实也是两类数据,不去重的数据更倾向于高频数据,这种数据集下,口语化句子其实并不会很高频,但是去重数据,那其实低频但是变化比较多的数据,会占比高很多,而且问题也更难,口语化的问题更多也是出在这个问题下。

小结

本期,给大家介绍了口语化问题的一些细节以及常见的解决方案。实际上这个问题哪怕是发现其实都是有难度的,这个依赖于经常深入到query层面对query的熟悉和理解,才有可能总结出来,问题的诊断能到这个程度,说明对问题理解的深度到达了一个阶段,希望本篇文章能给大家一些帮助吧。

心法利器[52] | 口语化句子解析问题相关推荐

  1. 心法利器[53] | 数据增强的现实应用思考

    心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长.具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有. 近期,我再次总结了我的历史文章,累积起来有50w字,百余篇文章了,有兴 ...

  2. 心法利器[55] | 算法工程师读论文思路

    心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长.具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有. 近期,我再次总结了我的历史文章,累积起来有50w字,百余篇文章了,有兴 ...

  3. 心法利器[54] | NLP任务上线前评测

    心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长.具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有. 近期,我再次总结了我的历史文章,累积起来有50w字,百余篇文章了,有兴 ...

  4. 心法利器[62] | 向量召回和字面召回的选择与权衡

    心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长.具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有. 2022年新一版的文章合集已经发布,累计已经60w字了,获取方式看这里 ...

  5. 心法利器[78] | 端到端任务的拆解设计

    心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长.具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有. 2022年新一版的文章合集已经发布,累计已经60w字了,获取方式看这里 ...

  6. 心法利器[51] | 长短句语义相似问题探索

    心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长.具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有. 近期,我再次总结了我的历史文章,累积起来有50w字,百余篇文章了,有兴 ...

  7. 心法利器[70] | 短文本理解的难点和解决方案

    心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长.具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有. 2022年新一版的文章合集已经发布,累计已经60w字了,获取方式看这里 ...

  8. 大脑模拟NLP,高德纳奖得主Papadimitriou:神经元集合演算用于句子解析

    来源:机器之心本文约2000字,建议阅读5分钟集合模型使我们更接近于理解这些功能,并回答剩下的问题. 一个简单的大脑模型为人工智能研究提供了新的方向.世界顶尖计算机科学理论学家.哥德尔奖和高德纳奖获得 ...

  9. 大脑模拟NLP,高德纳奖得主:神经元集合演算用于句子解析

    选自bdtechtalks 作者:Ben Dickson 机器之心编译 一个简单的大脑模型为人工智能研究提供了新的方向.世界顶尖计算机科学理论学家.哥德尔奖和高德纳奖获得者.哥伦比亚大学计算机科学教授 ...

最新文章

  1. jmeter用户自定义变量的实际使用
  2. STL源代码分析(ch2 内存分配)jjalloc.h
  3. Tinkpad W540 BIOS bug ,中招了,中了一次还送了一次
  4. 第二阶段团队冲刺(十)
  5. HDU(1175),连连看,BFS
  6. 路由复用器--gorilla/mux
  7. ES6函数参数的解构赋值,以及2种设置参数默认值方法的区别
  8. deepnode处理过的图片_微信图文排版用什么软件?文章图片大小不一样排版不齐怎么办?...
  9. 系统架构改进--多系统用户整合
  10. 为什么域名能够访问网站,而直接使用IP不可以
  11. exploit计算机术语,exploit
  12. 转帖 分享代码自动生成
  13. 美国计算机留学直博几年,美国读博士需要几年才能毕业?
  14. 集成/信息系统项目管理师学习笔记共享 (1)
  15. 不同进制之间相互转换
  16. react 组件渲染控制
  17. 解决QQ显示“无法访问个人文件夹”方法
  18. doPost请求的用法
  19. 模拟版图真有说的那么简单吗?
  20. 解决Connection closed by remote host

热门文章

  1. SOCKETS规范及应用-WINDOWS网络编程接口
  2. ppi 各代iphone_各代苹果对比,哪一款才是最适合你的手机
  3. OBS 基础 14 视频信息设置
  4. CSDN 编程竞赛二十七期题解
  5. ns-3 third.cc
  6. 使用H-lua框架制作魔兽争霸地图(4-物编-物品篇2)
  7. Mbps Mb M Kb如何换算
  8. 为什么说 ChatGPT 引爆第四次工业革命?
  9. js对象添加不可枚举属性
  10. Unity 使用Photon Server 联网开发(二)游戏同步+房间列表