我对神经网络的了解非常基础,但我的目标是:给定一组简短的输入(一个单词字符串和数字),我希望经过训练的网络生成一段与输入数据相关的文本。
我以前用 RNN 来进行基本的自然语言生成,但从来没有基于给定的输入。(例如,我玩过https://github.com/karpathy/char-rnn)
那里有太多信息,我不确定我应该使用哪种模型或从哪里开始。
我对神经网络的了解非常基础,但我的目标是:给定一组简短的输入(一个单词字符串和数字),我希望经过训练的网络生成一段与输入数据相关的文本。
我以前用 RNN 来进行基本的自然语言生成,但从来没有基于给定的输入。(例如,我玩过https://github.com/karpathy/char-rnn)
那里有太多信息,我不确定我应该使用哪种模型或从哪里开始。
这个问题太宽泛,无法用一个答案来回答,但我试图提及一些有助于您继续研究该领域的事情。
什么是文本生成?
您提到的问题主要是文学中的文本生成。给模型一段文本(例如,一系列字符、单词或段落),模型尝试完成文本的其余部分。您的模型越好,生成的文本的语义和句法结构就会越好。
文本生成本身是一种语言建模问题。语言建模是许多自然语言处理(NLP)的核心问题。经过训练的语言模型根据文本中使用的先前单词序列来学习单词出现的可能性。这是什么意思?例如,在句子:A cat sits on the ...
中,下一个词将mat
是大于 to be的概率water
。这个简单的想法是语言建模背后的主要直觉。有关此主题的详细说明,请参阅本书的第 4 章。
不同类型的语言建模:
提出了不同类型的语言建模方法,主要分为统计语言模型和神经语言模型。要对这两种方法进行比较,请查看此博客文章。
最近,在语言模型开发中使用神经网络已成为主流方式,因为:
非线性神经网络模型解决了传统语言模型的一些缺点:它们允许对越来越大的上下文大小进行调节,而参数数量仅线性增加,它们减轻了手动设计退避顺序的需要,并且它们支持跨不同上下文的泛化.
第 109 页,自然语言处理中的神经网络方法,2017 年。
用于语言建模的不同类型的神经网络:
提出了一堆用于语言建模的神经网络架构:循环神经网络、前馈神经网络、卷积神经网络等,各有优劣。根据这里RNN 模型实现的最先进的基准。
RNN 被称为循环,因为它们对序列的每个元素执行相同的任务,输出取决于先前的计算。考虑 RNN 的另一种方式是,它们有一个“记忆”,可以捕获有关迄今为止计算出的信息。访问此处了解有关 RNN 的更多详细信息。
如何实现 RNN 进行文本生成?
请在此处查看 Tensrflow 中的官方示例。
我建议您从一些玩具样品开始,例如:
自然文本生成是一项复杂的任务。它可以通过 N_gram 方法、RNN 网络(如您所提到的)来完成,您可以通过上面的链接找到它的完成方式。