使用深度学习的生成模型是最近的一个热门主题。无论是解决涉及到反欺诈、拼写检查、语言翻译、让工作变得更轻松的问题,还是成为技术专家 Aviv Ovadya 所预言的信息启示的焦点,内容的自动生成都是未来的发展方向。我知道这是一句信息量丰富的话,所以让我来详细讲讲,好吗?

按照字面意思,生成模型会生成新材料。这可能是指视频、音频、音乐甚至文本的生成,文本是本 Code Pattern 关注的重点。尽管听起来像是很有吸引力,但与任何事物一样,这些模型存在着正面和负面的影响。这些深度学习模型的一个负面影响是,您似乎可以生成任何材料,并让它看起来像真的一样,甚至会对某人或某物造成损害。这意味着某人可以制造发生了某件事的假象,而实际上这件事并未发生。它还意味着,您可以生成没有实际创作过的文章或文本,至少在我们当前的思维框架中可以这样。可以想象,生成的这些作品随后可能被应用到有害的活动上,比如欺骗性评价,诸如 Yelp 和 Amazon 之类的公司必须不断处理这些信息。我们该如何应对这些活动呢?答案是采用完全相同的方法。我知道这看起来很疯狂,但是通过构建用于有害活动的相同模型,可以扩展原始模型来构建一个新模型,用它来对抗将要生成的活动。听我细细道来。以虚假评价为例,第二种模型通过原始模型来了解虚假评价的样子,然后通过根据原始模型构造的模型,预测每条新评价是虚假评价的可能性。这意味着,原始欺骗性模型创建虚假评价,然后第二个模型分析该输出,了解生成的虚假评价是什么样的。很酷,对吧?现在您也可以进行学习。本 Code Pattern 将介绍一种使用长短期记忆 (LSTM) 层和递归神经网络 (RNN) 的生成式语言模型。

对于不熟悉的读者来讲,RNN 使用了包含隐藏记忆层的网络,通过最高的几率来预测下一步。不同于卷积神经网络 (CNN) 使用正向传播或沿其管道向前移动,RNN 利用了反向传播或沿管道绕回来使用上面提到的“记忆”。例如,如果我们考虑一句话,在创造这句话时,模型利用了记忆来考虑已写下的内容,然后生成接下来要写的内容。对于我们的模型,RNN 使用已输入的字符来学习如何生成新字母或字符来作为输出,然后绕回来记忆它学到的信息。输出随后会形成一个单词,最终会获得一个单词集合,然后得到句子和段落,您在运行该模型并练习本 Code Pattern 时会看到已生成的内容。LSTM 提高了我们生成这些单词和句子的性能。

使用本 code pattern,您将学习如何使用 TensorFlow 和 Keras 生成一条饭店评价。 尽管本 Code Pattern 的篇幅有限,只介绍了文本生成,但它为学习如何构建一种语言模型打了坚实的基础。希望它会激励您动手尝试,并让它变得更完美!

本文翻译自: Use TensorFlow and Keras to build a language model for text generation (2018-03-26)

加入讨论