深入浅出对话系统——基于预训练语言模型的对话管理

引言

主要讲解三篇论文,主要思想是把自然语言理解、对话管理和自然语言生成三部分整合到一起。

先导知识

数据集

  • CamRest676
  • MultiWOZ

都是用的自回归语言模型

  • causal
  • GPT-2、Transformer Decoder

一个概念:delexicalization

  • 通过相应的占位符替换特定的槽值
    • 占位符作为特定的token,不关心具体的取值
  • 学习取值无关的参数

首先来看第一篇论文

SimpleTOD

深入浅出对话系统——基于预训练语言模型的对话管理_第1张图片

来自论文A Simple Language Model for Task-Oriented Dialogue。
主要做的工作是:

  • 采用causal 语言模型(GPT-2)
  • 把整个TOD转换成序列预测问题
  • 损失函数为最大似然
  • 把整个TOD分为几个子任务,建模子任务之间的依赖

TOD指任务导向型的对话系统。

深入浅出对话系统——基于预训练语言模型的对话管理_第2张图片
模型的输入是所有的对话历史:
C t = [ U 0 , S 0 , ⋯   , U t ] C_t=[U_0,S_0,\cdots, U_t] Ct=[U0,S0,,Ut]
其中 U 0 U_0 U0是用户输入的第一句话; S 0 S_0 S0是系统回复的第一句话;

然后把这个上下文输入给SimpleTOD模型:
B t = SimpleTOD ( C t ) B_t =\text{SimpleTOD}(C_t) Bt=SimpleTOD(Ct)
会输出一个belief state,包含domain,slot_name和value。相当于做了NLU+DST的工作。

接下来要做对话动作生成,此时把 C t , B t C_t,B_t Ct,Bt和查询结果 D t D_t Dt拼接起来,再输入给SimpleTOD模型:
A t = SimpleTOD ( [ C t , B t , D t ] ) A_t =\text{SimpleTOD}([C_t, B_t, D_t]) At=SimpleTOD([Ct,Bt,Dt])
生成动作 A t A_t At
最后生成响应时把上面所有结果拼接,输入给SimpleDOT模型:
S t = SimpleTOD ( [ C t , B t , D t , A t ] ) S_t =\text{SimpleTOD}([C_t, B_t, D_t,A_t]) St=SimpleTOD([Ct,Bt,Dt,At])
来生成回复。这里会涉及到delexicalization,比如上图中的[value count],这里表示这个值是从数据库中查询的结果,不关心具体的值。

深入浅出对话系统——基于预训练语言模型的对话管理_第3张图片
训练过程如上图所示,a)训练就是把用户的输入、系统的回复、belif state、DB查询结果、生成的动作等基于语言模型的要求作为一个token序列喂给SimpleTOD。

在这里插入图片描述
其中 x = ( x 1 , ⋯   , x n ) x=(x_1,\cdots,x_n) x=(x1,,xn) x t = [ C t ; B t ; D t ; A t ; S t ] x^t=[C_t;B_t;D_t;A_t;S_t] xt=[Ct;Bt;Dt;At;St]

b)推理也是先把 C t C_t Ct拼接起来,送给模型,然后会得到一个belief state,然后再把预测的 B t B_t Bt(和查询到的 D t D_t Dt)也拼起来继续喂给模型得到 A t A_t At,基于这些来生成回复。

SOLOIST

深入浅出对话系统——基于预训练语言模型的对话管理_第4张图片

来自论文SOLOIST: Building Task Bots at Scale with Transfer Learning and Machine Teaching。
采用预训练-微调范式

  • 自回归语言模型
  • 使用更大的对话语料库预训练
  • 使用一些任务相关的对话微调

使用的模型是Unified Language Model。

我们来看下它的输入和输出。

输入:

  • 历史对话
  • belief state
  • DB state(DB查询结果)
  • delexicalized response

可以用 x = ( s , b , c , r ) x=(s,b,c,r) x=(s,b,c,r)来表示。

预训练时使用task-grouded的预训练,包含

  • 多任务目标
  • 自监督

在微调时用了machine teaching的方法。

模型的训练目标,也是分为说那个任务:Belief State Prediction(DST+NLU)、Grounded Response Generation(NLG)和Contrastive Objective(自监督)。

它输入中的历史对话和SimpleTOD有一些区别,这里只有用户说的话,没有系统的回复。

通过以下方式建模:
深入浅出对话系统——基于预训练语言模型的对话管理_第5张图片
其中主要有两个任务:
深入浅出对话系统——基于预训练语言模型的对话管理_第6张图片
深入浅出对话系统——基于预训练语言模型的对话管理_第7张图片

最后使用对比损失,将输入中的词以50%的概率随机替换:

在这里插入图片描述
上面说的machine teacher实际是指通过人工更正模型输出的结果:

深入浅出对话系统——基于预训练语言模型的对话管理_第8张图片

UBAR

深入浅出对话系统——基于预训练语言模型的对话管理_第9张图片

来自论文UBAR: Towards Fully End-to-End Task-Oriented Dialog System with GPT-2

作者尝试把完整的对话历史喂给模型,还是基于GPT-2模型,基于用户的输入,需要预测blief state、system action和system response。

架构类似SimpleTOD和SOLOIST的结合体,任务类似SOLOIST的。

深入浅出对话系统——基于预训练语言模型的对话管理_第10张图片
从上图可以看到,其中最上面表示模型的输入,是完整的对话历史。U代表用户的输入;B是需要预测的Blief State,A是Action,R是Response,D是数据库查询。

深入浅出对话系统——基于预训练语言模型的对话管理_第11张图片
上面是一个输入的范例。
在belief state中对domain和slot value进行解耦;同时在system act中也对domain和action进行解耦。

参考

  1. 贪心学院课程
  2. A Simple Language Model for Task-Oriented Dialogue
  3. SOLOIST: Building Task Bots at Scale with Transfer Learning and Machine Teaching
  4. UBAR: Towards Fully End-to-End Task-Oriented Dialog System with GPT-2

你可能感兴趣的:(自然语言处理,读书笔记,语言模型,人工智能,自然语言处理)