生成网络
循环神经网络(RNN)及其门控单元变体(如长短时记忆单元 LSTM 和门控循环单元 GRU)提供了一种语言建模机制,它们可以学习单词的顺序并预测序列中的下一个单词。这使得我们可以使用 RNN 执行生成…
课程内容
生成网络
课前测验
循环神经网络(RNN)及其门控单元变体(如长短时记忆单元 LSTM 和门控循环单元 GRU)提供了一种语言建模机制,它们可以学习单词的顺序并预测序列中的下一个单词。这使得我们可以使用 RNN 执行生成任务,例如普通文本生成、机器翻译,甚至图像描述。
✅ 想想你在输入时受益于文本补全等生成任务的所有场景。研究一下你喜欢的应用程序,看看它们是否使用了 RNN。
在我们上一单元讨论的 RNN 架构中,每个 RNN 单元会生成下一个隐藏状态作为输出。然而,我们也可以为每个循环单元添加另一个输出,这样就可以输出一个序列(与原始序列长度相等)。此外,我们可以使用不在每一步接受输入的 RNN 单元,只接受一些初始状态向量,然后生成一系列输出。
这使得可以构建不同的神经网络架构,如下图所示:

图片来源于 Andrej Karpaty 的博客文章 循环神经网络的非凡有效性
- 一对一是传统的神经网络,具有一个输入和一个输出
- 一对多是一种生成架构,接受一个输入值并生成一系列输出值。例如,如果我们想训练一个图像描述网络来生成图片的文本描述,可以将图片作为输入,通过 CNN 获得其隐藏状态,然后通过循环链逐字生成描述
- 多对一对应于我们在上一单元中描述的 RNN 架构,例如文本分类
- 多对多或序列到序列对应于任务如机器翻译,其中第一个 RNN 收集输入序列中的所有信息到隐藏状态,另一个 RNN 链将该状态展开为输出序列。
在本单元中,我们将重点关注帮助生成文本的简单生成模型。为了简化,我们将使用字符级标记化。
我们将训练这个 RNN 逐步生成文本。在每一步中,我们将取长度为 nchars 的字符序列,并要求网络为每个输入字符生成下一个输出字符:

