欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > 【NLP】 12. 解决不同长度文本问题,RNN, LSTM,双重RNN,双向递归神经网络

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

2025/3/21 21:12:50 来源:https://blog.csdn.net/weixin_48846514/article/details/146310781  浏览:    关键词:【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)或加权合并而成。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词