【NLP】 12. 解决不同长度文本问题,RNN, LSTM,双重RNN,双向递归神经网络

RNN Recurrent Models

如何解决不同长度文本向量的问题?(长文本)

  • 取均值,但是容易淡化文本的独特性,比如一正一负的均值就变成了0. 有些情况取均值毫无意义,我出门玩,几个词的均值意义模糊。我爱你,你爱我,均值一样但是含义不一样。
  • 合并所有向量,但是是固定的一段长向量(N-dimension),如果只有一个词,则需要填充padding其他地方为0,如果是很多个词,则只能放弃后面的词,进行截断(Truncate)。会丢失信息。并且不同位置的词需要重新学习它的含义(代入了位置信息)。

RNN

为了解决这个问题,提出了RNN的概念 RNN-LSTM概述 <-跳转之前的博客。基于之前的概述,下面做一些补充。

python - Why is RNN no weigth between hidden and output? - Stack Overflow](https://i.sstatic.net/PcaGd.png)

  • h0 的初始化可以是全为0的矩阵,也可以是认为给定的权重矩阵

  • Wh 时间步长之间的权重是共享的,所以更新的时候会一起更新。 Wx(负责将输入

    xt转换为隐藏状态的表示),Wy(负责将隐藏状态 ht映射到输出层(例如分类任务的 logits) 不共享

  • RNN 有多种形式的输出, 也可以直接多任务,预测每个词的词性,预测情感,有多少个输出就会更新多少次权重

The Unreasonable Effectiveness of Recurrent Neural Networks](https://karpathy.github.io/assets/rnn/diags.jpeg)

  • 存在的问题:
    *

    1. 梯度爆炸Exploding gradients
      如果有一个非常陡的梯度,权重更新会跳到很远的地方,甚至溢出存储

    解决方法: clipping the gradient.梯度裁剪,使用min(gradient, k)进行限制。

      1. 梯度消失,gradient vanish
        RNN 通过 反向传播算法(Backpropagation Through Time, BPTT) 来更新权重,其中隐藏状态的梯度是 多个时间步的乘积。如果每一步的梯度小于 1,就会指数级衰减,最终变得接近 0。

    解决方法:不衰减的方法保存信息,使用LSTM

  • 通过RNN 隐藏层可视化可以得到结论:颜色渐变说明 RNN 的隐藏状态随着时间步的变化而改变,有些单词在序列中起到了更重要的作用。【Andrej Karpathy 的论文《The Unreasonable Effectiveness of Recurrent Neural Networks》(2015)】

RNN 变型

1. 双重RNN,输出当作另一个RNN的输入

Recurrent Neural Network (RNN) and LSTM | Data Platform and Data Science](https://dwbi1.wordpress.com/wp-content/uploads/2021/08/fig-2-rnn-architecture.jpg?w=422)

2. 双向递归神经网络(Bidirectional RNN, BiRNN)

Forward-Backward RNN (前向-后向 RNN)是一种 双向递归神经网络(Bidirectional RNN, BiRNN) 的结构,它通过 同时考虑前后时间步的信息 来提升对序列数据的理解能力,特别适用于 自然语言处理(NLP)语音识别(Speech Recognition) 等任务。

Bidirectional Recurrent Neural Network - GeeksforGeeks](https://media.geeksforgeeks.org/wp-content/uploads/20230302163012/Bidirectional-Recurrent-Neural-Network-2.png)

1. 为什么需要 Forward-Backward RNN?

普通的 单向 RNN 只能利用过去 的信息,而无法考虑未来的信息。例如:

  • 语言建模中,单向 RNN 只能基于前面的单词预测下一个单词,而不能考虑后续的单词。
  • 语音识别中,单向 RNN 只能基于当前和之前的音素,而不能利用后续音素的信息。

解决方案:

  • 双向 RNN(BiRNN) 通过前向(Forward)和后向(Backward)两个方向的 RNN 结构 ,同时处理序列数据,并结合两个方向的信息,使得网络可以在当前时间步同时利用过去和未来的上下文信息

2. Forward-Backward RNN 的结构

BiRNN 由 两个独立的 RNN 组成

  1. Forward RNN(前向 RNN): 负责从 左到右 处理输入序列。
  2. Backward RNN(后向 RNN): 负责从 右到左 处理输入序列。
  3. 最终隐藏状态 由前向和后向 RNN 的隐藏状态拼接(concatenate)或加权合并而成。
相关推荐
zhangfeng113317 分钟前
深入剖析Kimi K2 Thinking与其他大规模语言模型(Large Language Models, LLMs)之间的差异
人工智能·语言模型·自然语言处理
vvoennvv3 小时前
【Python TensorFlow】 TCN-GRU时间序列卷积门控循环神经网络时序预测算法(附代码)
python·rnn·神经网络·机器学习·gru·tensorflow·tcn
AI-智能16 小时前
别啃文档了!3 分钟带小白跑完 Dify 全链路:从 0 到第一个 AI 工作流
人工智能·python·自然语言处理·llm·embedding·agent·rag
Ai173163915791 天前
2025.11.28国产AI计算卡参数信息汇总
服务器·图像处理·人工智能·神经网络·机器学习·视觉检测·transformer
青云交1 天前
Java 大视界 -- Java 大数据机器学习模型在电商评论情感分析与产品口碑优化中的应用
机器学习·自然语言处理·lstm·情感分析·java 大数据·电商评论·产品口碑
鼎道开发者联盟1 天前
智能原生操作系统畅想:人智共生新时代的基石
人工智能·机器学习·自然语言处理
陈辛chenxin2 天前
【大数据技术07】分类和聚类算法
神经网络·决策树·分类·聚类·分类算法
编程小白_正在努力中2 天前
神经网络深度解析:从神经元到深度学习的进化之路
人工智能·深度学习·神经网络·机器学习
无风听海2 天前
神经网络之经验风险最小化
人工智能·深度学习·神经网络
东皇太星2 天前
ResNet (2015)(卷积神经网络)
人工智能·神经网络·cnn