本文结构:

  • 模型效果
  • 模型
  • 模块细节

今天的论文是 《Topic Aware Neural Response Generation》

https://arxiv.org/pdf/1606.08340.pdf

这篇论文的目的是让聊天机器人的回复更有营养,例如下面这种场景,要尽量避免‘我也是’‘明白了’‘不知道’这种没有信息量的回复,而是可以给出一些建议和方案等:


模型

思路是输入句子后,先预测 topics,再根据 topics 生成回复。

文章中通过建立 topic aware sequence-to-sequence (TA-Seq2Seq) 模型来实现这个过程。

TA-Seq2Seq 建立于 sequence-to-sequence 基础上,再加上一个联合注意力机制。

关于 seq2seq 的模型细节可以看这两篇文章:
seq2seq 入门
seq2seq 的 keras 实现

简单回顾,

1. seq2seq

是个 encoder-decoder 结构,两部分都是 RNN 模型,RNN 可以选择 LSTM 或者 GRU;

输入句子 X = (x1, x2, … , xT ) ,
输出句子 Y = (y1 , y2 , … , yT` )

目标是要最大化条件概率:

其中 c 为 encoder 的 RNN 模型得到的 context vector。

2. 注意力机制

简单讲,就是一般的 seq2seq 中,回复句子的所有单词都是由同样的语境生成,而加入注意力机制后,回复中的每个单词是由输入句子的不同部分生成的。
即 Y 中的每个单词 yi 由语境向量 ci 影响,其中 ci 是隐向量的加权平均:


模块细节

接下来根据前面的 TA-Seq2Seq 模型结构图看一下细节。

TA-Seq2Seq 的 encoder 和 decoder:

1. 在 encoding 中

  1. message encoder 通过一个双向的 GRU 模型,将输入 X 表示成隐向量 ht。
  2. 再用提前训练好的 Twitter LDA 模型获得 topic words 的向量表示:

Twitter LDA 模型的参数根据 collapsed Gibbs 采样算法求得,

Twitter LDA 会给输入 X 分配主题 z,选择概率最高的前 100 个单词,并且移除 “谢谢” “你” 等普遍的词,最终得到 X 的主题词 K。

这里 K 的向量表达由每个主题词 w 的分布计算得到:

其中 Cwz 为 w 被分配到主题 z 的次数。


2. 在 decoding 中

每个单词都通过一个联合注意力机制,由输入句子和主题共同影响生成,这样生成的句子不仅和输入有关,而且和相关主题有关。

decoding 时,每一步时隐向量 h 被转化为 ci:

主题向量 k 也被线性组合为 oi,每个 kj 对应的系数为:

其中 hT 是输入句子的最终隐藏层状态,η0 是一个多层感知器,这么做可以削弱与主题无关的词的影响,加强相关词的影响度,即 oi 与输入的内容更相关,减少了很多噪音。

然后由 ci 和 oi 联合影响着生成句子的概率,

即每个单词的生成概率定义为:

p(yi) = pV (yi) + pK (yi),

其中 V 是回复词汇表,f 是一个 GRU 模型, Z 是正规化因子,并且:

这里的 σ(·) 为 tanh,w 为单词的 one-hot 表达,其余的 W 和 b 为参数。

这个生成概率定义的作用是,

对于非主题词,pV (yi) 就和 seq2seq + joint attention mechanism 类似,
但对于主题词,就有额外的一项 pK(yi) 可以增加主题词在回复中出现的概率。

这种联合影响还有一个好处,

一般的 seq2seq 生成回复中第一个词只由 c0 决定,这里是由 c0 和 o0 共同作用,使得回复的第一个词更加贴切主题,第一个词准了对后面生成词的影响也很重要。


推荐阅读
历史技术博文链接汇总
也许可以找到你想要的:
[入门问题][TensorFlow][深度学习][强化学习][神经网络][机器学习][自然语言处理][聊天机器人]

使聊天机器人的对话更有营养相关推荐

  1. 聊天机器人在对话中的知识提取

    聊天机器人在对话中的知识提取 目 录 1.引言 1 2.相关工作 2 3.知识提取过程 3 1.1研究方法 3 1.2答案聚类 5 4.构建一个神经会话代理 7 4.1模型 7 4.2数据集 7 4. ...

  2. python对话机器人软件_如何用Python为聊天机器人创建对话?

    我想写一个快速简单的聊天机器人,可以携带与用户的对话.我想知道如何创建对话,允许无限量的输入和响应.现在我使用的代码不允许用户定义输入.这就是我现在正在使用的代码.在# Import the rand ...

  3. 入选最受关注AI公司的Kitt.AI:多轮对话聊天机器人开发也可以很简单

    移动互联网发展之初,很多习惯了开放.自由的PC网民是充满绝望的,他们把手机上各个App之间无法跳转.内容封闭的情况称为"信息孤岛".这可能是聊天机器人,即chatbot随着人工智能 ...

  4. 对话式服务思考,如何在 Messenger 用聊天机器人做好客户服务

    目录 有没有这样的经历 设计聊天机器人的定位和画像 聊天机器人的对话结构 新手引导和帮助 添加对话能力 添加产品介绍 添加业务联系 添加体验技能 处理错误 示例程序 接下来 有没有这样的经历 作为一位 ...

  5. 独家 | 聊天机器人开发中的机器学习(附链接)

    作者:Omkar Prabhune 翻译:方星轩校对:王雨桐本文约2800字,建议阅读5分钟 本文作者从聊天机器人的种类.用途以及架构等角度介绍目前的聊天机器人技术,并在文末分享了一些聊天机器人行业的 ...

  6. Facebook 开源聊天机器人Blender,经94 亿个参数强化训练,更具“人情味”

    来源:AI前线 作者 | Kyle Wiggers 编译 | Sambodhi 策划 & 编辑 | 刘燕 不久前,Facebook 开源了号称是全球最强大的聊天机器人 Blender,它标志着 ...

  7. SIGIR 2021 | Pchatbot: 大规模个性化聊天机器人数据集

    ©PaperWeekly 原创 · 作者 | 金金 单位 | 阿里巴巴研究实习生 研究方向 | 推荐系统 简介 自然语言对话系统最近引起了极大的关注.由于许多对话模型是数据驱动的,因此高质量的数据集对 ...

  8. 独立站运营 | FaceBook营销神器——聊天机器人ManyChat

    ManyChat 是什么? Manychat 是Facebook 这个即时通讯软件推出的插件,其本质上就是一个可以由用户动手DIY定制的聊天机器人.用户可以通过定制流程的方式,来设置聊天机器人的话术. ...

  9. MILABOT:基于深度强化学习打造聊天机器人

    下面,我们介绍论文的主要思想和创新之处. 系统概览 早期的对话系统主要基于由专家人工制定的状态和规则.而现代对话系统通常使用组合学习的架构,将手工定制状态和规则组合到统计机器学习算法中.由于人类语言的 ...

最新文章

  1. 使用CSS3美化复选框checkbox
  2. 嵌入式开发「坑」太多?MathWorks 高级工程师教你 debug
  3. 如何确定敏捷是否适合你的团队?
  4. 11.10错题集(7-函数)
  5. 【Python】七段数码管绘制日期年月日
  6. 已解决 问题ModuleNotFoundError: No module named ‘tensorflow.examples.tutorials‘
  7. Chapter4 Java流程控制之选择结构
  8. 如何在Linux下创建与解压zip, tar, tar.gz和tar.bz2文件 .
  9. 如何在 C# 中使用 RabbitMQ
  10. 移动端照片上传、头像裁剪完整功能,兼容iphone,android (一)
  11. Map遍历KeySet()和EntrySet/ Map.forEach的性能分析
  12. apache poi excel显示 base64 图片_java操作Excel一:POI
  13. 基于Java的连连看游戏设计与实现(含源文件)
  14. python:双色球随机选号
  15. 为什么你写了一万小时的代码,却没能成为架构师?| 程序员有话说
  16. Python 读取5张Excel的Sheet自动生成3张Sheet分析结果(减轻同事的工作量,让原本大约2个小时的工作量缩减到1分钟内)
  17. RPG Maker MV 密码宝箱
  18. 最详细G1垃圾回收器日志解读
  19. C#基础 uint,long,ulong,float,decimal 定义并初始化
  20. 协同学:大自然构造的奥秘--哈肯

热门文章

  1. Java基础面试题(建议收藏)
  2. 如何设计一个“高大上”的 logo
  3. M1pro mac登陆EasyConnect报错“未能正确打开SANGFOR SSL Virtual网卡,暂时不能提供SSL CS服务,请联系管理员”
  4. 详解三次握手和四次挥手:遇到心动的女孩时,如何去把握?
  5. 广和通LTE-A模组FM101-NA率先取得北美运营商T-Mobile认证
  6. 苹果正式发布全系列新款iPod
  7. AI一分钟就能生成个性动漫头像?分享一个超好用的AI卡通头像生成器
  8. java实现 串口通讯
  9. 为什么中国做不出《旅行青蛙》这样的游戏?
  10. python 手机测试_python测试Android手机应用