递归神经网络文本生成器

时间:2018-07-23 16:14:05

标签: java neural-network recurrent-neural-network encog

我对神经网络非常陌生,我正在尝试制作一个Elman RNN来生成文本。我在Java中使用Encog。无论我为网络提供什么服务,训练都需要很长时间,而且总是陷入重复的字符序列中。我是神经网络的新手,所以我只想确保自己有正确的概念。我不会为共享代码而烦恼,因为无论如何Encog都会做所有困难的事情。

我训练网络的方式是,我为训练数据中的每个字符创建一个数据对,其中输入是字符,输出是下一个字符。所有这些都放在一个培训集中。这几乎就是我要写的所有内容,因为Encog可以处理其他所有内容。然后,我将一个字符输入网络,它返回一个字符,然后输入一个,然后输入下一个,依此类推。我假设人们通常使用结束符或类似的东西,以便网络告诉您何时停止,但我只是使它停止在1000个字符处才能获得很好的文本样本。我知道Elman网络应该具有上下文节点,但是我认为Encog正在为我处理。上下文节点必须在做某事,因为相同的字符并不总是具有相同的输出。

1 个答案:

答案 0 :(得分:1)

在一个小的数据集中,RNN表现很差,因为它必须从一开始就学习所有内容。因此,如果您的数据集很小(通常将训练集少于1000万个字符视为很小的数据集),则可以收集更多数据。如果您要重复输入一个字符序列,那就可以了。您需要做的就是训练更长的时间。

另一个建议是从字符级别切换到单词级别模型。您将能够从中产生更少的混乱输出。