【NLP】RNN | GRU | LSTM

RNN

【循环神经网络】5分钟搞懂RNN,3D动画深入浅出
一文搞懂RNN(循环神经网络)基础篇

假定不同时间层之间共享一个权重矩阵W,有效的减少训练参数
正常的神经元输出:S=Wx+b,其中 S 代表隐藏层的输出
RNN 的输出:St=Wx+WSt-1+b,即基础上加入了 t-1 时刻的输入,作为当前 t 时刻的输出
即:RNN 的隐藏层的值 S 不仅仅取决于当前这次的输入 x,还取决于上一次隐藏层的值 St-1
要注意的是,在计算时,每一步使用的参数U、W、b都是一样的,也就是说每个步骤的参数都是共享的,这是RNN的重要特点。

RNN详解(Recurrent Neural Network)
Pytorch循环神经网络(RNN)快速入门与实战

Encoder-Decoder,也叫Seq2Seq,是RNN的一个重要变种。

LSTM

3分钟带你搞清LSTM 的计算过程和计算图

某时刻输入:xt,某时刻输出某时刻输出:ht
为解决 RNN 不能记忆长时间信息的问题,LSTM 中加入了一个记忆信息的元素 ct

LSTM细胞中主要的三个门:
遗忘门前一时刻的隐藏状态 ht-1 和当前时刻的输入 xt 经过 Sigmoid 处理,接近 0 表示遗忘,接近 1 表示保留。forgetgate = Sigmoid(W[xt,ht-1]+b)
输入门负责更新细胞状态。它由两部分组成:一个 Sigmoid 层和一个 tanh 层。Sigmoid 层决定我们将更新哪些值,tanh 层则创建一个新的候选值向量,将被加到细胞状态中。这两个向量的结合更新了细胞的状态。forgetgate = Sigmoid(W[xt,ht-1]+b)
输出门负责基于细胞的当前状态决定输出什么。首先,一个 Sigmoid 层决定细胞状态的哪一部分将输出。然后,细胞状态通过 tanh 进行处理(使值位于-1到1之间)并与 Sigmoid 门的输出相乘,决定最终的输出。forgetgate = Sigmoid(W[xt,ht-1]+b)

某时刻输出由这一时刻的记忆信息 ct 来获得:ht = outputgate(ct)
ct 由这一时刻的输入 xt 和上一时刻的记忆信息 ct-1 共同获得
ct = forgetgate(ct-1)+inputgate(xt)

RNN & LSTM (时间序列模型)

动态可视化LSTM

Bi-LSTM

GRU

GRU(门控循环单元,Gated Recurrent Unit)是一种用于循环神经网络(RNN)的优化门控机制,旨在解决标准 RNN 在处理长序列数据时遇到的梯度消失问题,同时尝试减少长短期记忆网络(LSTM)的复杂性。GRU通过引入更新门(Update Gate)和重置门(Reset Gate)来控制信息的流动,这两个门控机制决定了信息被保留、遗忘或更新的方式。

结构和工作原理

  • 更新门(Update Gate):决定了来自上一个状态的信息有多少会被保留到当前状态。这个门的作用类似于LSTM中的遗忘门和输入门的组合,它帮助模型决定在当前状态保留多少之前的信息。

  • 重置门(Reset Gate):决定了多少过去的信息会被用来计算当前状态的候选内容。通过这个门,GRU可以抛弃与未来状态无关的信息,使模型能够在处理每个输入时更灵活。

  • 候选隐藏状态(Candidate Hidden State):通过重置门控制的过去状态和当前输入共同生成的新的隐藏状态候选。这个候选隐藏状态包含了当前单元可能需要的新信息。

  • 最终隐藏状态(Final Hidden State):由更新门控制的上一个隐藏状态和候选隐藏状态的加权组合。更新门决定保留多少旧状态信息和引入多少新状态信息。

优点和应用

GRU保留了LSTM处理长期依赖问题的能力,但结构比LSTM更简单,因为它只有两个门(相比之下,LSTM有三个)。这种简化通常使得GRU在计算效率上有所提升,尤其是在参数数量较少时。由于其性能与LSTM相近,GRU广泛用于需要处理序列数据的任务中,如语言建模、文本生成、语音识别和机器翻译等领域。

总的来说,GRU提供了一种既能有效处理长期依赖问题,又相对高效的门控循环单元设计,使其成为处理序列数据的强大工具。

问答

  1. 基础概念:

    • 请解释什么是RNN,它如何工作?
    • LSTM网络是什么,它与传统的RNN有什么区别?
    • RNN中的“梯度消失”和“梯度爆炸”问题是什么?如何解决?
  2. 原理和架构:

    • LSTM的核心组件是什么?它们各自承担什么样的角色?
    • 请解释LSTM中的遗忘门、输入门和输出门的作用。
    • 如何通过调整RNN的架构来提高其记忆能力?
  3. 应用和实例:

    • 请举例说明RNN和LSTM在自然语言处理(NLP)中的应用。
    • RNN和LSTM在时间序列预测中的优势在哪里?
    • 在实际应用中,你如何决定是使用传统的RNN,还是LSTM或GRU(门控循环单元)?
  4. 性能和优化:

    • 在训练RNN时,如何处理长序列数据带来的挑战?
    • 如何评估RNN模型的性能?有哪些常用的指标?
    • 解释一下在RNN/LSTM模型中常用的正则化技术。
  5. 高级话题:

    • 请讨论一下RNN和LSTM在处理多任务学习时的潜力。
    • RNN和LSTM如何与其他类型的神经网络,例如卷积神经网络(CNN),结合使用?
    • 介绍一种你认为对RNN或LSTM有重大改进的最新研究或技术。

这些问题覆盖了从基本概念到高级应用的各个方面,旨在评估候选人对RNN和LSTM的理解深度和广度。

赞赏