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