长短期记忆循环神经网络是为序列预测而开发的。
除了序列预测问题,LSTM 还可以用作生成模型。
在这篇文章中,您将了解 LSTM 如何用作生成模型。
完成这篇文章后,您将了解:
- 关于生成模型,重点关注用于文本的生成模型,称为语言建模。
- 已使用 LSTM 生成模型的应用示例。
- 如何使用 LSTM 为生成模型建模文本的示例。
使用我的新书《Python 长短期记忆网络》启动您的项目,其中包括逐步教程和所有示例的Python 源代码文件。
让我们开始吧。

生成式长短期记忆网络简介
图片来源:Fraser Mummery,保留部分权利。
需要 LSTM 帮助进行序列预测吗?
参加我的免费7天电子邮件课程,了解6种不同的LSTM架构(附代码)。
点击注册,同时获得该课程的免费PDF电子书版本。
生成模型
LSTM 可以用作生成模型。
给定大量的序列数据语料库,例如文本文档,LSTM 模型可以设计用于学习语料库的通用结构属性,并在给定种子输入时,可以生成代表原始语料库的新序列。
在自然语言处理领域,开发一个模型来概括文本语料库的问题称为语言建模。语言模型可以在词级别工作,学习文档中单词之间的概率关系,以便准确地完成句子并生成全新的句子。最具挑战性的是,语言模型在字符级别工作,从字符序列中学习,并一次生成一个字符的新序列。
字符级语言建模的目标是预测序列中的下一个字符。
—— 使用循环神经网络生成文本,2011年。
尽管更具挑战性,但字符级模型的额外灵活性允许生成新词、添加标点符号以及生成文本数据中可能存在的任何其他结构。
……一次预测一个字符从序列生成的角度来看更有趣,因为它允许网络发明新词和字符串。
——《使用递归神经网络生成序列》,2013年。
语言建模是生成式 LSTM 最受研究的应用,也许是因为使用了可以量化和比较模型性能的标准数据集。这种方法已用于解决一系列有趣的语言建模问题,例如:
- 生成维基百科文章(包括标记)。
- 生成莎士比亚等伟大作家的片段。
- 生成技术手稿(包括标记)。
- 生成计算机源代码。
- 生成文章标题。
结果的质量各不相同;例如,标记或源代码可能需要人工干预才能渲染或编译。尽管如此,结果还是令人印象深刻的。
该方法也已应用于不同的领域,在这些领域中存在大量现有的序列信息语料库,并且可以一次一步地生成新序列,例如:
- 手写生成。
- 音乐生成。
- 语音生成。

LSTM 用于自动手写生成的示例。
摘自《使用循环神经网络生成序列》,2014年。
生成式 LSTM
生成式 LSTM 并非真正的架构,它更多的是关于 LSTM 预测模型学习什么以及如何使用该模型的视角转变。
我们可以想象使用任何 LSTM 架构作为生成模型。在这种情况下,我们将使用一个简单的 Vanilla LSTM。

用于生成模型的 Vanilla LSTM 架构
在字符级语言模型的情况下,所有可能字符的字母表是固定的。独热编码用于学习输入序列和预测输出序列。
使用一对一模型,其中每个输入时间步预测一个步。这意味着输入序列可能需要专门处理,以便向量化或格式化以有效训练监督模型。
例如,给定序列
1 |
"hello world" |
需要构建一个数据集,例如
1 2 3 4 |
'h' => 'e' 'e' => 'l' 'l' => 'l' ... |
这可以按原样呈现为一步时间步样本的数据集,这可能对网络造成很大的限制(例如,没有 BPTT)。
或者,它可以向量化为固定长度的输入序列,用于多对一时间步模型,例如
1 2 3 4 |
['h', 'e', 'l'] => 'l' ['e', 'l', 'l'] => 'o' ['l', 'l', 'o'] => ' ' ... |
或者,用于一对多时间步模型的固定长度输出序列
1 2 3 4 |
'h' => ['e', 'l', 'l'] 'e' => ['l', 'l', 'o'] 'l' => ['l', 'o', ' '] ... |
或者这些方法的一些变体。
请注意,在进行预测时需要相同的向量化表示,这意味着预测的字符需要作为后续样本的输入呈现。这在实现上可能相当笨拙。
网络的内部状态可能需要仔细管理,也许在输入序列的特定位置(例如段落、页面或章节的末尾)而不是在每个输入序列的末尾重置。
进一步阅读
如果您想深入了解此主题,本节提供了更多资源。
论文
- 使用循环神经网络生成文本, 2011.
- 使用循环神经网络生成序列, 2013.
- 基于双向 LSTM 循环神经网络的 TTS 合成, 2014.
- 首次尝试使用 LSTM 循环神经网络进行音乐创作, 2002.
- 从几首人类旋律的循环网络学习中生成爵士旋律, 2005.
文章
- 在 Python 中使用 Keras 和 LSTM 循环神经网络生成文本, 2016
循环神经网络的不可思议的有效性, 2015. - 语言模型在维基百科上。
总结
在这篇文章中,您了解了 LSTM 作为生成模型的用途。
具体来说,你学到了:
- 关于生成模型,重点关注用于文本的生成模型,称为语言建模。
- 已使用 LSTM 生成模型的应用示例。
- 如何使用 LSTM 为生成模型建模文本的示例。
你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。
暂无评论。