首席说|NLP场景应用中的可解释性
01
什么是NLP的可解释性
NLP的可解释性,是NLP未来发展最重要的方向之一。
可解释性有两方面含义,一是NLP的输出结果符合业务的预期,是确定的结果,而不是一堆人看不懂的概率值。二是NLP的输出结果与业务知识之间有明确的因果关系,因为什么样的业务知识,所以得到这样的结果。
可解释性,是指NLP系统输出的结果,应该符合基本的语言学规律,符合领域知识的预期,可以用语言学的术语和业务领域的语言进行解释,而不是让算法给出一堆杂乱无章的概率数据,让用户费尽洪荒之力从沙子里找金子,并从数据中解析出其业务价值。
可解释性是存在于场景应用和NLP技术之间的最大的鸿沟。包括当前流行的深度学习算法,在场景应用下遇到的最大的尴尬也是可解释性差,即使业务人员看到一个明显的错误,也很难调整模型以更正。经常能听到这样的对话:
可解释性也是场景应用和实验室环境之间的最大的区别。实验室环境下,有标准答案可以参考,处理对象是静态的,NLP技术的输出结果只要和标准答案进行比对,算出来得分就行,无需解释结果为什么是这样的。近几年各大AI公司刷榜的阅读理解评测(如斯坦福问答数据集SQuAD),其实都是实验室环境下的探索。而场景应用下,没有标准答案可以参考,处理对象是动态的,不断有新数据出现,这时候实验室得分已没有任何意义,需要的是明确的因果判断,对了能知道如何保持,错了能知道如何改进。
NLP场景应用中的可解释性,可以直观的表述为,业务人员可以看懂的、符合业务知识预期的NLP处理结果。
02
NLP可解释性,从哪里来?
1.必须基于语言特征
当前对可解释性的工作,主要集中在深度学习模型的可视化上,希望打开深度学习的黑盒子,理解、解释计算的过程。我们认为,这可能没有触及到语言的本质,如果模型的输入是一个不可解释的巨大的向量的话,整个处理过程只是在做向量的各种变换,以求得与预训练模型的最优匹配解,并没有在语言方面有太多的增益。
NLP的可解释性,应该与我们的语言直觉相一致,从模型、算法的输入,到每个处理环节,再到最终的输出,都可以用基本的语言特征和语言结构来解释。比如用词向量计算词语关联,计算"高兴"的关联词语时,给出"兴奋"、"嗨起来"这样的结果,是符合语言知识的,但如果给出"伤心"这样的结果,即使概率值再高,也是不合理的、不可解释的,因为"伤心"与"高兴"是反义词,虽然他们的上下文环境经常很类似。更进一步来说,"不伤心"这样的搭配,"不"作为否定词,在词向量中如何表示,是否和"高兴"有关联,这是基本常识的对错问题,而不仅仅是概率大小的解释问题。
2.必须与领域知识有明确的因果关系
可解释性和应用场景强相关。应用场景的知识,决定着NLP的需求边界、任务类型、结果预期等内容,与场景知识之间有明确的因果关系,才是可解释的。
因果关系的简单表示就是"因为A,所以B",比如在快递客服场景下,对这样的一段文字"等了2个小时还没有来取件",因为其中有"等待时间长"(从"等了2个小时"这样的文字中得到)和"没有取件"这样的概念,所以这段文字的投诉分类是"取件延误"。与因果关系容易混淆的是相关性(或相似性),比如数据中发现,购买尿布的用户更容易购买啤酒,这说明"啤酒与尿布"之间有相关性,但是"啤酒与尿布"之间没有因果关系。目前常用的机器学习算法(包括深度学习),输出的都是相关性,对这些相关性所体现的领域知识进行解释,是当前可解释性的主流。但这种解释面临着"千人千面"的困境,在同样的应用场景下,针对不同的训练语料、采取不同的算法,其给出的结果差异很大,一致性很难保证。
NLP的可解释性,最低的要求是,领域知识与输出结果之间的因果关系是一致的、稳定的。比如在快递客服场景中,针对"取件延误"的投诉分类,不管采用什么算法,也不管文字表达的多样性多么复杂(如"取件的人怎么还不来啊"、"2个小时都过了还没有来取件"等),只要文字表达的意义一样,都包含"等待时间长""没有取件"这样的概念,都应该给出一致的结果("取件延误")。
3.应该追求处理结果的可解释性,而非NLP算法过程的可解释性
当前的可解释性,更多的是对算法过程的去魅,希望通过揭示算法过程中的逻辑性,来证明输出结果的合理性。解释的重点主要在于中间过程所产生的特征的相关性、具体参数值对结果的影响等。这些工作对算法的改进无疑有帮助,但对不懂算法的业务人员来说,要从动辄上亿的参数中,找到与具体业务知识的因果性或相关性,真的只能是"雾里看花"了。
应该将重点放到对输出结果的可解释性,承认算法过程是个黑盒子,对输出结果做好统筹规划。通过对训练语料的控制,尽可能的缩小每个模型的覆盖范围,把不确定性限制在每个模型内部。换句话说,不能追求对大模型的拟合过程和具体参数值的解释,而应该将一个问题,拆分成多个小模型来表示,提高小模型与领域知识之间的因果关系。
03
泰岳语义工厂,可解释的NLP服务
NLP的可解释性,目前还没有成熟的方法可以实现,只能在具体的应用场景下,面对具体的输入数据,因地制宜,选择正确的策略来面对。实际应用场景中,经典的符号系统、形式化规则的可解释性往往表现更好,而大多数人迷恋的深度学习,则因为可解释性差而经常被诟病。
泰岳语义工厂,在场景化的自然语言处理上,已经耕耘了8年时间,积累了丰富的场景化的技术和经验,在NLP可解释性,积累了丰富的实践经验,已经在16个行业的上百个典型客户实现了落地应用。
1.语义与计算的结合,提高NLP技术的可解释性
泰岳语义工厂,将符号化语义表示与深度学习技术进行结合,形成了自主知识产权的智慧语义认知技术。智慧语义认知技术,能有效地识别多种语言结构,实现同一意思、不同结构的归一化处理;同时对语言结构的递归嵌套处理,也表现优异。
下文的例子,包含着4层语言结构的嵌套关系。
_ 例句:_
_ 含有从燃料电池排出的氢废气的阳极废气向系统外排出的气体流路贯穿了整个通道。_
_ 第一层: 核心句_
. .....气体流路贯穿了整个通道
_ 第二层: "气体"的限定语也是一个句子_
. .....阳极废气向系统外排出的气体[流路]
_ 第三层: "阳极废气"的限定语也是一个句子_
_ 含有......氢废气的阳极废气_
_ 第四层: "氢废气"的限定语也是一个句子_
_ 从燃料电池排出的氢废气_
泰岳语义工厂对这种具有复杂结构的句子,除了利用词语组合、概率统计等表层特征和方法,还加入了远距离的语义约束计算,以及句子序列的切分和层级处理。目前我们已经可以识别出3层以上语言结构的递归嵌套。对复杂语言结构的有效处理,不仅可以提升NLP在归一化、递归处理等方面的能力,而且可以把包含在复杂语言现象下的语言特征,像剥洋葱一样,一层层打开,这将大大增强NLP的可解释性。
2.本体论的领域知识建模,提高因果关系的可解释性
泰岳语义工厂所使用的场景化NLP开发平台----DINFO- OEC,提供一个领域知识建模的IDE集成环境,在本体论的指导下,支持两种类型领域模型。一是支持场景化业务建模,可通过概念规则,来构建形式化的业务规则,二是通过数据标注,指定机器学习(包括深度学习)算法,来训练机器学习模型。
建模工具的价值在于,将服务于业务人员的领域知识的表示,与服务于NLP算法人员的算法、语言资源等完全隔离,让业务人员聚焦在业务知识的因果关系上,从而提高应用的可解释性。业务人员只需要对业务知识进行分类,对业务规则中的因果关系进行形式化描述,即可完成建模。建模过程中,可以使用预定义概念资源来定义业务知识,一个预定义概念的引用,本质上是对底层的NLP算法模块的调用,对其输出结果的使用,建模人员不用考虑其背后复杂的NLP算法,建模工具已经对其做了封装。
对下面的一段例子。业务人员只需要关注客服投诉分类,是应该分到"信用卡->额度->临时提额",还是"信用卡->额度不够",而不需要关心用到的NLP算法,如命名实体识别、情绪识别等。
3.面向场景的应用开发框架,通过结果驱动过程,提高应用输出的可解释性
泰岳语义工厂提供面向场景的应用开发框架,与NLP相关的所有工作,我们均已打包到框架中。与算法相关的,如基础的语义资源、文本数据的标注、算法的参数调优、深度学习预训练模型等;与应用场景相关的,如业务模型的构建、算法的迁移、效果的评估等;与运行部署相关的,如Spark内存计算、TensorFlow环境配置、服务器资源的购置等。我们致力于输出最专业、最全面、最便捷、性价比最高的NLP服务。
面向场景的应用开发框架的价值在于,让应用开发者聚焦在应用逻辑的开发上,而无需关注NLP相关的数据标注、调参,训练等工作。以本文开始的业务人员与NLP开发人员的对话为例,在场景应用开发框架下,应用开发人员不用关心深度学习模型是否有2亿参数,而只需要关心如何把"态度不好"和"额度"的模型分开,给两个模型的训练数据更加细分,以增加模型的区分度。这两类区分度提高了,输出结果不容易混淆了,自然而然,结果的可解释性也就提高了。
可解释性,是NLP场景应用成功的关键。泰岳语义工厂,可以助力NLP场景应用提高可解释性。
作者暂无likerid, 赞赏暂由本网站代持,当作者有likerid后会全部转账给作者(我们会尽力而为)。Tips: Until now, everytime you want to store your article, we will help you store it in Filecoin network. In the future, you can store it in Filecoin network using your own filecoin.
Support author:
Author's Filecoin address:
Or you can use Likecoin to support author: