做网站的公司现在还 赚钱吗6,做解析会员电影的网站,高端企业网站价位,教育网站制作设计文章目录1 什么是Dialogue State Tracking2 数据集3 两个挑战4 经典模型本文为李弘毅老师【Dialogue State Tracking (as Question Answering)】的课程笔记#xff0c;课程视频youtube地址#xff0c;点这里#x1f448;(需翻墙)。
下文中用到的图片均来自于李宏毅老师的PP…
文章目录1 什么是Dialogue State Tracking2 数据集3 两个挑战4 经典模型本文为李弘毅老师【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输出回应用户的话。
说了一大堆其实简单来说Dialogue State Tracking就是上面的state tracker目标是把用户说的话简化为一个有用的信息库也可以理解为做了摘要。下图比较形象地说明了这一过程。这么多的对话最终变成了key-value的键值对。 这些keys是人为事先定义好的内容而value都是选择题也是人为规定好的选项。因为现在的Dialogue State往往有很多的keys所以key会有domain和slot两个部分组成用来区别和归类不同的keys方便模型处理也方面模型的迁移。
总之Dialogue State Tracking就是根据对话内容填写事先设定好的keys的values是什么的问题。
2 数据集
Dialogue State Tracking比较著名的数据集有MultiWOZ 2.0SGDCrossWOZ等等。这里的这个WOZ就是取自绿野仙踪(The Wizard of Oz)绿野仙踪里最终的大BOSS是一个老头子在幕后操纵的。这里的数据集也是用人来伪装成AI和人对话得到的数据没错就是人和人对话AAI(Artificial Artificial Intelligence)。 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的。 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会输出最终的结果。
因为key会分别抽取domain和slot的embedding所以这个方法是可以适用于应的key的这也意味着是可以解zero-shot的问题的。
有些key会有一些description抽取这些description的embedding也是解决zero-shot问题的方法。
其他还有一些变形比如Slot Carryover Prediction认为每说一句话都要把所有的keys问一遍太费时费力了于是就设计了一个“是否同上”的classifier来帮助避免问一些已经知道且没有被修改的keysDST QA认为有些keys之间的values是有关联的比如知道了要订哪家饭店那么叫的出租车的目的地很可能就是这家饭店然后设计了一个模块来解决这个问题SimpleTOD基于GPT-2设计了一个end-to-end的方法用户说一句话模型输出一句话效果出奇地好。