【深度学习】 循环神经网络

目录

序列数据

[为什么在 序列模型 中 使用 普通神经网络(如全连接网络)和CNN 效果不好?](#为什么在 序列模型 中 使用 普通神经网络(如全连接网络)和CNN 效果不好?)

序列模型

序列模型的两种建模方案

[方案A: 马尔科夫假设](#方案A: 马尔科夫假设)

[方案B: 隐变量模型](#方案B: 隐变量模型)

语言模型

建模概率---基于统计的方法

RNN

工作流程

RNN的前向传播:

RNN的损失函数计算:平均交叉熵损失

RNN的训练------时间反向传播 (BPTT)

RNN的核心挑战------梯度消失与梯度爆炸

[解决------梯度裁剪 (针对梯度爆炸)](#解决——梯度裁剪 (针对梯度爆炸))

RNN在NLP中的完整应用流程

[情感分类 (many-to-one 任务)](#情感分类 (many-to-one 任务))

第一步:文本预处理

第二步:词向量嵌入

第三步:RNN循环计算

第四步:任务特定输出

RNN语言模型的损失函数

损失函数:序列级平均交叉熵损失

评估指标:困惑度(衡量模型预测的不确定性,值越小越好。)

RNN的输入输出类型

[门控循环单元 GRU](#门控循环单元 GRU)

设计动机

核心思想

[GRU 的门控计算](#GRU 的门控计算)

[GRU 的隐状态更新流程](#GRU 的隐状态更新流程)

长短期记忆网络(LSTM)

[LSTM 的三门机制与状态更新](#LSTM 的三门机制与状态更新)

[第一步:决定遗忘什么 ------ 遗忘门](#第一步:决定遗忘什么 —— 遗忘门)

[第二步:输入门 ------ 决定向长期记忆中写入什么](#第二步:输入门 —— 决定向长期记忆中写入什么)

第三步:更新长期记忆(细胞状态)

[第四步:输出门 ------ 决定当前输出(隐状态)是什么](#第四步:输出门 —— 决定当前输出(隐状态)是什么)

自然语言理解的五个层次

自然语言处理的五大难点(歧义)

难点1:不同语言/个体间的信息失真

难点2:词法歧义

难点3:句法歧义

难点4:语义歧义

难点5:语用歧义

[RNN 的核心思想](#RNN 的核心思想)

[LSTM 的核心思想](#LSTM 的核心思想)

[GRU 的核心思想](#GRU 的核心思想)


序列数据

  • 序列数据是 按顺序排列 的数据,其中 前后元素之间存在依赖关系

【PTA题目】

为什么在 序列模型 中 使用 普通神经网络(如全连接网络)和CNN 效果不好?

(1)难以有效建模长期依赖关系

  • 全连接网络:输入维度固定,当序列变长时参数爆炸,且难以学习元素间的远距离依赖。

  • CNN:依靠局部卷积核,需要堆叠多层才能扩大感受野,导致信息传递路径长、易丢失,效率低下。

(2)对序列顺序不敏感

  • 全连接网络:打乱输入顺序不影响输出,无法感知序列顺序。

  • CNN:仅能捕捉局部顺序,对全局顺序和位置关系建模能力弱。

(3)处理可变长度序列不灵活

  • 全连接网络:必须固定输入长度,需填充或截断,造成信息损失。

  • CNN:对长度变化适应性较差,结构设计通常针对规整输入。

(4)参数共享效率低

  • 全连接网络:无跨位置参数共享,计算冗余。

  • CNN:仅在局部窗口内共享参数,难以像RNN或Transformer那样实现全局高效的参数共享。

相比之下,RNN/LSTM通过循环结构自然传递状态,适合处理序列顺序和动态长度;Transformer通过自注意力和位置编码,能直接捕捉全局依赖。

序列模型

序列模型的两种建模方案

【考点总结】

方案A: 马尔科夫假设
方案B: 隐变量模型

语言模型

建模概率---基于统计的方法

基于计数的统计模型

引入马尔科夫假设简化------N元语法

RNN

  • RNN通过一个循环传递的"记忆单元"(隐状态),将历史信息动态地融入当前计算,从而赋予神经网络对序列数据的建模能力。

工作流程

  • RNN的输出取决于当前输入前一时刻的隐变量(记忆)。

RNN的前向传播

RNN的损失函数计算:平均交叉熵损失

  • 整个序列(一个句子)作为一个训练实例,总误差就是各个时刻词的误差之和取平均。

RNN的训练------时间反向传播 (BPTT)

  • RNN的训练也使用梯度下降 ,但因其时间步之间共享参数且存在循环连接 ,计算梯度的方法比普通神经网络更复杂,称为 时间反向传播

RNN的核心挑战------梯度消失与梯度爆炸

解决------梯度裁剪 (针对梯度爆炸)

核心思想 :在更新参数之前,检查所有梯度的L2范数 (总大小)。如果超过某个预设的阈值 θ,就将所有梯度按比例缩小,使总范数等于 θ。

【小结】

  1. RNN用什么算法训练?
    BPTT(时间反向传播),一种沿时间轴进行反向传播的算法。

  2. BPTT和标准反向传播有什么区别?

    核心区别在于梯度累积 :BPTT需要对所有时间步上共享参数的梯度进行求和,因为同一个参数在每个时间步都被使用并影响最终的损失。

  3. RNN训练的两大核心挑战是什么?
    梯度消失梯度爆炸

  4. 梯度消失/爆炸的根本数学原因是什么?

    根本原因是梯度计算中包含跨越多个时间步的雅可比矩阵连乘。当这些雅可比矩阵的特征值持续小于1时,连乘积指数级趋零(消失);持续大于1时,指数级发散(爆炸)。

  5. 如何解决梯度爆炸?

    采用梯度裁剪:在参数更新前,如果梯度向量的范数超过预设阈值,就按比例缩小整个梯度向量,防止更新步伐过大。

RNN在NLP中的完整应用流程

情感分类 (many-to-one 任务)

第一步:文本预处理

第二步:词向量嵌入

第三步:RNN循环计算

将词向量序列按时间步输入RNN。

  • RNN根据公式逐步更新隐状态

  • 每个时间步都会产生一个输出状态(包含了到当前为止的上下文信息)。

第四步:任务特定输出

对于情感分类(many-to-one) 任务:

  • 通常只取最后一个时间步的隐状态 H_last(因为它理论上概括了整个句子的信息)。

  • H_last 输入一个全连接层 + Sigmoid激活函数,得到最终的分类概率。

RNN语言模型的损失函数

应用于语言模型时,RNN根据当前词预测下一时刻的词。

损失函数:序列级平均交叉熵损失

对一个序列中每个时间步的预测误差(交叉熵) 进行求和并取平均。

评估指标:困惑度( 衡量模型预测的不确定性,值越小越好。)

RNN的输入输出类型

  • One to One:经典神经网络,非RNN典型结构。

  • One to Many单输入,序列输出

    应用:图像描述生成(输入一张图片,输出一句话)。

  • Many to One序列输入,单输出

    应用情感分类 、文本分类。结构 :用最后一个时间步的隐状态作分类。

  • Many to Many (不等长)序列输入,不等长序列输出

    应用机器翻译、文本摘要

Encoder-Decoder(Seq2Seq) 框架。

核心思想:编码器将输入序列压缩为上下文向量,解码器基于该向量生成输出序列。

  • Many to Many (等长)序列输入,等长序列输出

    应用 :词性标注、命名实体识别。结构每个时间步都有对应输出

关键点

  1. 当RNN读入第一个词 "我" 时,它不是 去预测下一个词 "爱",而是直接输出 对当前词 "我" 的判定:"代词"

  2. 然后,它带着这个状态读入第二个词 "爱",输出对 "爱" 的判定:"动词"

  3. 以此类推,读完即标完。输入序列结束,输出序列也同时结束,且长度一致。

门控循环单元 GRU

设计动机

普通RNN存在梯度消失 问题,难以学习长距离依赖。GRU(以及LSTM)的提出,就是为了有选择性地记忆和遗忘信息,从而让信息(梯度)在长序列中更稳定地传递。

核心思想

GRU的核心思想是不是每个输入都同等重要,也不是所有历史记忆都需要完整保留到未来。

它通过引入 "门控"机制 来实现对信息流的精细化控制。

GRU有两个核心门:

  1. 重置门 :控制过去的记忆有多少需要与当前输入结合 ,用于计算新的候选信息。

  2. 更新门 :控制要从过去记忆中保留多少信息,以及要加入多少新信息 ,从而更新最终状态。

GRU 的门控计算

GRU 的隐状态更新流程

【说明】

【说明】

【思考】

如果将重置门设置为1,更新门设置为0,会发生什么?

在这种极端设置下,GRU的行为退化为一个稍微复杂一点的基础RNN。它虽然使用了全部旧记忆来计算新状态,但最终却完全用新状态覆盖了旧状态,没有实现"记忆的持续保留"。

长短期记忆网络(LSTM)

  1. 细胞状态 :称为 "长期记忆" ,用 Ct​ 表示。它像一个传送带 ,只在关键位置进行线性微调 ,因此梯度可以在此路径上更稳定地流动,不易消失。它负责保存从序列开始至今的长期信息。

  2. 隐状态 :称为 "短期输出" ,用 Ht​ 表示。它是细胞状态经过过滤后的产物,作为当前时间步的输出,并传递给下一个时间步作为"短期记忆"输入。它更多地反映了与当前输入相关的信息。

LSTM 的三门机制与状态更新

LSTM在每个时间步 t输入已有信息

  • LSTM通过三个门 和一个候选状态来控制细胞状态的更新。

第一步:决定遗忘什么 ------ 遗忘门

工作过程

将拼接后的向量 输入一个全连接层(参数为),再用Sigmoid激活,得到遗忘门 Ft​。Ft​ 的每个元素对应 Ct−1​ 的每个维度

  • 数值接近1:表示"保留"对应维度上的旧记忆。

  • 数值接近0:表示"遗忘"对应维度上的旧记忆。

第二步:输入门 ------ 决定向长期记忆中写入什么

这步包含两个计算:一个门决定写多少,一个候选值决定写什么。

1. 输入门公式

2. 候选细胞状态公式

第三步:更新长期记忆(细胞状态)

工作过程(分两部分)

  1. 选择性遗忘。旧的长期记忆 𝐶𝑡−1Ct−1​ 与遗忘门 𝐹𝑡Ft​ 逐元素相乘。根据 𝐹𝑡Ft​ 的值(0或1),决定保留或丢弃旧记忆的每一部分。

  2. 选择性记忆 。候选新信息 与输入门 𝐼𝑡逐元素相乘。根据 𝐼𝑡的值,决定候选信息的每一部分有多少被允许写入。

最终 :将 "过滤后的旧记忆""筛选后的新信息" 相加,得到全新的长期记忆 Ct​

第四步:输出门 ------ 决定当前输出(隐状态)是什么

1. 输出门公式

2. 当前隐状态公式

  • Ht​:当前时间步的隐状态(短期输出) 。它有两个作用:一是作为当前时间步的输出 ,二是作为下一个时间步的"短期记忆"输入

  • :将新的细胞状态 𝐶𝑡Ct​ 的数值压缩到(-1, 1)区间,变成一个"潜在输出向量"。

  • 用输出门 Ot​ 对这个潜在输出进行过滤,决定最终输出多少、输出什么。


自然语言处理(NLP)的核心任务

  1. 自然语言理解(NLU - Natural Language Understanding)

    • 目标 :让机器理解人类语言所表达的含义。

    • 关键:涉及分析、解析、推理。

    • 典型任务情感分析 (理解一句话的情感倾向)、问答系统 (理解问题并找到答案)、信息提取(从文本中提取结构化信息)。

  2. 自然语言生成(NLG - Natural Language Generation)

    • 目标 :让机器根据内部的意图、数据或理解,生成通顺、合理的人类语言。

    • 关键:涉及规划、组织、表达。

    • 典型任务机器翻译 (将一种语言的理解生成另一种语言)、文本摘要 (将长文本理解后生成简短摘要)、对话生成(根据对话历史和当前理解生成回复)。

两者关系:NLU是NLG的基础。通常,一个复杂的NLP系统(如智能对话机器人)会同时包含NLU模块(理解用户输入)和NLG模块(生成系统回复)。

自然语言理解的五个层次

  1. 语音/字符分析:最底层。对于语音,是将声波信号切分为音素、音节;对于文本,是识别字符、编码。

  2. 词法分析 :将连续的字符序列切分成有意义的(分词),并识别出每个词的词性(词性标注)。

  3. 句法分析 :分析句子的语法结构,找出词与词之间的修饰、主谓宾等关系(形成句法树)。

  4. 语义分析 :理解句子中词、短语以及整个句子的真实含义。例如,知道"苹果"指的是水果还是公司。

  5. 语用分析 :最高层。结合上下文、背景知识、说话者意图和世界常识 ,理解语言在具体场景下的真正目的和隐含意义。例如,理解"房间里好冷"可能是在陈述事实,也可能是在暗示"请关上窗户"。

自然语言处理的五大难点(歧义)

难点1:不同语言/个体间的信息失真

  • 核心 :从"想表达的意思 "到"说出来的话 ",再到对方"理解的意思 ",每一步都可能因语言差异、知识差异、背景差异而发生信息扭曲和丢失

  • 例子:"I'm waiting for you at the bank." 对方需要知道你的常识(是河岸还是银行?)和当前上下文才能正确理解。

难点2:词法歧义

  • 发生在词法分析层

  • 类型

    1. 分词歧义 :字符串可以有多种切分方式。"橙子皮厂"可以切分为[橙子皮/厂][橙子/皮厂],意思完全不同。

    2. 词性歧义 :同一个词在不同上下文中词性不同。"他在 苹果"(动词) vs "这是一把笔刀"(形容词/名词前缀)。

    3. 未登录词/命名实体识别:对新出现的人名、地名、专有名词(如"ChatGPT")的识别困难。

难点3:句法歧义

  • 发生在句法分析层 。同一个句子可以有多种合法的语法结构树

  • 经典例子:"The chicken is ready to eat."

    • 结构1:鸡是主语 ,也是"吃"的逻辑宾语(鸡被吃)。意思是"鸡已经做好了,可以吃了。"

    • 结构2:鸡是主语 ,也是"吃"的逻辑主语(鸡去吃)。意思是"鸡已经准备好去吃东西了。"

难点4:语义歧义

  • 发生在语义分析层 。即使语法结构清楚,句子仍有多种含义

  • 经典例子:"At last, a computer understands you like your mother."

    • 含义1:计算机理解你 ,就像你母亲理解你一样。

    • 含义2:计算机理解 你喜欢你的母亲 这件事。

    • 含义3:计算机理解你,就像计算机理解你母亲一样。

难点5:语用歧义

  • 发生在语用分析层 。同一句话在不同的语境、场景、说话者关系 下,表达完全不同的意图和言外之意

  • 经典例子:"你在干什么?"

    • 朋友闲聊:纯粹的询问。

    • 妈妈对捣蛋的孩子说:生气的质问。

    • 发现对方行为可疑时:怀疑和警觉的盘问。

为什么CNN不适合直接处理序列数据(如文本、时间序列)?

  • 答案 :CNN的核心是卷积核捕捉局部空间模式 ,并依赖平移不变性。它缺乏内部状态(记忆) 来建模序列中元素之间的长距离动态依赖关系和时间顺序。RNN通过隐状态的循环传递解决了这个问题。

RNN 的核心思想

RNN 的核心思想是 引入"循环"的隐状态 来建模序列的动态依赖。它通过一个在所有时间步共享参数的循环单元,在每一步将 当前输入上一步的隐状态 结合,生成新的隐状态。这个隐状态像一个 持续更新的记忆 ,理论上包含了所有历史信息。这使得 RNN 能够处理任意长度的序列,并捕捉序列中元素之间的 时间依赖关系 ,但其简单的线性组合与非线性激活结构,也导致了长序列训练中 梯度消失/爆炸 的根本缺陷。

LSTM 的核心思想

LSTM 的核心思想是 将"记忆"与"输出"分离,并通过三重门控保护长期信息的流动。它明确区分:

  • 细胞状态 :作为 长期记忆的传送带 ,主要经由 加法操作 更新,形成 近乎线性的梯度通路(常数误差流),从根本上缓解梯度消失;

  • 隐状态 :作为 短期输出 ,是细胞状态经 输出门过滤 后的结果。

    通过 遗忘门、输入门、输出门 的三重控制,LSTM 能 精细地读写、保留和忽略信息,成为处理长序列依赖的经典强效架构。

GRU 的核心思想

GRU 的核心思想是 通过"门控"机制实现记忆的精细化更新 ,以缓解梯度消失。它引入 重置门更新门 两个控制单元:

  • 重置门 决定 多少旧记忆 参与计算新候选信息;

  • 更新门 决定 新旧记忆如何混合 以形成当前状态。

    通过将 LSTM 的 细胞状态与隐状态合并 ,GRU 用更简洁的结构(两门、无独立细胞状态)实现了 对信息流的自适应选择与保留,既保留了长期依赖能力,又减少了参数数量。

相关推荐
普蓝机器人2 小时前
融合SLAM导航与视觉感知的智能果蔬采摘机器人科研平台
人工智能·机器人
趁你还年轻_2 小时前
Claude Skills 超全入门指南
人工智能
救救孩子把2 小时前
Dogs vs. Cats:从零到一的图像分类数据集
人工智能·分类·数据挖掘
Narrastory2 小时前
最大似然估计,香农熵,交叉熵与KL散度的详细解读与实现
人工智能·机器学习
安徽正LU o561-6o623o72 小时前
露-人体生理实验整体解决方案 机能实验室整体解决方案 行为学实验室整体解决方案 动物行为学整体解决方案
人工智能
拖拖7652 小时前
重读经典:Karpathy 的《循环神经网络不可思议的有效性》与代码实战
人工智能
阿恩.7702 小时前
前沿科技计算机国际期刊征稿:电子、AI与网络计算
人工智能·经验分享·笔记·计算机网络·考研·云计算
ZsTs1192 小时前
《2025 AI 自动化新高度:一套代码搞定 iOS、Android 双端,全平台 AutoGLM 部署实战》
前端·人工智能·全栈
锐学AI2 小时前
从零开始学LangChain(二):LangChain的核心组件 - Agents
人工智能·python