神经网络多轮对话系统

简述

简单来讲,就是把上下文分别用RNN生成向量,计算两个向量变换后的内积对应二分类,判断一个回答是否是正确回答

论文全名:The Ubuntu Dialogue Corpus: A Large Dataset for Research in Unstructured Multi-Turn Dialogue Systems

背景

这篇文章的主要贡献有两点:

1、将Ubuntu相关的聊天内容提取出来,作为对话问题的公共语料库,解决了数据来源的问题

2、在多轮对话中,已知前文(Context)的时候,面临一堆候选回答的时候,用怎样的网络结构能选出正确答案

文章也解释了,为什么没有像其他相关论文那样,直接用encode-decode结构直接生成一个回答,因为还是没法得到好的结果

网络结构

其实网络结构极其简单,把当前的问题,比如“怎么查看进程号”,用RNN进行向量化c,即取RNN最后一个时刻的输出;与候选的回答,比如“用ps ax来看"用同样结构的网络生成的向量r,这两个向量最后转换成一个标量,通过sigmoid函数归到01之间。其实,就是拟合c'=Mr,使得相关回答在变换后,与问题相似。

其他细节

从最后的结果来看,LSTM相对原始RNN来说,有巨大的效果提升,而原始RNN与tfidf的余弦度量得到的结果差不太多

模型的效果与语料的量有很大关系

原始语料中只有正例,负例是随机构造的。

用于翻译模型的度量BLEU不再适用于会话评估。

TODO

文中还提到,参数的初始化方式和优化方法也起到关键作用,RNN隐层特意用了正交向量来初始化,优化算法采用"Adom"方法,这两点之后还要细读一探究竟。

既然本质上也是算变换后的相似性,那微软的相关性模型(DSSM系列非对称型)也适用于这个问题,效果上应当基本是等价的,从经验来看还有可能更快地收敛,如果原模型难以优化,可以尝试下成对训练。

你可能感兴趣的:(机器学习与自然语言处理)