一、概述
本文围绕下面这篇论文介绍一种新的基于BERT的对话管理系统BERT-DST(Dialogue State Tracking)。从标题强调的关键字”Scalable”可以看出,它是一种可伸缩的对话系统,所谓端到端,就是从用户对话输入到系统响应输出的这样一个过程。
在DST系统里,一个没有被解决的重要问题是关于动态实体(ontology,如电影,餐馆)和看不见的slots值的可伸缩性,slots是一种session级别的全局变量,存在于每个对话任务的所有的turns里,slot是一个key-value pair。在架构设计时,需要考虑如何设置slots以及什么时候可以获得slots的值来推动对话的进行,如果没有slots的值,在后面查询数据库或者跟其它系统进行交互时,就会因为缺少限定条件而无法获得期望的结果或者是不正确的结果。另外如果缺少了上下文,获得的slots的值也是不准确的。对话状态管理模块并不知道slots值,除了如none和dontcare这类可以被忽略外,在训练时其它slots的值可能是不可见的,换句话说,这些训练需要的slots值并没有被融入到BERT的线性转换矩阵中。
关于如何在对话上下文里找到slots值,之前的做法是经常依赖于n-gram的遍历或者slot tagger的输出,而这样做是不够的,或者可能因此造成错误传播。BERT-DST是从对话上下文里抽取slots的值,它会首先判断一个slot值是否是一个span,如果是span,那么会基于除[CLS]之外的token进行线性转换。BERT作为对话上下文encoder,它的上下文化或情景化的语言表示(contextualized language representations)适合DST去从语义上下文里识别到这些slots的值。此外,利用跨所有slots的encoder参数共享有两个好处:
-参数数量不会随着实体线性增长
-语言表示知识能够在slots之间转移
BERT-DST不需要产生备选slots值,而是根据对话上下文来预测slots值,DST的关键模块是对话上下文编码模块,它可以产生有效的上下文表示来提取slots值,从试验结果看,DST使用了slots值的dropout技术和跨所有s