对话预训练_对话系统联合建模优化

https://arxiv.org/pdf/1709.06136.pdf​arxiv.org

论文:ITERATIVE POLICY LEARNING IN END-TO-END TRAINABLE TASK-ORIENTED NEURAL DIALOG MODELS

贡献:

  • 构建Dialog agent 和 user simulator 联合建模训练的方法。
  • 可以与KB交互
  • 端到端的训练,槽位提取等都建模进去

见解可优化地方:

  • 更符合应用到检索领域,领域有限
  • 槽位、动作等都是固定的,迁移性不太好
  • 用户目标是固定的,但是现实往往是在对话过程中是动态的

简述:

本文提出了一个端到端任务的对话系统,将Dialog agent 和 user simulator 联合建模,对话策略迭代的优化的深度强化学习框架。

dialog agent:

模型结构图如下

端到端的LSTM 模型

d8cb328b2989872187fe1f16070e2dd6.png

dialog agent干的事:

  • 对话状态跟踪
  • 向知识库发出API调用
  • 得到对话一致的系统动作
  • 根据查询结果进行响应

模型输入,k轮中:

  • 上一个agent 输出编码
  • 用户输出编码
  • KB 检索结果
  • 上一个agent 状态

模型输出:

  • 最新agent状态
  • 系统动作
  • belief state估计,类似于状态估计
  • KB搜索结果实体的指针
  • 最终送到NLG生成回应

Utterance Encoding:

用双向LSTM 进行编码,为双向的级联。

cbcdb2b13ce5320e579ad48477e0ffcf.png

Action Modeling:

根据当前的状态

,选择相应的动作,认为是多分类问题。

2485924eea62943dc2cae9bb69218f4a.png

是一个MLP,单层隐藏层+softmax 分类。

Belief Tracking:

类似于对话跟踪,持续跟踪用户的目标。用户目标用一系列的槽位值来表达。本部分建模概率分布

,对各个槽位的候选值建模,要找到相应的值。对每个槽位类型
.

47f95f17b0e5a47149e3d5c19fdebcc6.png

也是一个类似的MLP。

KB Operation:

Dialog agent 可以发出API调用与KB或数据库交互来访问外部信息。将API调用认为是agent生成的对话行为。首先生成API调用命令模板,将slot 部分可以用slot token 标识,然后用Belief Tracking中的槽位值进行补全。

第k轮中,KB输入encode

是一个0/1值,表达在KB中是否能匹配到实体。相应的输出是KB中实体指针的概率分布。将知识库结果构建为实体的列表,让模型维护一个实体指针。当用户请求可替代选项时,代理将学习调整实体指针。

Response Generation:

采用模板的NLG模块(输入系统动作、槽位值、KB entity 值)

user simulator:

模型结构如下图:

34bfc6ea5be6a237dac092dddb93e5c9.png

在对话开始,采样一个随机的用户目标。

模型输入:

  • 用户目标编码
  • 上一个用户输出
  • 当前轮系统输出
  • 上一个用户状态

输出侧:

  • 更新当前状态
  • 根据当前状态,更新当前动作
    ,(用户动作定义是更细粒度的“req_addr”)
  • 根据用户动作,和用户状态输出一系列的槽位值
    (Area slot/Food slot)
  • 最终将用户动作和一系列的槽位值输入NLG中,得到

用户目标:

是由 informable 和 requestable 组成,也就是对应G=(C, R)。用户目标一旦确定就不会改变了。
  • treat informable slot as discrete type of inputs that can take multiple values,
  • treat requestable slots as inputs that take binary values (i.e. a slot is either requested or not).

Action Selection:

与dialog agent 类似:

df8ee1789da226ba6897da63235d5c4f.png

每个informable slot 是由当前动作和状态共同决定的:

67f030aa060c6df0d70272029ad559ed.png

强化学习策略优化

模型结构:

在预训练之后进行的

b8fa505e539cda4cba13a73988a19877.png

