End-to-end LSTM-based dialog control optimized with supervised and reinforcement learning

来源:互联网 发布:mac app atore验证 编辑:程序博客网 时间:2024/05/01 03:27

摘要

模型的主要部分是一个循环神经网络(一个LSTM),它把粗糙的对话历史直接映射到系统的行动分布,LSTM自动从对话历史推理,也就释放了开发者人工的编辑对话状态,然后开发者可以提供表示商业规则的软件和提供编程API。LSTM可以通过监督学习优化,提供样例对话给LSTM模仿,或者通过增强学习优化,也就是系统提供直接地用户交互。实验表明监督学习和增强学习是互补的,监督学习自己从小量的训练对话中得到一个合理的初始策略,而强化学习优化这个策略。

模型

dialog management

第3步的实体输入,在这个例子里,是将一个人名映射到具体的数据库的一行或几行。

在第4步,从4个地方形成一个特征向量,第1个地方是第2步的实体抽取,第2个地方是第3步的实体输入,其余2个地方下面会讲。

第5步,用一个以softmax为输出层的RNN,这个LSTM的输入如图所示,输出是一个 Action模板 的概率分布,也就是 在Action里把实体值替换成实体名字,就像Do you want to call <name>?

第6步,输出一个action mask,例如,如果一个目标电话没有确定,那么这个电话号码就要被mask

第7步,把输出 线性re-normalizing到一个概率分布

第9步,如何从概率分布中选择Action,在强化学习开启的时候,这个Action从概率分布中抽样选取,在强化学习关闭的时候,最高概率的Action被选

对于 Action模板 的确定,通过两种方式,第一种方式,把它传到LSTM的下一个step,第二种方式,把它传到 实体输出 替代为任意的模板实体

第11步,根据Action的类型,如果是一个API Call就……(都是如图所示)

API Call 我理解是对接后面系统的实际调用,比如真正播出电话。

相关工作

对话系统的两个主要问题:状态跟踪 和 Action选择

状态跟踪

Action选择

用监督学习来做,举例来说,当收到一个用户输入的时候,搜索所有的 用户输入-对话状态

用强化学习来做,机器人接收到了一个指示整个对话质量的反馈信号,但是没有指示哪个Action应该被选。通过强化学习的Action选择被用 马可夫决策过程 做,然后是partially observable Markov decision process。如果反馈信号是这样的,比如指示是否帮用户成功完成一个任务,那样强化学习可以直接从 和用户的交互 中学习,而不需要标注。 但是调试一个 强化学习系统 是很难的,……

我们的方法是结合监督学习和强化学习来做,神经网络通过梯度下降来训练,如果通过强化学习和监督学习来优化 只是简单的需要一个不同的梯度计算。一开始,提供一批训练用的对话 用于RNN的训练,
然后,RNN可以通过反馈信号来优化,通过一种policy梯度。
对于监督学习,如果发现一个bug,就提供更多的训练用的对话,以致系统可以保持容易调试。
对于强化学习,会确保相应的策略总是会重构那些提供的数据。

对话任务示例

我们写了一个打电话用的对话系统,

我们从 定义实体 开始,用户可以说 <姓名>, <电话类型>, <是否>
系统也可以说这些实体,再加上<canonicalname><canonicalphonetype>
用户可以说“给希拉里打电话”,然后系统会对应到“给希拉里克林顿打电话”
对于实体提取,我们训练了一个模型,用的是微软的Language Understanding Intelligent Service

然后,对于实体追踪,我们使用一个简单的办法,……
然后,我们定义了两个API Action,一个是API是打电话,另一个是 确认电话类型

(这块没看懂,最后说他们用了200多行的python写的一个东西和300多行的Python写的一个东西)

通过监督学习来优化

预测准确率

使用强化学习优化

强化学习在对话系统中的应用
-–学习率
-–在时间t的Action
-–在时间t的对话历史
-–F对x的Jacobian
-–对话的return
-–基准,是对现在策略的一个平均估计,过去100个对话的
-–LSTM,也就是,给定对话历史 和 权重w,输出a的概率分布

结论

一个RNN把对话历史映射到Action的概率分布,这个LSTM会自动的推断 对话状态 的表示,避免了人工编码 对话状态。

0 0
原创粉丝点击