开发者学堂课程【阿里小蜜中的机器阅读技术:学术到工业的挑战】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/43/detail/964
学术到工业的挑战
内容介绍:
一、工业应用需解决的问题
二、工业应用总结
三、从学术到工业的三个挑战
一、工业应用需解决的问题
第三小节学术到工业的挑战与解法是本次分享的一个重点。首先在此先总结一下,之前介绍的是机器阅读理解学术研究的一个特点,在前面的那张各种模型图里列到的都是一种基于神经网络的、有多层的
端到端的一个解决方案,它要解决的一个问题或者面向的领域相对于比较简单,是基于百科的一些简单的段落和比较简单的实体性答案,在其中它也涉及到一些通常来说比较正规不太口语化的问答,而且也有一定的标注数据,SQL 数据集已经达到了10万的数据量级,同时整个评测更关注于数据模型的最终的准确性,而对它的复杂度关注比较少。
在工业应用中要去解决什么样的问题?首先是数据问题。如下图一个著名的曲线:
数据驱动的机器学习革命
上图是由著名的 AI 学者安卓 NG 提出的,其中它有两个维度,纵轴是关于模型的性能,横轴是关于模型所需要的数据量,在此要思考的是为什么深度学习近几年来会获得比传统的继续学习更好的性能?主要是因为在同样的数据上,在随着数据量不断的增加,当达到了一定的规模后,深度学习的学习能力往往会比传统的统计机器学习的学习能力更好,所以它能达到一个更好的性能。
而随着数据的再度的增加,其中也会表现为不同的 AI 产品之间的性能差距的一个根本原因,也就是说其背后的数据积累程度不一样,越多的数据往往会代表着更好的一个学习效果。由此可见,数据对于模型学习来说是非常重要的一环。
但是此处存在一个问题:
因为学术创新它往往是比较简单的,而在工业应用里,比如说之前最开始提到的基于活动来去做一个阅读问答的场景,去收集大量的问题以及它相关的答案,其构建成本是较高的。
另外一个问题也是工业场景的复杂性的一个表现,
如下图:
单一文档 VS 多文档/长文档
如上图可以看到在最左边的是 score 数据集用到的数据,即维基百科,维基百科通常在其中只是一篇文章,针对里面各个段落,其内容不会特别的长。但是在真实情况中,比如活动规则里,它往往会有500~1000词的规模,在政府办事或者说税务法规等场景中,往往会有多篇的文章,在问答中需要被阅读、需要被理解,在多篇文章的阅读过程中,通常会超过500词,甚至有几千词的文档规模,由此,单一段落与多文档/长文档的一个差异,也是造成从学术到工业的 gap 的原因。接下来是介绍模型的核心计算单元,如下图:
在整个机器阅读理解相关的模型中,其主要有两类的结构,第一个是在深度学习中最常见的 RN 结构,其擅长处理序列级的任务;还有一个的是基于transformer,其虽然不是序列的,但是需要去对整个输入的级别,做不同的 attention 或者点击的一些操作。
在此过程中其具体的复杂度,比如对于 rn 结构来说,其计算的复杂度往往取决于整个输入的序列,因为当前的序列或者说序列中的某一个点是依赖于前一个序列的,因此其是线性结构,文章越长其处理的会越慢,而对于 transformer 结构来说,其虽然没有一个创新的问题,但是因为其本身有一个基于序列长度n平方级的一个计算,此计算会导致整个计算量随着文章的长度变成平方级的增长,而且其特别依赖于整个transformer 结构的深度,即文章越长、深度越深,所需要的计算资源就越多。
基于之前的两中计算单元,如下具体不同模型的表现:
复杂性的背后是对性能的忽视
首先是 BiDAF 如上图所示,当其文章超过100/200的长度时,基本上可以看到其整个的响应时间已经达到了一秒钟的时长,而对于 DrQA 来说,其本身是以一个高效的机械图模型来提出来的,当整个文章超过了1000以上时,其自身也是需要超过100毫秒的时间来去做整个文章的阅读。在图上有一条额外画出的线(10毫秒),10毫秒意味着双11当天整个天猫的交易峰值达到了49.1万笔/秒,在海量的实时交易下面,店小蜜承接了整体天猫商家客服咨询量的67%,在2/3的服务占比的情况下,店小蜜其本身承接的服务也是海量的。而在此处选取了阿里小蜜其作为一种平台服务,一分钟内最高的同时服务量已经超过8.3万,在整个一个高性能、高并发的在线环境中,往往要求把模型做到10毫秒以内,才不至于去影响整个链路的响应时间,或者说不会因为过程的响应时间而拖垮整个链路。在此再回到最左边处,仅仅只有绿色的一条线,就是利用了膨胀卷机来做阅读理解。
此模型在大规模、长序列的文章上有一定的性能保障,在实践情况下也遗憾的发现其与其他模型之间的一个准确率差距是比较明显的。除了对性能的,真实场景远不止前面提到的像数据集那样简简单单的去做一些实体替换,或者说反义词的替换来构建用户问题。
如下图列出几种典型的问题:
真实问题复杂多样
比如“用户会问领的卷在哪里?”可以看到这是一种错别字现象。“是啥意思啊?”其本身是需要去结合用户的上下文来去对问题的回答。还有一个问题是“津贴领多了怎么办?”一般的活动规则其实不会特别全面的把所有问题都覆盖到,处理超纲性问题要涉及一些简单的推理,比如说“昨天7折买的,能参加今天6折活动吗?”这也意味着真实的场景远远要比学术界比较单一、比较简单的问题更为复杂。
二、工业应用总结
学术研究 VS 工业应用
在此整体对工业应用做一个总结,首先其应该是一个系统性工程,面向的场景会更加复杂,用户的问题更加多不一样,而因其场景复杂性和真实问题的多样性也导致了其数据标注的困难,同时实际中不单单要去考虑其效果,对于整个模型的性能也要做一定的权衡。
三、从学术到工业的三个挑战
三个挑战
接入门槛高,领域扩展难
数据复杂,速度和效果难平衡
深度模型黑盒化,可控性差
首先机器阅读理解其本身问题比较难,接入的门槛高、领域空域扩展相对来比较难;另外是其整个数据比较复杂,速度与效果难以得到很好的平衡;第三,其本身是一个多层的深度网络,它作为一个深度模型,有一些黑盒化,可控性比较差,无法很好的兼顾或者很好的处理特别复杂、特别多样的用户问题场景,没有规则那么可控。