Skip to Content
为深度学习编程 PyTorch
book

为深度学习编程 PyTorch

by Ian Pointer
July 2025
Intermediate to advanced
220 pages
3h
Chinese
O'Reilly Media, Inc.
Book available
Content preview from 为深度学习编程 PyTorch

第 5 章 文本分类 文本分类

本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com

我们暂时抛开图像,将目光转向另一个领域,在这个领域中,深度学习已被证明是对传统技术的重大进步:自然语言处理(NLP)。谷歌翻译就是一个很好的例子。最初,处理翻译的代码多达 50 万行。基于 TensorFlow 的新系统大约只有 500 行,而且性能比旧方法更好。

最近,在将迁移学习(你在第 4 章中已经了解过)引入 NLP 问题方面也取得了突破性进展。Transformer 架构等新架构催生了 OpenAI 的 GPT-2 等网络,其中较大的变体所生成的文本质量几乎与人类无异(事实上,OpenAI 并未公布该模型的权重,因为担心它被恶意使用)。

本章旋风式地介绍了递归神经网络和嵌入。然后,我们将探讨torchtext 库,以及如何将其用于基于 LSTM 模型的文本处理。

递归神经网络 Network+

如果我们回顾一下迄今为止我们是如何使用基于 CNN 的架构的,就会发现它们总是在一个完整的时间快照上工作。但考虑一下这两个句子片段:

The cat sat on the mat.

She got up and impatiently climbed on the chair, meowing for food.

如果你把这两个句子一个接一个地输入 CNN,然后问:猫在哪里?你就会遇到问题,因为 Network+ 没有记忆的概念。在处理具有时间域的数据(如文本、语音、视频和时间序列数据)时,这一点非常重要。1递归神经网络(RNN)通过隐藏状态赋予神经网络记忆,从而解决了这一问题。

RNN 看起来像什么?我最喜欢的解释是:"想象一下神经网络与for 循环的交叉"。图 5-1显示了一个经典的 RNN 结构图。

Classical RNN diagram
图 5-1. 一个 RNN

我们在时间步长为t 时添加输入,得到隐藏输出状态ht,输出也会反馈到 RNN 中,用于下一个时间步长。如图 5-2 所示,我们可以展开这个网络,深入了解发生了什么。

Unrolled RNN diagram
图 5-2. 未展开的 RNN

这里有一组全连接层(共享参数)、一系列输入和输出。输入数据被送入 Network+,而序列中的下一个项目被预测为输出。从展开的视图中,我们可以看到 RNN 可以被看作是全连接层的流水线,连续的输入被输入到序列中的下一层(层与层之间通常会插入ReLU 等非线性因素)。当我们完成预测序列后,就必须通过 RNN 反向传播误差。由于这涉及到网络步骤的回溯,因此这一过程被称为时间反向传播。先计算整个序列的误差,然后如图 5-2 所示展开网络,计算每个时间步的梯度,并结合起来更新网络的共享参数。你可以把它想象成在单个网络上进行反推,然后将所有梯度相加。

这就是 RNN 背后的理论。但这种简单的结构也存在一些问题,我们需要讨论一下这些问题是如何被更新的架构所克服的。

长短期记忆网络

在实践中,RNNs 过去和现在都特别容易受到我们在第 2 章中谈到的梯度消失问题的影响,或者出现梯度爆炸 ...

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.
Start your free trial

You might also like

产品路线图全面升级

产品路线图全面升级

C. Todd Lombardo, Bruce McCarthy, Evan Ryan, Michael Connors
超越Vibe编程

超越Vibe编程

Addy Osmani

Publisher Resources

ISBN: 9798341662902Supplemental Content