心法利器
本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。
往期回顾
作为承办方之一,我有幸参与到了全球人工智能技术创新大赛的筹备中,这次也有幸能来到决赛现场,默默地怀着膜拜的心态听决赛中各位大佬的报告,绝对可以说是获益巨大了,报告刚结束,我就已经迫不及待地想总结一下自己的感受和一些想法,也希望在阅读的而大家能有所帮助吧。
事先说明,有关技术细节相关,我还不太清楚举办方和技术输出方(即选手)是否同意发布,因此我不会展开讲技术细节,希望直接学方案的可以结束阅读了额,这篇文章,我更多的是想说一些思想和评价。技术方面我可能会整理自己的思考然后以专题形式发出来,也就不和比赛本身耦合了。
大概的目录如下:
bert是否限制大家的思维
脱敏问题的引入。
问题的剖析和思考。
解决方案的评价和诊断。
性能问题的引入。
bert是否限制大家的思维
从各个任务的完成情况来看,以bert为代表的预训练语言模型的效果已经得到了广泛的承认,所以毫无意外的会在比赛中被广泛应用,比赛中亦然,前N名中就没什么人不用这个东西,暴力的还会采取不同的训练策略训练不同的大模型来完成集成,总之效果是好的,这点没什么好说的,但这里想聊的一点是——不希望大家被bert限制。
我们可以承认bert是一个好东西,我们可以通过很多手段去让他学得更好以让他更好地解决问题,但现实情况是我们是否还应该多去想想,大规模预训练语言模型是不是唯一的方法,一方面,很自然的是,在此技术基础上我们还可以做什么,另一方面,我们能否剖析这个方法的优缺点,看他能解决什么而不能解决什么,不能解决的问题可以用什么其他方式来解决,这才能使得问题被进一步充分解决,这个提升可能就不是千分点上了。
极端的,反思一下,有一些所谓的trick到底是不是真的有效,千分点的提升是否存在和数据集有关的随机性,换个数据,甚至换个随机种子,是不是就会不一样,至少我不太希望这样,毕竟到了这个程度就成了个运气游戏了,我们都有个共同的愿望,那就是希望能有一些新东西出来,能解决更多问题,能更好地解决问题。
所以,bert的使用是否限制大家的思维,我的回答一定程度上说是的,当然欢迎大家讨论。
脱敏问题的引入
NLP数据脱敏本身其实并非独创,记得很久以前的一次“达观杯”的文本分类任务就已经用过脱敏数据了,会给选手的分析带去一些困难,但是个人角度看其实利大于弊的,来谈几个我理解的优点吧(不代表官方观点哈~):
避免一些客观存在但是并不适合公开的信息被发布,如黄反、个人信息等。
跳出语言类型本身,让选手能提出更加通用的模型方案。
加大作弊成本。
加大难度和区分度。
因此脱敏数据的引入确实是对我们探索问题是有很大收益的。
问题的剖析和思考
在比赛的答辩过程,选手们都能花出时间对原始数据进行分析,这个和其他算法大赛其实是类似的,然而NLP有着他自己所固有的一些特点,后续的方案也是依赖模型来做有效特征的抽取,结合bert本身的思想固话,问题理解、数据探索的分析流程就流于形式了,但实际上我们仍然有很多工作可以做而且做完之后我们就可以提出一些可能有效的方案了。
对了,先提一下,别拿脱敏来做借口,这个脱不脱敏都可以做。
蚂蚁金服在前几年也举办了一个语义相似度比赛,当时可就没有bert之类的预训练语言模型,选手们会花很多心思在特征提取上,来看这篇文章:https://blog.csdn.net/u014732537/article/details/81038260,作者经过数据探索提出了很多统计特征,尽管这只是很简单的统计特征,但是结合机器学习仍然产生了非常强大的效果。
现在虽说我们有bert了,指标蹭蹭的上去了,但是又有多少人去分析过一个点——bert相比这个的人工特征的方法到底是全面提升完全覆盖,还是各有优点和擅长点?
因此回到问题,虽说有bert帮我们做很多事情,我们也拿到了很多很好的效果,但是在效果提升出现瓶颈的时候,请回到问题和数据上,重新挖掘优化点和增长点,魔改固然还有提升,但不代表持续挖掘增长点这个事不重要。
解决方案的评价和诊断
今天在听大家的报告的时候,有几个组提出几个直击心灵的典型case,并且能给出方案针对性解决(印象比较深的是赛道1和赛道3的第一名都有),这两个解决方案分别为他们带来了巨大收益,甚至成了制胜的关键,所谓高手对决有的时候就是差这一点胜负手,我们应该反思的是,为什么他们能想得到能看得到,理由很简单,他们真的有去看数据,去诊断和分析问题。
思路很简单。方案1出来了,我们要看指标,看bad case在哪,看能不能总结问题,算法竞赛可能会不允许加规则但肯定允许加特征,有的时候根据问题提取一个特征加进去说不定问题就解了;方案2又出来了,先看一下和方案1有什么差别,优缺点在哪,预期解决的问题解决了没,还有什么问题没有解决。而不是四个字“效果不好”就能解释完的,好在哪,不好在哪,哪里有差距,这就和高中看错题本是一样的,总结分析完以后改进,这个迭代节奏就快了,这比炼丹高效多了,而且模型训练现在动不动就1天,这一天闲的就可以分析,查找的其实就是突破点。
性能问题的引入
我的视角看,后续性能问题会在比赛中被越来越多的被提到,这个压力甚至可能向科研论文传递。压力来源很简单,bert这个东西只能等的太大,直接照搬上线势必影响在线的性能,矛盾就来了,因此性能问题在比赛中被提及就会是一个趋势了。
方案上,其实现在已经算成熟的,比赛中大家提的比较多的是onnx,而现实应用中也有人用到tvm,具体哪个好见仁见智吧。在本次比赛和我的经验看来,基本上用了就能满足耗时需求,但是内存需求这个就不太清楚啦~
小结
有一说一,比赛中各位大佬提出的方法确实让我收获很大,小到一些预训练的trick(这些trick甚至可以在小模型里面用),达到一些方法和训练策略的思考,我都有一一记下,但是因为上面面我说到的原因所以我不展开了,剩下就祈祷各位大佬赶紧在各个平台上分享方案吧。至于我,也需要继续沉淀学习,新生代的水平越来越强,我也不能落下了。