本文介绍清华大学语音处理与机器智能实验室(Speech Processing and Machine Intelligence, SPMI)与中国移动研究院的联合工作 — JSA-TOD:一种基于联合随机近似(JSA)算法的新型半监督对话系统。该系统在Multi-WOZ2.1数据集上显著超越广泛使用的变分算法,仅利用20%标注即接近全监督效果。该工作已被对话领域的国际会议SIGDIAL2022录用,论文的作者是蔡予诚、刘红、欧智坚、黄毅、冯俊兰。
论文链接:
http://oa.ee.tsinghua.edu.cn/~ouzhijian/pdf/JSA_TOD_camera.pdf
(扫码看论文)
任务型对话系统
本文重点研究任务型对话系统。不同于闲聊型对话系统,任务型对话系统的用途是,帮助用户完成特定任务,例如预定旅馆、故障报修、电商咨询等。一个任务型对话系统的工作流程通常是,在收到当前轮用户话语之后,根据之前的对话历史,理解用户话语(Natural Language Understanding)、跟踪对话状态 (Dialogue State Tracking)、查询与任务相关的知识库 (Knowledge Base)、决定系统动作 (System Act) 并生成回复(Natural Language Generation)给用户,等待用户下一句,由此反复。
近年来在自然语言处理中,基于神经网络的生成式模型日益强大,对话系统研究的一个趋势是生成式对话系统。生成式对话系统利用预训练语言模型(如GPT2)把对话系统的工作流程建模为一个序列生成过程。在标注了对话状态、系统动作标签的对话数据上,对预训练语言模型进行调优(finetuning),既简化了对话系统的构建,又借助了预训练语言模型的强大生成能力,从而超越了传统的模块化对话系统,具有更好的性能。
半监督任务型对话系统
目前各类对话系统都严重依赖大量人工标注下有监督学习,然而人工标注费时费力,成为制约对话系统跨领域规模化应用的瓶颈。一个重要的研究思路是半监督学习,其本质是协同利用标注数据和无标数据,或者说协同进行有监督学习和无监督学习。半监督学习的研究从上世纪就开始,至今依然生命力盎然,涌现出各类方法,包括预训练 (pre-training)、自训练 (self-training,又常称为伪标签,pseudo-labeling)、隐变量建模(latent-variable modeling)等等。GPT是一个经典预训练方法,其原文(Improving Language Understanding by Generative Pre-Training)明确表示,"Our work broadly falls under the category of semi-supervised learning for natural language." 本文贡献在于推进基于隐变量模型的半监督方法(借助联合随机近似的学习算法),并展示了基于隐变量模型的半监督方法和基于预训练的半监督方法两者合力带来的显著效果。
若无标数据记为x,基于隐变量模型的半监督方法的基本思想是,把无标数据背后的未标的变量视为隐变量z,建立生成式概率模型(简称为生成模型)p(x, z),从而可以在无标数据上进行无监督学习。变分方法会引入推断模型q(z|x),来近似隐变量模型的真实后验分布。在对话系统中,我们把对话状态和系统动作视为隐变量,这样就自然可以运用基于隐变量的半监督方法来构建对话系统,这时相应的生成模型与推断模型,如下图所示(详见论文)。
联合随机近似算法(JSA)
联合随机近似(Joint Stochastic Approximation,JSA)算法,发表于人工智能顶会Uncertainty in Artificial Intelligence(UAI)2020,是对隐变量概率模型的一种先进的学习算法,特别适用于离散隐变量概率模型的最大似然学习,突破了经典的EM(Expectation-Maximization)算法及其后继系列算法的局限,能应对更复杂的隐变量概率模型的学习。
直觉上看,EM算法包括如下两步的迭代:
对无标数据x,通过生成模型本身的后验分布p(z|x),推断出未知的z;
然后将(x, z)视为有标数据,相当于进行有监督学习来更新生成模型的参数;
如此往复迭代更新。这要求生成模型的后验分布p(z|x)的计算是可行的,但现实问题中的很多生成模型的后验分布的计算是不可行(intractable)的,这时需要另辟蹊径。JSA算法引入推断模型q(z|x)来近似生成模型的真实后验分布,这点上JSA方法与变分方法相似。直观来看,JSA算法背后的简单机理是PARO(propose,accept or reject, optimize),包括如下三步的迭代:
首先,用当前推断模型去推断出未知的z;
然后,依据蒙特卡洛采样原理,以特定概率(结合当前生成模型和推断模型计算出的概率)去接受或拒绝刚推断出的新z;
最后,将(x, z)视为有标数据,相当于进行有监督学习来更新生成模型的参数,同时也更新推断模型的参数。
如此往复迭代更新。
基于JSA的半监督对话系统(JSA-TOD)
如上述把对话状态和系统动作视为隐变量,建立起含隐变量的对话模型,就可以运用JSA方法在无标数据上进行无监督训练,结合(少量)有标数据上的有监督学习,便实现了半监督对话系统JSA-TOD。
本文实验中的生成模型和推断模型以GPT2为骨架,如下图所示,在预训练GPT2基础上进一步训练(finetuning),这样也自然地结合了基于隐变量模型的半监督方法和基于预训练的半监督方法。不难看出,JSA-TOD方法并不局限于GPT2为骨架。
实验结果
本文在任务型对话研究中广泛使用的MultiWOZ2.1数据集上进行了实验。从Table 1可以看出,JSA方法的性能大幅显著好于之前的变分方法(Variational),仅利用20%标注的JSA半监督方法达到了接近100%全监督的效果。
消融分析
本文还做了比较多的消融实验来帮助分析JSA方法比变分方法之所以好的背后道理。Table 3展示了推断模型的性能,其中Supervised-only表示只在有标数据上有监督训练的推断模型。从Table 3可以看出,JSA方法下半监督训练的推断模型对隐变量的预测效果,相比Supervised-only有明显提高,而变分方法下半监督训练的推断模型则效果差多了。
Figure 3画出了训练过程中推断模型的梯度的范数。从Figure 3可以看出,相比JSA方法,变分方法下梯度明显波动更加剧烈,梯度的方差更大,这是变分方法用于离散隐变量模型学习时的一个通病。
进一步,本文考察了在4个对话数据集(MSRE2E、Frames、TaskMaster、SchemaGuided)先微调GPT2模型得到预训练模型(pretrained models),然后再按Supervised-only、Semi-supervised JSA来进行实验。Table 4的结果表明了基于隐变量模型的半监督方法和基于预训练的半监督方法两者合力带来的显著效果。
展望
本文借助隐变量模型的一种先进的学习算法JSA,构建了半监督对话系统JSA-TOD,在Multi-WOZ2.1数据集上大幅好于广泛使用的变分半监督方法,显著减少对话系统的标注开销。鉴于离散隐变量概率模型在自然语言处理任务中广泛使用,我们期待本文工作能够鼓励更多的JSA方法的应用创新。
JSA-TOD的代码已在GitHub上开源,欢迎大家使用!
代码开源链接:
https://github.com/cycrab/JSA-TOD