郭震 AI公众号:郭震AI

2 深度学习在NLP中的应用之LSTM与GRU

发布日期:

最近更新:

分类: NLP进阶

预计阅读: 5 分钟

阅读次数: 0

预计阅读5 分钟
结构重点8 个
图文要点6 张
正文规模2.3k 字

整理说明

这篇内容怎么整理

郭震 · 2026-06-04

独立整理围绕 8 个结构重点拆成环境、步骤、验证点和常见误区,尽量让读者能照着复现。
图文对照保留 6 张和配置、流程、判断结果有关的图片,方便快速定位正文重点。
持续校对工具、模型和命令变化较快,后续优先修正入口、参数和风险提醒。

阅读路线

先按这条路线读

先抓住主线,再回到代码、配置和图文细节,读起来会更稳。

图文要点

先看本文图文节点

按图先建立主线,再跳回正文核对步骤、配置和判断标准。

深度学习在NLP中的应用之LSTM与GRU结构图查看大图
深度学习在NLP中的应用之LSTM与GRU结构图

NLP 进阶学习要把模型结构、任务形式、评估指标和真实样本放在同一条线上。阅读时可以按「LSTM:长短期记忆网络 -> LSTM的结构 -> LSTM的应用案例 -> GRU:门控循环单元」建立结构,再回到正文里的代码、案例或指标做验证。

深度学习在NLP中的应用之LSTM与GRU核对图查看大图
深度学习在NLP中的应用之LSTM与GRU核对图

读完后,用一个真实小任务复查:输入是什么,处理环节在哪里,输出是否可验收;失败时先查「LSTM:长短期记忆网络」,再查「LSTM的结构」。

在上一篇教程中,我们回顾了深度学习的基础知识,为自然语言处理(NLP)中的深度学习技术打下了扎实的基础。在本篇中,我们将深入探讨两种关键的循环神经网络(RNN)架构:长短期记忆网络(LSTM)和门控循环单元(GRU)。这两种结构在处理序列数据时,相较于传统的RNN具有显著的优势,尤其是在文本生成、情感分析和机器翻译等NLP任务中。

1. LSTM:长短期记忆网络

LSTM由Hochreiter和Schmidhuber于1997年提出,旨在解决传统RNN在长序列训练时面临的梯度消失和梯度爆炸问题。

LSTM与GRU应用判断卡查看大图
LSTM与GRU应用判断卡

学习 LSTM 与 GRU 时,先看任务是否依赖前后文、历史状态和长期记忆。门控机制的意义,就在于控制信息保留和遗忘。

1.1 LSTM的结构

LSTM通过引入“记忆单元”和多个“门”来控制信息的流动和存储,显著增强了模型对长期依赖关系的学习能力。LSTM的基本结构如下:

  • 遗忘门(Forget Gate): 决定哪些信息需要被遗忘。

    ft=σ(Wf[ht1,xt]+bf)f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f)
  • 输入门(Input Gate): 决定哪些信息需要被更新。

    it=σ(Wi[ht1,xt]+bi)i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i)
  • 候选记忆单元(Candidate Cell State): 创建新的记忆单元。

    C~t=tanh(WC[ht1,xt]+bC)\tilde{C}_t = \tanh(W_C \cdot [h_{t-1}, x_t] + b_C)
  • 更新记忆单元(Cell State Update): 更新记忆单元。

    Ct=ftCt1+itC~tC_t = f_t \ast C_{t-1} + i_t \ast \tilde{C}_t
  • 输出门(Output Gate): 决定输出的内容。

ot=σ(Wo[ht1,xt]+bo)o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o)

最终的输出可以表示为:

ht=ottanh(Ct)h_t = o_t \ast \tanh(C_t)

1.2 LSTM的应用案例

假设我们要构建一个简单的情感分析模型,通过LSTM来判断一段文本的情感是积极还是消极。使用Keras库,我们可以构建如下模型:

from keras.models import Sequential
from keras.layers import LSTM, Dense, Embedding
from keras.preprocessing.sequence import pad_sequences

# 假设已准备训练数据:X_train和y_train
model = Sequential()
model.add(Embedding(input_dim=vocab_size, output_dim=embedding_dim, input_length=max_length))
model.add(LSTM(units=100))
model.add(Dense(units=1, activation='sigmoid'))

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

