代码改变世界

神经记忆网络、神经机器翻译和神经图灵机的初步探讨

2016-03-31 20:48  GarfieldEr007  阅读(921)  评论(0编辑  收藏  举报

近期看过神经记忆网络、神经机器翻译和神经图灵机三篇工作之后在基于对话历史的信息抽取工作上进行了初步对比尝试,根据自己的理解进行了模型对比。欢迎大家一起讨论。

首先三篇工作的文献分别出自:

[1] 神经记忆网络:2015 NIPS, End-To-End Memory Networks (Facebook AI)
[2] 神经机器翻译:2015 ICLR, Neural Machine Translation by Jointly Learning to Align and Translate
[3] 神经图灵机:2014 ArXiv, Neural Turing Machines (Google DeepMind)

其中神经记忆网络和神经机器翻译的模型框图如下:

实验数据:1000轮垂直领域完整对话历史的信息抽取问题
- 神经记忆网络数据格式:
1 小姐 您 怎么 称呼 ?
2 周琪 。
3 您 身份证 多少 ?
4 你 记 一下 , 1305217214648322
5 name ?
- 神经机器翻译数据格式:
小姐 您 怎么 称呼 ? # 周琪 。 # 您 身份证 多少 ? # 你 记 一下 , 1305217214648322 ## name ?

实验代码:
- 神经记忆网络:Facebook公布的官方源码
- 神经机器翻译:MILA发布的Blocks框架

参数设置:
两个模型尽量保持一致。如,词向量维度: 100,Batch_size: 32

实验结果:
- 神经记忆网络拟合速度很快,
5轮nepochs,精度便接近100%

- 神经机器翻译拟合速度较慢,
146轮nepochs的精度为93.6%

结果分析:
与IBM Waston实验室的结果分析一致[4]:
IBM Waston基于神经记忆网络的两轮推理QA问题,实验结果为 100%, 而基于神经机器翻译的两轮推理QA,结果为46%

原因分析:
- 编码层次不同;
- Attention机制不同;

下面做详细分析

- 编码层次不同:
神经机器翻译模型在词级别进行编码,通过分隔符的方式断开段落中的句子
神经记忆网络模型直接在句子级别进行编码

- Attention机制不同:
神经机器翻译模型的Attention参数输入为:
1). Encoder端词级别的向量化表示;
2). Decoder端上一时刻状态。
优点:引入Decoder端上一时刻状态,使得序列化解码输出的流畅性更好。

神经记忆网络模型的Attention参数输入为:
1). Encoder端Story的句子级别向量化表示;
2). Encoder端Input的句子向量化表示。
优点:通过Input和Story的联合作用使得Decoder更关注于Input的刺激。

神经图灵机模型[1]的Attention参数输入为:
1). Encoder端Story的句子级别矩阵化存储;
2). Encoder端Input的句子向量化表示;
3). Attention机制的上一时刻状态。
优点:引入Attention上一时刻状态,更适用于Memory的连续寻址。

[4] 2015 ArXiv, Empirical Study on Deep Learning Models for QA (IBM Waston)

博文出处:http://jacoxu.com/?p=1819