如何生成主题相关的对话 | 每周一起读 #11

简介:

Topic Aware Neural Response Generation


对话生成是一个非常热门的研究方向,通过 Seq2Seq 来生成与某个主题相关的对话,让整个对话内容的信息量更大、相关性更强,是一个非常有意思的研究思路。本文的工作给出了一些不错的想法。以下是Chatbot 专题阅读小组中的各位同学对本文的解读和讨论。


此外,PaperWeekly 将于今天正式成立自动文摘统计学习专题阅读小组,在组内发起「每周一起读」活动。我们将每周选定一篇优质文章,邀请国内外行业大咖和高校大牛入驻讨论,并为大家提供可撰写读书笔记和在线协同讨论的阅读工具。



阅读笔记精选


640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy

slvher


本文模型实现思路: 


1. 获取 topic word 的 embedding vector 用新浪微博语料训练 TwitterLDA 模型,算法是 collapsed Gibbs sampling。消息输入后,模型给出所属 topic,取该 topic 下的 top100 作为消息的 topic words,删除通用词后,将这些 topic words 转为各自的向量表示。其中,每个 topic word 的向量是通过计算 topic word 在所有 topic 下的归一化频率得到的(文中 Eq. 4),每个 topic word 对应的 vector 维度取决与 LDA 模型设置的 topic 数量;


2. 通过 BiGRU 网络对输入消息做 encode;


3. 根据第 1 步得到 input message 的 topic vector,结合第 2 步得到的 last hidden state,通过 MLP 网络和 softmax 层得到 topic attention,即得到了各 topic word 的权重;


4. 构造由 message attention 和 topic attention 联合影响的解码概率(文中 Eq. 6),该概率可突出 topic words 的作用。基于这个概率进行 token 解码;


5. 与标准的 seq2seq+attention 模型相比,TA-Seq2Seq 模型的解码过程由 ci 和 oi 共同参与,特别地,在解码第 1 个输出 token 时,c0 插入了先验 topic 信息,因此本文模型可以提高首次解码的质量,从而对整个解码结果的质量产生正向影响。 百度贴吧数据集上的实验结果表明,本文提出的 TA-Seq2Seq 模型达到了 state-of-the-art 的效果,优于 Li Jiwei 提出的 Seq2Seq-MMI 模型。

gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAA

Miaosen


本文为了让回复符合 topic 特征,所以在 decode 过程中加入了 topic attention。而论文“A Persona-Based Neural Conversation Model”里,为了让回复符合某类人的性格特性,加入了 speaker model 的 vector。而这个 vector encode 的信息是年龄性别等信息,并没有 speaker words 直接去帮助 decode。虽然略有不同,但是从本质上讲,都是用其它途径获得的 vector 来影响 decode 的结果符合某种需求。 


还有一点类似的是,本文用的是 Twitter LDA (虽然数据来自于微博),而“A Persona-Based Neural Conversation Model”里,用的是 Twitter 数据,把发言的用户 cluster。 


在结果的生成中,Persona 论文是生成数个回复,然后 rank。不知道和本文用到 c0+Ο0 的方法结合后,效果会不会更好。

gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAA

weijinfeng


文中描述的 TA-Seq2Seq 模型的核心思想是通过引入 LDA 模型结合 Seq2Seq 模型来产生更有信息含量、更为多样性及更话题相关的对话回答。其采用的思路是在现有的带 Attention 的 Encoder-Decoder 模型架构上,通过 joint 输入信息的 attention 和 topic attention 来共同影响对话的回答的生成。主要思路是意图通过引入先验知识到 Seq2Seq 模型来产生更高质量的回答。整体思路相对比较简单直接,但是在实现过程中,个人觉得有几点值得注意或借鉴的: 


1. 抓住了人们在实际对话过程中,在一定程度上,是基于某个话题来产生对话的特点,自然的引入了 topic 模型及 topic words,有其一定的合理性;


2. LDA 模型训练用的数据不是用的训练对话的数据,这样做是为了引入了其他数据源的先验知识,籍此提高对话的多样性和信息量,并且可以引入不同的数据源来实现不同的效果;


3. 与传统的 attention 机制不同,topic attention 除了利用 topic words 的状态信息,还利用了 input message 的最终状态作为额外的输入来弱化不相关主题词并加强相关主题词的概率;


4. 在对话生成的过程中,采取了有偏于 topic words 的生成概率来增大 topic words 的出现几率;


5. 有别于 Mou et al. 2016,此模型通过取多个话题词来产生更为有信息量的回答;

 

6. 不同于传统的 seq2seq 模型,对话的第一个词产生自 c0 和 o0 的组合,而不是只有 c0,这样的好处是可以产生更为准确的第一个词,来给后续的词及整个句子的产生带来了更好的效果,因为后续词的产生会依赖于前面生成的词。



 Q&A 精选


640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy

wumark


Topic Aware Neural Response Generation


我是这篇 paper 的作者之一,我建议大家在读完这篇 paper 时候,还可以读一读:


1. Sequence to backward and forward sequences: A content-introducing approach to generative short-text conversation [Lili Mou, Yiping Song, Rui Yan, Ge Li, Lu Zhang, Zhi Jin.] 


