Www.KL126.Com - 坤龙教育资源网

资源 textgenrnn:只需几行代码即可训练文本生成网络

作者:habao 来源:未知 日期:2018-4-29 4:25:07 人气: 标签:网站源码怎么用
导读:原标题:资源textgenrnn:只需几行代码即可训练文本生成网络选自GitHub作者:m通过简简单单的几行代码,使用预训练神经网络生成文本,或者在任意文本数据集上训练…

  原标题:资源 textgenrnn:只需几行代码即可训练文本生成网络 选自GitHub 作者:m

  通过简简单单的几行代码,使用预训练神经网络生成文本,或者在任意文本数据集上训练你自己的任意规模和复杂度的文本生成神经网络。

  它是一个使用注意力权重(attention-weighting)和跳跃嵌入(skip-embedding)等先进技术的现代神经网络架构,用于加速训练并提升模型质量。

  在 GPU 上训练时能够使用强大的 CuDNN 实现 RNN,这比标准的 LSTM 实现大大加速了训练时间。

  这个模型的权重比较小(占磁盘上 2 MB 的空间),它们可以很容易地被保存并加载到新的 textgenrnn 实例中。因此,你可以使用经过数百次数据输入训练的模型。(实际上,textgenrnn 的学习能力过于强大了,以至于你必须大大提高温度(Temperature)来得到有创造性的输出。)

  /weights 包含在上述的数据集上进一步预训练的模型,它可以被加载到 textgenrnn 中。

  本文涉及到的预训练模型遵循 DeepMoji 的神经网络架构()的。对于默认的模型,textgenrnn 接受最多 40 个字符的输入,它将每个字符转换为 100 维的字符嵌入向量,并将这些向量输入到一个包含 128 个神经元的长短期记忆(LSTM)循环层中。接着,这些输出被传输至另一个包含 128 个神经元的 LSTM 中。以上所有三层都被输入到一个注意力层中,用来给最重要的时序特征赋权,并且将它们取平均(由于嵌入层和第一个 LSTM 层是通过跳跃连接与注意力层相连的,因此模型的更新可以更容易地向后并且防止梯度消失)。该输出被映射到最多 394 个不同字符的概率分布上,这些字符是序列中的下一个字符,包括大写字母、小写字母、标点符号和表情。(如果在新的数据集上训练一个新模型,可以配置所有提到的数值参数。)

  或者,如果可以获得每个文本文档的语境标签,则可以在语境模式下训练模型。在这种模式下,模型会学习给定语境的文本,这样循环层就会学习到非语境化的语言。前面提到的只包含文本的径可以借助非语境化层提升性能;总之,这比单纯使用文本训练的模型训练速度更快,且具备更好的定量和定性的模型性能。

  软件包包含的模型权重是基于(通过 BigQuery)在 Reddit 上提交的成千上万的文本文档训练的,它们来自各种各样的 subreddit 板块。此外,该网络还采用了上文提到的非语境方法,从而提高训练的性能,同时减少作者的。

  当使用 textgenrnn 在新的文本数据集上对模型进行微调时,所有的层都会被重新训练。然而,由于原始的预训练网络最初具备鲁棒性强得多的「知识」,新的 textgenrnn 最终能够训练地更快、更准确,并且可以学习原始数据集中未出现的新关系。(例如:预训练的字符嵌入包含所有可能的现代互联网语法类型中的字符语境。)

  此外,重新训练是通过基于动量的优化器和线性衰减的学习率实现的,这两种方法都可以防止梯度爆炸,并且大大降低模型在长时间训练后发散的可能性。

  即使使用经过严格训练的神经网络,你也不能每次都能得到高质量的文本。这就是使用神经网络文本生成的博文或推文通常生成大量文本,然后挑选出最好的那些再进行编辑的主要原因。

  不同的数据集得到的结果差异很大。因为预训练的神经网络相对来说较小,因此它不能像上述博客展示的 RNN 那样存储大量的数据。为了获得最佳结果,请使用至少包含 2000-5000 个文档的数据集。如果数据集较小,你需要在调用训练方法和/或从头开始训练一个新模型时,通过调高 num_epochs 参数来对模型进行更长时间的训练。即便如此,目前也没有一个判断模型」好坏」的式方法。

  你并不一定需要用 GPU 重新训练 textgenrnn,但是在 CPU 上训练花费的时间较长。如果你使用 GPU 训练,我你增加 batch_size 参数,获得更好的硬件利用率。

  一个使用 tensorflow.js 的基于 web 的实现(由于网络规模小,效果特别好);

  有监督的文本生成模式:允许模型显示 top n 选项,并且由用户选择生成的下一个字符/单词;

  在 Volta/TPU 上进行超高速训练的 FP16 浮点运算(Keras 对此有很好的支持)。

  Tweet Generator:训练一个为任意数量的 Twitter 用户生成推文而优化的神经网络。

  

下一篇:没有资料