【前沿重器】
全新栏目,那么栏目主要给大家分享各种大厂、顶会的论文和分享,从中抽取关键精华的部分和大家分享,和大家一起把握前沿技术。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。
往期回顾
文章来自:https://zhuanlan.zhihu.com/p/83487924。文章很长,内容很多,所以我还是希望分几篇来聊聊吧。
这次给大家分享的是阿里小蜜的数据量分级处理机制,针对不同的数据量,对各个技能进行针对性处理,而这种针对性处理又因为数据量分级形成了一定的标准化,标准化自然就会为迭代能力带来质的提升。
常规对话系统的架构
对话系统本身比较通用的架构是这样的:
![](https://i-blog.csdnimg.cn/blog_migrate/b3ed214128c0f2ee8a46e228b3e0e961.png)
用户的话经过NLU系统,能够完成用户对话内容的理解,根据用户对话的内容,更新聊天状态,这就是上面说的DST(Dialog state tracking),对话状态完成后可以根据这个状态制定对应的回复策略,这就是DP(dialog policy),在有这个策略后就可以生成聊天内容了这就是NLG。
对话内部的拆分明显会让整个结构更为可控,可拓展性也很简单。
数据量分级的出发点
对话系统的一个能力成为“技能”(skill),例如订飞机票火车票,查个百科,客服咨询等。一方面,技能本身有简单困难之分,简单的到天气、查时间,难的可以到客服、闲聊等,因为问题本身的难度导致很难采用很好的策略来处理;另一方面,数据匮乏是常态,客观的数据不足会导致复杂的方法用不了,而也有些时候其实可以通过简单正则之类其实可以快速满足一部分需求。基于这两个出发点,其实可以考虑根据数据量进行分级,通过数据量分级设计方案,满足不同维度和难度问题的需求。当然,这套方案主要针对的还是NLU步骤的。
具体方案
一张图能够清楚解释这个机制,然后来展开聊。
![](https://i-blog.csdnimg.cn/blog_migrate/a55fb248e971171c85d2e89d4cedbc13.png)
无样本
无样本是模型最难解的,但是通过规则之类的方式,能够快速而且精准地处理,例如天气技能:
![](https://i-blog.csdnimg.cn/blog_migrate/13e37ca9e9bed76940cdad17661aed48.png)
通过挖掘规则,构建类似正则表达式的方式,就能表达大量的句子,准度也非常高,别看不起规则,一条正则基本能够覆盖这个技能的需求,那其实我们根本没必要去用复杂的东西。
天气技能应该是一个比较简单通过规则的技能,这种技能其实对槽位识别的很高,
降级一下,有一些问题其实非常常规简单,可以通过向量检索的方式来处理,这个方案最常见于FAQ的对话场景,例如“怎么截屏”,这是一个非常小的问题,我们几乎不可能找到足量的数据训练,也没必要,毕竟占比非常低,这种问题其实可以通过构建索引然后配置标准问答来处理。下一章谈。
小样本
小样本一般每一类只有十来条数据,给常规模型来做,那是连的塞牙缝都不够。那是如何来做的呢,常规思路主要是这么几个:
数据增强。
上面提到的向量召回。
其他拓展优化方案。
好了一个一个说。
首先是数据增强,对于少但是有代表性的数据,就可以用数据增强的,生成一些基于句式的标准来让模型记住,然后通过构造一些相应的负样本来让模型知道那些事负类,例如有“深圳的天气”生成“北京的天气”,后来模型可能遇到“天”或者“气”就认为是天气了,那就整些负样本,如“天真无邪”,“三气周瑜”认为是负样本即可,告诉模型什么是正,在通过样本手段告诉什么是负,效果其实很好的。
向量召回的核心在于良好的语义相似度模型,而语义相似度这个东西其实不太依赖领域内样本,通过开放域样本来做然后领域内样本fine tuning的方式效果会不错,甚至都不用fine tuning。有了语义相似度模型,抽取中间的向量就可以做匹配了,配置标准的case,如“怎么截屏”进入索引如annoy,来了一个query“手机截屏快捷键”,也转化为向量,在annoy构造的索引向量空间里面找即可。
文章中还提到,利用memory机制强化文本表示,matrix transformation划分类边界,也可以提升分类的效果。
大样本
数据样本较多的话,就到了大家喜欢的模型环节,模型。文中提到的是一套预训练语言模型-蒸馏-多任务学习的架构,这套架构在项目逐渐成熟后可以考虑搭建。
简单的逻辑是这样的。
bert效果好且稳定,但是性能有限耗时很高,需要降级。
通过蒸馏手段学习简单模型降级,但效果可以逼近bert。
任务或者场景多了以后通过multitask方案进行适配。
小结
无样本、少样本总是让我们头疼的问题,这时候往往是八仙过海各显神通,在规范化以后,我们可以更加稳定快速地实现这些需求,而针对大样本,我们也可以从发挥稳定的textcnn升级为大模型蒸馏的模式,效果会有新的提升,而这一整体机制,让我们的流程规范化,降低开发成本,如果机制可以,少样本和无样本的任务甚至可以交给产品运营过来完成,这绝对是非常有用的。