每天五分钟自然言语处理NLP:如何对序列模型采样生成旧事稿?
作者头像
  • 互联网之窗
  • 2020-06-21 20:47:45 4

文章重点

在后续的学习中,我们将探讨语言模型的概念。这种模型能够评估一句话属于自然语言的概率,并且能够反映训练数据的分布特征。这意味着,如果使用新闻稿来训练一个序列语言模型,那么生成的文本风格会与新闻稿相似;同样地,如果使用莎士比亚的作品来训练模型,生成的文本风格则会接近莎士比亚的文风。因此,如果我们希望生成符合新闻稿风格的文本,可以直接对新闻稿模型进行采样;而若要生成莎士比亚风格的文本,则可以对莎士比亚模型进行采样。

如何采样

首先,我们需要明确的是,训练好的序列模型能够模拟任意特定单词序列出现的概率。我们的任务是通过对这些概率分布进行采样,从而生成新的单词序列。

假设我们已经有一个序列模型,为了对其进行采样,我们需要执行以下步骤:

序列模型

第一步是对模型生成的第一个词 ( y^{<1>} ) 进行采样。为此,我们输入 ( x^{<1>} = 0 ) 和 ( a^{<0>} = 0 )(均为初始状态)。模型在第一个时间步生成的输入经过 softmax 处理,转化为各个词的概率分布,例如第一个词是“happy”的概率是多少,第一个词是“apple”的概率是多少,以及第一个词是“UNK”(未知词)的概率是多少等。我们可以根据这些概率分布进行采样,从而确定第一个词的具体值。

接下来进入下一个时间步,这时需要将第一个词的 one-hot 编码 ( y^{<1>} ) 作为输入。然后,softmax 层将预测下一个词 ( y^{<2>} ) 的概率分布。例如,如果第一个词是“The”,则将其 one-hot 编码作为 ( x^{<2>} ) 输入,接着计算在第一个词是“The”的情况下,第二个词应该是哪个词。然后对 ( y^{<2>} ) 进行采样,这样就生成了第二个词。

接下来重复上述过程,无论上一步采样得到的是什么词,都将它进行 one-hot 编码并作为下一个时间步的输入,直至生成最后一个词。

这样我们就能获得一个符合该模型的完整句子。这便是从 RNN 语言模型中生成随机句子的基本过程。

何时停止

我们可以采用多种方法来控制模型何时停止采样: - 方法一:如果你的字典中包含句子结束标识符(如 <EOS>),可以持续采样直到遇到 <EOS> 标识符为止。 - 方法二:另一种方法是设置固定的时间步数,例如设定为 9 步。在达到设定的时间步数之前,持续执行上述采样过程。如果在过程中出现未知词标识符(如 <UNK>),可以选择重新采样,直到得到一个不是未知词的词。当然,如果你不介意生成的文本中出现未知词标识符,也可以忽略它们。

    本文来源:图灵汇
责任编辑: : 互联网之窗
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
采样旧事序列生成模型言语分钟每天自然处理
    下一篇