我应该使用哪种类型的神经网络根据某些输入来生成段落?

时间:2018-12-19 18:39:56

标签: machine-learning neural-network recurrent-neural-network natural-language-processing

我对神经网络的知识非常基础,但这是我的目标: 给定一组简短的输入(一个单词字符串和一个数字),我希望受过训练的网络生成一段与输入数据有关的文本。

我以前经常使用RNN进行基本的自然语言生成,但是从来没有基于给定的输入。 (例如,我玩过https://github.com/karpathy/char-rnn

那里有很多信息,我不确定应该使用哪种模型或从哪里开始。

2 个答案:

答案 0 :(得分:1)

我建议您从一些玩具样本开始,例如:

自然文本生成是一项复杂的任务。可以使用N_gram方法,RNN网络(如您所述)来完成,可以通过上面的链接找到实现方法。

答案 1 :(得分:1)

这个问题太笼统了,无法一口气回答,但我试图提及一些对继续您在这一领域的研究有帮助的事情。

什么是文本生成?

您提到的问题在文学中主要被认为是文本生成。给定模型的一段文本(例如,字符,单词或段落的序列),模型将尝试完成其余文本。您的模型越好,生成的文本的 em syntactically 结构就越好。

文本生成本身是一种Language Modelling问题。语言建模是许多自然语言处理(NLP)的核心问题。训练有素的语言模型根据文本中使用的单词的先前顺序来学习单词出现的可能性。这是什么意思?例如,在句子A cat sits on the ...中,下一个单词为mat的概率要大于water。这个简单的想法是语言建模背后的主要直觉。有关该主题的详尽说明,请参见chapter 4 of this book

各种语言建模:

针对语言建模提出了多种方法,这些方法主要分为统计神经语言模型。为了比较这两种方法,请查看this博客文章。

最近,在语言模型开发中使用神经网络已成为主要方式,因为:

  

非线性神经网络模型解决了一些缺点   传统语言模型:它们允许越来越多的条件   较大的上下文大小,并且线性增加   参数,它们减轻了手动设计退避的需要   订单,并且它们支持跨不同上下文的泛化。

     

第109页,自然语言处理中的神经网络方法,   2017。

用于语言建模的各种神经网络:

为使用recurrent neural networkfeedforward neural networkconvolution neural network等语言进行建模而提出的一堆神经网络体系结构,各有其优缺点。根据{{​​3}},RNN模型达到了最新的基准。

RNN之所以称为递归,是因为它们对序列的每个元素执行相同的任务,其输出取决于先前的计算。思考RNN的另一种方法是,它们具有“内存”,可以捕获有关到目前为止已计算出的内容的信息。访问here,以获取有关RNN的更多详细信息。

如何为文本生成实现RNN?

请参见Tensrflow here中的官方示例。