2. Incorporating Copying Mechanism in Sequence-to-Sequence Learning [Jiatao Gu, Zhengdong Lu, Hang Li, Victor O.K. Li] 


3. Pointer Networks [Oriol Vinyals, Meire Fortunato, Navdeep Jaitly] 


1 和本文解决的是同一件事,本文是 2 和 3 的一个特殊的应用。

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy

mike


We estimate the parameters of Twitter LDA using the col-lapsed Gibbs sampling algorithm (Zhao et al. 2011). Afterthat, we use the model to assign a topiczto a messageX, pick the topnwords (n= 100in our experiments) with thehighest probabilities underz, and remove universal wordslike “thank” and “you” to get the topic wordsKforX.

1. 怎么产生 topic word? 200 个话题,每个话题 100 个 topic words? 


2. 训练时和测试时,是使用所有的 topic words 还是只是用对应主题的 topic?


Miao: 1. topic 和 topic word 是使用文中说的 Twitter LDA 在微博数据集上训练得到的,训练完之后每个 topic 实际上就是由词分布表示的,这里选择了词分布中概率最高的 100 个词作为这个 topic 的 topic words;2. 训练好之后,对于一个输入 X,可以根据这个模型判断 X 属于哪个 topic,然后选择对应的 topic words 送到后续的模型中产生 response。


xixi_meng: 是不是类似于我把一句话中的关键词提取出来后(这里你们提取关键词的方法是使用的 Twitter LDA 在微博数据上训练得到的所有的关键词,然后句子中看是否有这个词?),导入 jieba 分词模型中,找到前 100 个概率最大的词?将关键词和关键词匹配最高的词送到后续模型中?

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy

BetterEmma


i et al. 2015)

除此之外,Deep Reinforcement Learning for Dialogue Generation 这篇文章将增强学习引入到生成对话中,使用 policy gradient methods 来对具有信息性,一致性,易于回答等特性生成结果进行奖励,从而来避免 general reply 的问题。 


wumark:


从效果来看,Deep Reinforcement Learning for Dialogue Generation 这篇 paper 会导致 chatbot 非常热爱问问题。因为他的 loss 是个能聊多少有意义的东西,最后就一直问问题。从我实验来看,GAN 是目前对 general reply 解决的最好的一种方法。


来源:paperweekly


原文链接


相关文章
|
1月前
|
Web App开发 存储 缓存
如何解决ChatGPT发送消息没有反应的问题
帮你解决ChatGPT发送消息没有反应的问题
192 0
如何解决ChatGPT发送消息没有反应的问题
|
4月前
|
人工智能
AI批量写文章伪原创:基于ChatGPT长文本模型,实现批量改写文章、批量回答问题(长期更新)
AI批量写文章伪原创:基于ChatGPT长文本模型,实现批量改写文章、批量回答问题(长期更新)
109 1
|
9月前
|
Python
微信虚拟聊天对话生成器示例
python实现对话生成器代码示例
|
7月前
|
算法 自然语言处理 机器学习/深度学习
中文竞技场大模型测评后续之双模型匿名对话
在中文竞技场大模型测评的延续中,我们将在双模型匿名对话技术场景中,通过趣味游戏方式对写作创作、代码相关、知识常识等领域进行全面测评
224 0
中文竞技场大模型测评后续之双模型匿名对话
|
9月前
|
人工智能 搜索推荐 Java
|
11月前
|
数据采集 人工智能 API
调用多个ChatGPT API相互对话,清华开源的多轮对话数据UltraChat来了
调用多个ChatGPT API相互对话,清华开源的多轮对话数据UltraChat来了
510 0
|
11月前
如何用ChatGPT做书籍、报告、文件的读取与互动式问答?故事人物活起来
该场景对应的关键词库(15个): 书籍、报告、文件、详细信息、查询、主题、作者、出版日期、出版社、问题、方面、原则、方法、概括、主要观点、解释。
122 0
|
11月前
|
SQL 人工智能 数据可视化
Prompt learning 教学案例篇:文生文案例设定汇总,你可以扮演任意角色进行专业分析
Prompt learning 教学案例篇:文生文案例设定汇总,你可以扮演任意角色进行专业分析
|
存储 人工智能 自然语言处理
把盏言欢,款款而谈,ChatGPT结合钉钉机器人(outgoing回调)打造人工智能群聊/单聊场景,基于Python3.10
就像黑火药时代里突然诞生的核弹一样,OpenAI的ChatGPT语言模型的横空出世,是人工智能技术发展史上的一个重要里程碑。这是一款无与伦比、超凡绝伦的模型,能够进行自然语言推理和对话,并且具有出色的语言生成能力。
把盏言欢,款款而谈,ChatGPT结合钉钉机器人(outgoing回调)打造人工智能群聊/单聊场景,基于Python3.10
|
人工智能 自然语言处理 Java
【如何实现多轮对话 】新增查空气质量的意图,实现多轮对话|学习笔记
快速学习【如何实现多轮对话 】新增查空气质量的意图,实现多轮对话
98 0