生成式长短期记忆网络简介

长短期记忆循环神经网络是为序列预测而开发的。

除了序列预测问题,LSTM 还可以用作生成模型。

在这篇文章中,您将了解 LSTM 如何用作生成模型。

完成这篇文章后,您将了解:

  • 关于生成模型,重点关注用于文本的生成模型,称为语言建模。
  • 已使用 LSTM 生成模型的应用示例。
  • 如何使用 LSTM 为生成模型建模文本的示例。

使用我的新书《Python 长短期记忆网络》启动您的项目,其中包括逐步教程和所有示例的Python 源代码文件。

让我们开始吧。

Gentle Introduction to Generative Long Short-Term Memory Networks

生成式长短期记忆网络简介
图片来源:Fraser Mummery,保留部分权利。

需要 LSTM 帮助进行序列预测吗?

参加我的免费7天电子邮件课程,了解6种不同的LSTM架构(附代码)。

点击注册,同时获得该课程的免费PDF电子书版本。

生成模型

LSTM 可以用作生成模型。

给定大量的序列数据语料库,例如文本文档,LSTM 模型可以设计用于学习语料库的通用结构属性,并在给定种子输入时,可以生成代表原始语料库的新序列。

在自然语言处理领域,开发一个模型来概括文本语料库的问题称为语言建模。语言模型可以在词级别工作,学习文档中单词之间的概率关系,以便准确地完成句子并生成全新的句子。最具挑战性的是,语言模型在字符级别工作,从字符序列中学习,并一次生成一个字符的新序列。

字符级语言建模的目标是预测序列中的下一个字符。

—— 使用循环神经网络生成文本,2011年。

尽管更具挑战性,但字符级模型的额外灵活性允许生成新词、添加标点符号以及生成文本数据中可能存在的任何其他结构。

……一次预测一个字符从序列生成的角度来看更有趣,因为它允许网络发明新词和字符串。

——《使用递归神经网络生成序列》,2013年。

语言建模是生成式 LSTM 最受研究的应用,也许是因为使用了可以量化和比较模型性能的标准数据集。这种方法已用于解决一系列有趣的语言建模问题,例如:

  • 生成维基百科文章(包括标记)。
  • 生成莎士比亚等伟大作家的片段。
  • 生成技术手稿(包括标记)。
  • 生成计算机源代码。
  • 生成文章标题。

结果的质量各不相同;例如,标记或源代码可能需要人工干预才能渲染或编译。尽管如此,结果还是令人印象深刻的。

该方法也已应用于不同的领域,在这些领域中存在大量现有的序列信息语料库,并且可以一次一步地生成新序列,例如:

  • 手写生成。
  • 音乐生成。
  • 语音生成。
Example of LSTMs used in Automatic Handwriting Generation

LSTM 用于自动手写生成的示例。
摘自《使用循环神经网络生成序列》,2014年。

生成式 LSTM

生成式 LSTM 并非真正的架构,它更多的是关于 LSTM 预测模型学习什么以及如何使用该模型的视角转变。

我们可以想象使用任何 LSTM 架构作为生成模型。在这种情况下,我们将使用一个简单的 Vanilla LSTM。

Vanilla LSTM Architecture for Generative Models

用于生成模型的 Vanilla LSTM 架构

在字符级语言模型的情况下,所有可能字符的字母表是固定的。独热编码用于学习输入序列和预测输出序列。

使用一对一模型,其中每个输入时间步预测一个步。这意味着输入序列可能需要专门处理,以便向量化或格式化以有效训练监督模型。

例如,给定序列

需要构建一个数据集,例如

这可以按原样呈现为一步时间步样本的数据集,这可能对网络造成很大的限制(例如,没有 BPTT)。

或者,它可以向量化为固定长度的输入序列,用于多对一时间步模型,例如

或者,用于一对多时间步模型的固定长度输出序列

或者这些方法的一些变体。

请注意,在进行预测时需要相同的向量化表示,这意味着预测的字符需要作为后续样本的输入呈现。这在实现上可能相当笨拙。

网络的内部状态可能需要仔细管理,也许在输入序列的特定位置(例如段落、页面或章节的末尾)而不是在每个输入序列的末尾重置。

进一步阅读

如果您想深入了解此主题,本节提供了更多资源。

论文

文章

总结

在这篇文章中,您了解了 LSTM 作为生成模型的用途。

具体来说,你学到了:

  • 关于生成模型,重点关注用于文本的生成模型,称为语言建模。
  • 已使用 LSTM 生成模型的应用示例。
  • 如何使用 LSTM 为生成模型建模文本的示例。

你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。

立即开发用于序列预测的 LSTM!

Long Short-Term Memory Networks with Python

在几分钟内开发您自己的 LSTM 模型。

...只需几行python代码

在我的新电子书中探索如何实现
使用 Python 构建长短期记忆网络

它提供关于以下主题的自学教程
CNN LSTM、编码器-解码器 LSTM、生成模型、数据准备、进行预测等等...

最终将 LSTM 循环神经网络引入。
您的序列预测项目。

跳过学术理论。只看结果。

查看内容

暂无评论。

发表评论

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。