文章目录
介绍
本门课程是2020年李宏毅老师新课:Deep Learning for Human Language Processing(深度学习与人类语言处理)
课程网站
B站视频
公式输入请参考:在线Latex公式
Dialogue State Tracking aka DST,是 task-oriented dialogue的核心模块。task-oriented dialogue比较复杂包含很多模块,大体构架如下:
Input: several sequences, Output: a sequence
以前State Tracker前面要接NLU(nature language understanding)模块。现在进化了,直接吃input,变成端到端模型了
插曲
这个比赛17年之前叫:Dialog State Tracking Challenge (DSTC)
具体来说DST就是做对话的摘要,例如:
State简介
State通常是由Key和Value组成,下图是Dialogue State,可以表示为A set of (key, value)
以上图为例,则可以认为冒号前边是Key,后边是Value
Key通常是事先定义好的,Value则是Key的一组取值,通常是离散的,例如星期几?当然也有取值范围,例如就餐人数,到达时间等。
早期Key的个数比较少的时候,没有对Key进行划分,后来Key的个数比较多了以后,就再把Key分为两个部分:Domain和Slot
例如上面的的例子中:
Domain | Slot | Value |
---|---|---|
hotel | price range | moderate |
hotel | internet | yes / no |
restaurant | price range | moderate |
Domain意味着主题,相同则主体相同,Slot则表示主体的某个属性,不同主体属性相同,取值范围也就一样。不同属性,取值范围通常也不同。
DST数学描述
DST可以表示为a sequence of sentences
S
1
U
1
S
2
U
2
⋮
S
T
U
T
\begin{matrix} S_1\\ U_1\\ S_2\\ U_2\\ \vdots\\ S_T\\ U_T\end{matrix}
S1U1S2U2⋮STUT
What the user and agent have said
S: agent, U: user
Key
k
k
k include domain and slot
k
e
y
1
:
{
v
1
1
,
v
2
1
,
⋯
,
v
n
1
1
}
k
e
y
2
:
{
v
1
2
,
v
2
2
,
⋯
,
v
n
2
2
}
k
e
y
3
:
{
v
1
3
,
v
2
3
,
⋯
,
v
n
3
3
}
\begin{matrix} key_1:\{v_1^1,v_2^1,\cdots,v_{n_1}^1\}\\ key_2:\{v_1^2,v_2^2,\cdots,v_{n_2}^2\}\\ key_3:\{v_1^3,v_2^3,\cdots,v_{n_3}^3\}\end{matrix}
key1:{v11,v21,⋯,vn11}key2:{v12,v22,⋯,vn22}key3:{v13,v23,⋯,vn33}
DST就是要:Select the correct value for each key
Corpus
MultiWOZ 2.0
[Budzianowski, et al., EMNLP’18]Multi-domain,有7个,但是有2个domain数据比较少,通常不用
WOZ的由来:绿野仙踪Wizard of OZ,这个故事中的巫师是由人来控制的。
引申到计算机领域就是一种收集数据的方式
例如这个数据集就是找两个人,让他们分别扮演两个计算机,一个是订票人,一个是订票系统,他们之间的对话就是这个数据集的来源。
Schema-Guided Dialogue (SGD)
[Rastogi, et al., AAAI’20] 最新的数据集,slot很多
这个数据集的生成方式用了部分AI:先用simulator根据规则生成一些关键字,然后按template,生成句子,这两个步骤是机器完成的;然后再由人把机器生成的句子进行改写,使得句子更加接近人类语言。
CrossWOZ
[Zhu, et al., TACL’20],这个是一个中文的corpus
挑战
Infinite values
Some slots have almost infinite possible values (e.g. leave time, phone number)
有些模型将这些无穷取值利用近似的方法来模拟,例如时间,每隔10分钟设置一个点。
但是类似电话号码,就很难穷举,因此有人想到,用QA的方法来解决这个问题:
把QA里面的knowledge source替换为上面的数学表达,也就是Dialogue History,然后把question替换为想要知道的slot,例如我们想要知道电话号码,就把question替换为What is the phonenumber。模型就会把对话中人念电话号码那段截取出来,当做SQuADS来解。
New Service
通常我们需要在系统里面加新的Key的时候非常方便,例如:
上面是我们现有的数据,提问可能是:
What is the destination of train?
假如我们要加一个Taxi的Key,提问:
What is the destination of taxi?
将DST当做阅读理解或者说QA来解的模型有:
TRADE
TRAnsferable Dialogue statE generator[Wu, et al., ACL’19]
左边是文章,也就是dialogue history,是一个BiLSTM的结构。右边是question,也就是DST的Key。
可以看到上图中右边吃Domains和Slots,每个值都是一个向量,可以和模型一起训练,也可以是预训练向量,例如:GloVe。把Domains和Slots concat起来丢进模型的State Generator(RNN),State Generator和左边dialogue history的embedding做attention,得到一个Slot Gate,里面有三个形态(PTR代表要从dialogue history中抽取一段),然后得到一个word distribution,然后生成一个word sequence,就是最后的DST的Value。
下面是原文将Slot的embedding做相关性可视化的结果,可以看到红框中的Slot有比较相似的embedding。
这个文章中还有一个很有意思的事情是:Zero Shot
Zero Shot的意思是五个domain只训练其他四个,然后在最后一个上测试,可以看到Taxi这个domain上还不错,Joint和Slot是两种Evaluate metric,Joint是所有的key value都答对才算正确,Slot貌似部分Key答对就算对。
Taxi之所以能弄好,估计是火车那个domain包含的key有涵盖taxi的key
这里还有一个和Zero Shot相关的操作:Embedding from Description [Rastogi, et al., AAAI’20]
假如说我们的Key的domain和slot有相关的描述:
(上图中的Service相当于Domain)那么这个时候我们可以把这些描述丢进类似BERT的预训练模型中去,那么得到的embedding表示再丢DST里面,这个时候如果一个新的Domain进来,虽然DST不认识或者没见过这个Domain,但是Domain的描述经过预训练模型后,由于有相似性,那么DST就会有机会直接学会如何回答相应的Value。
Slot Carryover Prediction
[Gao, et al., SIGDIAL’19]
这个模型加了一个分类器,每次对话前都判断用户提问是否改变了条件,例如用户开始就说要定一个四星酒店,那么后续步骤中这个四星酒店的条件就固定下来,不变,不用每次都全部调用QA模型进行回答。
DST QA
[Zhou, et al., NeurIPS Workshop’19]
这个模型就是典型的把DST当做QA来做,这里的一个创新点就是把Key (domain, slot)看做是有关联的,例如预订酒店,那么如果打车目的地可能就是这个酒店。考虑Key直接关系的部分在模型图中右下角,不展开。
SimpleTOD
TOD是Text to Dialogue的缩写,就是直接把Key当做Text丢GPT-2,然后预测Value,整个思路也不是用QA模型,直接当做LM来玩。
结果在MultiWOZ 2.1上拿了SOTA:
看了一下文章的例子:
就是抽Key Value
Reference
• Shuyang Gao, Abhishek Sethi, Sanchit Agarwal, Tagyoung Chung, Dilek HakkaniTur, Dialog State Tracking: A Neural Reading Comprehension Approach, SIGDIAL, 2019
• Ehsan Hosseini-Asl, Bryan McCann, Chien-Sheng Wu, Semih Yavuz, Richard Socher, A Simple Language Model for Task-Oriented Dialogue, arXiv, 2020
• Chien-Sheng Wu, Andrea Madotto, Ehsan Hosseini-Asl, Caiming Xiong, Richard Socher, Pascale Fung, Transferable Multi-Domain State Generator for TaskOriented Dialogue Systems, ACL, 2019
• Li Zhou, Kevin Small, Multi-domain Dialogue State Tracking as Dynamic Knowledge Graph Enhanced Question Answering, NeurIPS Workshop, 2019
• Abhinav Rastogi, Xiaoxue Zang, Srinivas Sunkara, Raghav Gupta, Pranav Khaitan, Towards Scalable Multi-domain Conversational Agents: The Schema-Guided Dialogue Dataset, AAAI, 2020
• Qi Zhu, Kaili Huang, Zheng Zhang, Xiaoyan Zhu, Minlie Huang, CrossWOZ: A Large-Scale Chinese Cross-Domain Task-Oriented Dialogue Dataset, TACL, 2020
• Paweł Budzianowski, Tsung-Hsien Wen, Bo-Hsiang Tseng, Iñigo Casanueva, Stefan Ultes, Osman Ramadan, Milica Gašić, MultiWOZ – A LargeScale Multi-Domain Wizard-of-Oz Dataset for Task-Oriented Dialogue Modelling, EMNLP, 2018