model.fit(X_train, y_train, epochs=5, batch_size=32)

2. GRU:门控循环单元

GRU是2014年由Kyunghyun Cho等提出的,它是一种相对较新的RNN架构,旨在进一步优化LSTM的结构,具有更少的参数,从而加快训练和推理速度。

NLP 进阶核心脉络卡查看大图
NLP 进阶核心脉络卡

学《深度学习在NLP中的应用之LSTM与GRU》时,可以先找一个自己能复现的小场景,再看相关概念和练习步骤,读完后用自己的例子复述一遍。

2.1 GRU的结构

GRU结合了LSTM中的遗忘门和输入门,并采用了更新门和重置门的设计,其结构如下:

  • 更新门(Update Gate): 结合了遗忘门和输入门的功能。

    zt=σ(Wz[ht1,xt]+bz)z_t = \sigma(W_z \cdot [h_{t-1}, x_t] + b_z)
  • 重置门(Reset Gate): 决定如何利用过去的信息。

    rt=σ(Wr[ht1,xt]+br)r_t = \sigma(W_r \cdot [h_{t-1}, x_t] + b_r)
  • 新记忆单元(新状态): 结合过去的状态与当前输入。

    h~t=tanh(Wh[rtht1,xt]+bh)\tilde{h}_t = \tanh(W_h \cdot [r_t \ast h_{t-1}, x_t] + b_h)

最终的状态更新为:

ht=(1zt)ht1+zth~th_t = (1 - z_t) \ast h_{t-1} + z_t \ast \tilde{h}_t

2.2 GRU的应用案例

与LSTM类似,我们同样可以使用GRU用于情感分析任务。以下是基于Keras的GRU模型示例:

from keras.models import Sequential
from keras.layers import GRU, Dense, Embedding
from keras.preprocessing.sequence import pad_sequences

# 假设已准备训练数据:X_train和y_train
model = Sequential()
model.add(Embedding(input_dim=vocab_size, output_dim=embedding_dim, input_length=max_length))
model.add(GRU(units=100))
model.add(Dense(units=1, activation='sigmoid'))

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

model.fit(X_train, y_train, epochs=5, batch_size=32)

3. LSTM与GRU的比较

特性 LSTM GRU
结构复杂度 更复杂,包含三个门 相对简单,仅有更新门和重置门
计算效率 通常较慢 通常较快,可以在相似任务中表现出更好的速度
适用场景 长期依赖较强的任务,比如语言模型 一些任务中可与LSTM并驾齐驱,且训练更快
深度学习在NLP中的应用之LSTM与GRU应用复盘卡查看大图
深度学习在NLP中的应用之LSTM与GRU应用复盘卡

学完《深度学习在NLP中的应用之LSTM与GRU》后,不妨换一个自己的场景试一次,重点观察输入、处理和输出是否能对应起来。

深度学习在NLP中的应用之LSTM与GRU应用检查卡查看大图
深度学习在NLP中的应用之LSTM与GRU应用检查卡

如果想把《深度学习在NLP中的应用之LSTM与GRU》用到自己的任务里,可以先缩小场景,只验证一个最关键的判断点。

4. 小结

在本篇教程中,我们深入探讨了LSTM和GRU这两种重要的RNN变体,以及它们在自然语言处理中的应用。了解这些模型的工作原理对我们完成更复杂NLP任务至关重要。在下一篇文章中,我们将讨论”转移学习与预训练模型”,探讨如何利用这些强大的模型来提升我们的NLP任务的效果。

继续阅读

从这篇继续找到相关教程

AI 教程总索引

常见问题

读前先确认这三点

深度学习在NLP中的应用之LSTM与GRU适合谁读?

这是 自然语言处理高级 系列第 2 / 27 篇,适合正在学习自然语言处理高级,并且需要把概念落到操作步骤或判断标准里的读者。

读这篇自然语言处理高级教程要多久?

按中文技术文章阅读速度估算,通读大约 5 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。

这篇文章里的图文节点怎么用?

正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。

分享文章

转发到常用平台

微信/朋友圈可先复制链接

相关教程

AI 教程总索引

继续阅读

继续找到相关 AI 教程

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...