我正在尝试制作一个使用序列到序列模型来回应用户输入的聊天机器人。问题在于输入给模型的序列几乎永远不会相同。输入序列是一个单词列表。我已经创建了一个词汇表,将这个序列中的每个单词映射到其独特的ID上,然而,输入仍然是可变的,不是固定的,所以我不能简单地使用序列到序列模型。我了解到可以使用编码器将单词序列映射到一个固定的向量表示,然后使用解码器将该向量映射回一个序列。
我的问题是如何将单词序列编码为一个固定的向量?有没有什么技术可以用于这个目的?
回答:
将单词序列映射到向量表示可以通过循环神经网络(RNN)来实现。你可以看看这个介绍:http://colah.github.io/posts/2015-08-Understanding-LSTMs/
TensorFlow工具包中有一个教程,介绍了这种序列到序列映射架构,并提供了示例代码:https://www.tensorflow.org/versions/r0.11/tutorials/index.html
然而,在开始使用RNN之前,我建议先学习神经网络的基础知识:http://deeplearning.net/software/theano/tutorial/#basics
Bengio的深度学习书籍:http://www.deeplearningbook.org/涵盖了很多关于RNN的材料,不过其中涉及了相当多的数学内容。