Chapter7-13_Dialogue State Tracking (as Question Answering)

本文为李弘毅老师【Dialogue State Tracking (as Question Answering)】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。

下文中用到的图片均来自于李宏毅老师的PPT,若有侵权,必定删除。

文章索引:

上篇 - 7-12 Controllable Chatbot

下篇 - 无

总目录

1 什么是Dialogue State Tracking

Dialogue State Tracking是Task-oriented Dialogue的一个子模块。先来讲一下Task-oriented Dialogue是什么。Task-oriented Dialogue的输入是用户当前说的话和历史的对话记录,如果用户的输入是语音,会有一个额外的ASR模块将输入转成文字,同时也会有一个额外的TTS模块将输出转为语音。用户的输入会经过一个理解模块NLU(Natural language understanding),输出会交给state tracker,也就是本文的核心内容。state tracker会从当前的输入中抽取有用的信息,保存下来。同时历史的输入都会以相同的形式把有用的信息保存下来。这些存下来的信息会以state的形式交给决策模块(Policy)。Policy会告诉生成模块NLG(natural language generation)该输出什么内容。最后NLG输出回应用户的话。
1

说了一大堆,其实简单来说Dialogue State Tracking就是上面的state tracker,目标是把用户说的话简化为一个有用的信息库,也可以理解为做了摘要。下图比较形象地说明了这一过程。这么多的对话,最终变成了key-value的键值对。

2

这些keys是人为事先定义好的内容,而value都是选择题,也是人为规定好的选项。因为现在的Dialogue State往往有很多的keys,所以key会有domain和slot两个部分组成,用来区别和归类不同的keys,方便模型处理,也方面模型的迁移。
3

总之,Dialogue State Tracking就是根据对话内容,填写事先设定好的keys的values是什么的问题。

2 数据集

Dialogue State Tracking比较著名的数据集有MultiWOZ 2.0SGDCrossWOZ等等。这里的这个WOZ就是取自绿野仙踪(The Wizard of Oz),绿野仙踪里最终的大BOSS是一个老头子在幕后操纵的。这里的数据集也是用人来伪装成AI和人对话得到的数据,没错就是人和人对话,AAI(Artificial Artificial Intelligence)。

4

3 两个挑战

Dialogue State Tracking的values要做成很多个选项是因为之前的方案都把这个当作一个分类问题,输出的是一个类别,但比如电话号码,时间等一些难以穷举的选项,这个方法就行不通了,这是一个挑战。

另一个挑战是有新的keys进来,模型就要重新train过,数据也要重新构造过,迁移成本大。

总结一下:

  • 有些value难以穷举
  • 新的key进来,迁移成本大

这两个问题,都可以用QA(Question Answering)的方法解决。QA的结构如下图所示,我们把Dialogue history作为source输入,然后根据key问出相应的问题让模型来回答即可。这样模型回去从source中找一个span作为答案,解决了value难以穷举的问题。然后针对domain不同,slot相同的问题,改一下问题的domain即可,解决了迁移的问题。当然前提是这个QA模型是ok的。

5

4 经典模型

Dialogue State Tracking比较经典的模型就是TRADE,其结构如下图所示。Dialogue会经过一个encoder抽取特征,同时key的domain和slot会分别取embedding,然后加在一起作为question部分的输入,同时也会和Dialogue的encoder输出作一个attention。attention的结果会是一个slot gate,决定了是PTR(从对话中抽取一个span),还是DONTCARE(用户不在乎),还是NONE(还没提到这个key)。根据这个决定,state generator会输出最终的结果。
6

因为key会分别抽取domain和slot的embedding,所以这个方法是可以适用于应的key的,这也意味着是可以解zero-shot的问题的。

有些key会有一些description,抽取这些description的embedding也是解决zero-shot问题的方法。
7

其他还有一些变形,比如Slot Carryover Prediction认为每说一句话都要把所有的keys问一遍太费时费力了,于是就设计了一个“是否同上”的classifier来帮助避免问一些已经知道且没有被修改的keys;DST QA认为有些keys之间的values是有关联的,比如知道了要订哪家饭店,那么叫的出租车的目的地很可能就是这家饭店,然后设计了一个模块来解决这个问题;SimpleTOD基于GPT-2设计了一个end-to-end的方法,用户说一句话,模型输出一句话,效果出奇地好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七元权

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值