【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)或加权合并而成。
相关推荐
却道天凉_好个秋11 小时前
深度学习(二):神经元与神经网络
人工智能·神经网络·计算机视觉·神经元
THMAIL11 小时前
深度学习从入门到精通 - 生成对抗网络(GAN)实战:创造逼真图像的魔法艺术
人工智能·python·深度学习·神经网络·机器学习·生成对抗网络·cnn
无风听海11 小时前
神经网络之深入理解偏置
人工智能·神经网络·机器学习·偏置
fantasy_arch12 小时前
9.3深度循环神经网络
人工智能·rnn·深度学习
会写代码的饭桶15 小时前
通俗理解 LSTM 的三门机制:从剧情记忆到科学原理
人工智能·rnn·lstm·transformer
知来者逆17 小时前
视觉语言模型应用开发——Qwen 2.5 VL模型视频理解与定位能力深度解析及实践指南
人工智能·语言模型·自然语言处理·音视频·视觉语言模型·qwen 2.5 vl
倔强的石头10618 小时前
卷积神经网络(CNN):从图像识别原理到实战应用的深度解析
人工智能·神经网络·cnn
GEO科技权威资讯19 小时前
生成对抗网络 (GAN):理解其原理与创作能力
人工智能·神经网络·生成对抗网络
西猫雷婶20 小时前
scikit-learn/sklearn学习|广义线性回归损失函数的基本表达式
深度学习·神经网络·学习·机器学习·线性回归·scikit-learn·概率论
金井PRATHAMA20 小时前
超越模仿,探寻智能的本源:从人类认知机制到下一代自然语言处理
人工智能·自然语言处理·知识图谱