多轮对话状态跟踪-NBT原理

2021-11-08 10:58:05 浏览数 (2)

让机器像人一样自由的对话,对话机器人必然要具备连续对话的能力,即多轮对话,多轮对话不用多讲,那么什么是多轮对话状态跟踪呢(DST, dialogue state tracker | belief traker)?

在会话的每一步需要去预测用户的目标,然后会话策略给于用户正确的用响应,但用户目标是一个不可观测的隐状态,所以需要通过观测用户历史utterence、系统历史响应,然后获得belief state,通过belief state来表示用户目标。

会话状态(belief state)

那么什么是会话状态(belief state): 对话的每一个时间步的状态表示,由于当前观测状态具有不确定性(asr噪声、nlu不确定、用户表达本身的不确定性),所以belief state是一个概率分布,具体为每个slot的概率,slot包含type,value,action。会话状态追踪技术就是每一个时间步的状态预测belief state,方法也较多,本文先从ACL的一篇文章NBT讲起。

NBT

2017Neural Belief Tracker- Data-Driven Dialogue State Tracking.pdf

此篇文章提出NBT框架,通过引入预训练词向量,将用户query和会话上文表征为向量,解决语义理解任务需要大量数据和手工特征的问题,更适合复杂的对话。

对于上一轮的系统输出,当前轮次的用户输入,每个slot-value对进行向量表征,转化为向量t,r,c。然后将t和r计算

将当前轮次的状态和上一轮的历史状态做合并。

用户表征

分别使用两种encoder,分别是DNN和CNN,将用户query转化为向量。拿DNN举例,设置1-3的词语窗口,将窗口内的词向量拼接获得各个位置i的向量vi1​,vi2​,vi3​,然后通过各个i的向量求和获得向量 r1​,r2​,r3​,进过非线性变化获得 vin​=ui​⊕…⊕ui n−1​rn​=i=1∑ku​−n 1​vin​rn′​=σ(Wns​rn​ bns​)r=r1,​ r2,​ r3,​

槽位表征

对于每一个slot-value对,将槽位类型cs和槽位值cv相加之后经过一层MLP之后获得向量c,然后c和r做点乘获得获得d向量。c=σ(Wcs​(cs​ cv​) bcs​)d=r⊗c​

上文表征

有两种情况需要上文的系统表征

  • 系统问下了用户某个槽位,比如用户对价格要求,这时候用户回答极有可能就是价格。
  • 系统向用户发起确认某个slot-value的时候,用户回答肯定的时候,需要更新槽位。

因此编码上文表征就显得重要,通过ts,tv表示系统的请求或者确认的槽位,将分别和cs,cv计算点积作为r的门控获得m向量,公式如下:mr​=(cs​⋅tq​)rmc​=(cs​⋅ts​)(cv​⋅tv​)r​ 最终经过MLP层进行一个二分类,输出当前slot-value的概率:y=ϕ2​(ϕ100​(d) ϕ100​(mr​) ϕ100​(mc​))ϕ100​=MLP layer with dim=100

belief state Updates1

简单的规则,通过一个衰减系数将当前的belief state和上一个belief state相加,获得每个slot-value的概率,再通过阈值(文中为0.5)进行过滤。P(s,v∣h1:t,sys1:t−1)=λP(s,v∣ht, sys t−1) (1−λ)P(s,v∣h1:t−1, sys 1:t−2)​

优势:

  • 依赖于预训练的词向量,可以做到将槽位的归一,例如"a pricey restaurant"分类为"price=expensive"
  • slu和dst集成到一起,集成度高。

缺点:

  • 首先要求有预先定义的ontology,slot-value对是可遍历的,不能太多。
  • 其次每次预测都要和每个slot-value计算,开销比较大,不是很实用。
  • 编码方法比较native。
  • 丢弃了历史的状态,里面可能包含的信息有利于理解。
  • 状态更新基于规则。

2018Fully Statistical Neural Belief Tracking.pdf

上一篇文章,由于通过手工规则更新belief state,导致新领域迁移需要昂贵的手动操作(我觉得也没多昂贵),这篇文章改进了belief state更新,通过联合学习的方式,将其集成到NBT中。

主要改进点在于引入了上一轮的belief state建模进行联合学习,不在使用规则,其他部分都一样就不在赘述,主要了解belief state的更新机制

Belief State Updates2

One-Step Markovian Update

只依赖域上一步的belief state和当前识别的槽位,所以当前的状态更新:bst​=softmax(Wcurr​yst​ Wpast ​bst−1​)

Constrained Markovian Update

Wcurr ,i,j​={acurr ​,bcurr ​,​ if i=j otherwise ​Wpast ,i,j​={apast ​,bpast ​,​ if i=j otherwise ​​

改进了权重参数,每个权重矩阵只有两个参数,即对角矩阵和非对角,对角是对于同一个槽位的更新,acurr​表示倾向于使用当前槽位的权重,apast​表示倾向于历史槽位的权重,非对角是不同的槽位的更新.

这样做的好处:parameter are tied, ensuring that the model can deal with slot values unseen in training

reference

  • Neural Belief Tracker- Data-Driven Dialogue State Tracking
  • Fully Statistical Neural Belief Tracking

0 人点赞