第 13 章 使用 RNN 和 CNN 处理序列 使用RNN 和 CNN处理序列
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
预测未来 你经常这样做,不管是在完成朋友的句子,还是在早餐时预感咖啡的香味。在本章中,我们将讨论递归神经网络 (RNN)--一类可以预测未来的网络(嗯,在一定程度上)。RNN 可以分析时间序列数据,例如网站的日活跃用户数、城市的每小时气温、家庭的日耗电量、附近汽车的行驶轨迹等。一旦 RNN 从数据中学习到过去的模式,它就能利用所学知识预测未来,当然,前提是过去的模式在未来仍然有效。
更广泛地说,RNN 可以处理任意长度的序列,而不是固定大小的输入。例如,它们可以将句子、文档或音频样本作为输入,这使得它们在自动翻译或语音转文本等自然语言处理应用中极为有用。
在本章中,我们将首先介绍 RNN 的基本概念,以及如何使用反向传播进行时间训练。然后,我们将使用 RNN 预测时间序列 。在此过程中,我们将研究常用于预测时间序列的自回归移动平均 (ARMA) 模型系列,并将其作为基准与我们的 RNN 进行比较。之后,我们将探讨 RNN 面临的两大难题:
-
不稳定梯度(第 11 章将讨论),可通过各种技术缓解 ,包括递归剔除和递归层归一化。
-
短时记忆(非常)有限,可使用长短时记忆(LSTM)和门控递归单元(GRU)单元进行扩展。
RNN 并不是唯一能够处理序列数据的神经网络类型。对于较小的序列,普通的密集网络也能胜任;而对于很长的序列,如音频样本或文本,卷积神经网络其实也能很好地胜任。我们将讨论这两种可能性,并在本章最后实现一个 WaveNet--一种能够处理数万个时间步序列的 CNN 架构 。不过,我们还能做得更好!在第 14 章中,我们将把 RNN 应用于自然语言处理 (NLP),并了解如何利用注意力机制提升 RNN。注意力是变换器的核心,我们将在第 15 章中了解变换器:它们是目前序列处理、NLP 甚至计算机视觉领域的最先进技术。但在此之前,我们先从最简单的 RNN 开始!
递归神经元和层
到目前为止,我们一直在关注前馈神经网络,在这种网络中,激活力只朝一个方向流动,即从输入层流向输出层。递归神经网络看起来非常像前馈神经网络 ,只不过它也有指向后方的连接。
让我们来看看最简单的 RNN,它由一个神经元 接收输入,产生输出,并将输出发送回自身(见图 13-1 左)。在每个时间步 t(也称为帧),这个递归神经元接收输入x(t),以及自己在上一个时间步的输出ŷ(t-1)。由于在第一个时间步没有前一个输出,因此一般将其设置为零。我们可以用时间轴来表示这个微小的 Network+ (见图 13-1 右)。这个 被称为通过时间展开网络(每个时间步表示一次相同的递归神经元)。
图 13-1. 通过时间展开的递归神经元(左)(右)
您可以轻松创建一层递归神经元。如图 13-2 所示,在每个时间步长t,每个神经元都会接收上一个时间步长的输入向量x(t)和输出向量ŷ(t-1)。请注意,现在输入和输出都是向量(只有一个神经元时,输出是标量)。
图 13-2. 通过时间展开的一层递归神经元(左)(右)
每个递归神经元都有两组权重:一组用于输入x(t),另一组用于上一时间步的输出 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access