采用策略梯度算法(policy gradient),定义:state, action, reward。

state:user simulator 和dialog agent的 dialog-level级别的状态

.

action: user simulator 和dialog agent的 动作

. dialog agent 和user simulator的动作空间都是有限的和离散的。代理基于策略的随机表示对一个动作进行采样,从而在给定对话状态的动作上产生概率分布。

reward:回报函数,

0e08d1adc19b4b000cc5bf68dc8991ad.png

表达 agent 目前为止满足用户要求的情况(我觉得从计算上,可以分为 informable 满足正确个数、错误个数,requestable 提出的个数和回答的个数等,也可以加点权重,应该是规则性的)。turn-level级别的回报函数
为连续两轮的差。
分别是用户目标和Dialog agent 对用户目标的估计,他们都是槽位对表达的。也可以最后成功失败来得到

Policy Gradient

5cd19cfae812a86ebd195574c9224ade.png

RL采用策略梯度算法(policy gradient),优于Q-learning,因为策略函数的网络参数可以天然的用

预训练参数来初始化。衰减系数
,需要最大化目标函数:

对于Dialog agent 部分策略梯度:

c1f7d6b984ee5631778bf13712e308f0.png

对于user simulator部分:

d870cbf9460405906e3420af082d3684.png

不过这里存在潜在问题是,策略梯度优化可能具有很高的方差,因为agent在对话过程中会产生多轮。采用A2C算法,使用一个前馈神经网络来近似一个State-value function。

在模型训练过程中,我们对Dialog agent 和user simulator 都使用

策略来鼓励探索。在evaluation过程中,Dialog agent 采用贪婪策略,user simulator 仍然用
策略,为了增加用户的随机性和多样性,这更接近于真实的对话,这也防止了两个agent 都只学会固定的策略。

实验:

数据集:

采用的是 Dialog State Tracking Challenge (DSTC2)

调整数据集到需要的格式,增加了API call commands和对应的KB 查询,user simulator 就是基于真实的KB查询结果,这样会使得agent 更接近于实际应用的情况。

动作采用真实动作,也就是 "confirm_food"这种更细粒度的格式(而不是像“confirm(food = italian)” 这种将动作类型和槽位剥离的情况)。

fc37b0b602734a7962f3c6eef6451084.png

训练过程:

在监督预训练阶段,dialog agent 和 user simulator 分别针对各自对话语料库进行训练。这两个模型参数是一致的。dialog-level LSTM 和 utterance-level LSTM 都设置为150。优化器用Adam。初始化学习率1e-3,dropout=0.5.

在RL训练阶段,policy network parameters用有监督训练得到的参数初始化。A2C中的State-value function 参数是随机初始化的。

为了改善联合训练的非平稳性(non-stationarity)问题,在RL训练中,迭代的更新两个agent。以100个episodes 作为一个RL训练周期,此时固定一个agent,只更新另一个agent,并在下一个周期切换训练,直到收敛。

在对话模拟中,如果对话长度超过最大轮数(实验中为20轮),或者用户模拟器发出对话结束动作,则结束对话。

结果与分析:

评估系统的任务成功率、平均奖励值和平均对话长度。

如果agent的belief tracking 输出完全匹配用户目标 informable 的 slot 值,并且所有用户目标中的 requestable slot 都已完成,则认为对话成功。

本文的Dialog Agent 和user simulator 都是端到端的模型,以带有噪声的utterance为输入,直接生成最终的Dialog act 输出。

没有在user simulator 上使用贪婪策略,采用

,以鼓励用户行为的多样性。

bf12e76794d495b5273e86885f61ae0b.png

REINFORCE-joint 的 平均 回报比 A2C-joint 要高,REINFORCE-joint 在失败对话中获得奖励的表现更好。使用A2C训练的user simulator 的 softmax 的概率分布更尖锐,这会导致但凡陷入错误状态时,比较难跳出来。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值