NLP发展及其详解

一、RNN(循环神经网络)

在这里附上一个很好的笔记

零基础入门深度学习(5) - 循环神经网络

RNN(循环神经网络)的结构特点在于其循环单元的设计,这种设计允许网络在处理序列数据时保持对之前信息的记忆。下面详细解释RNN的结构:

  1. 循环单元:RNN的循环单元是网络的核心,它通常是一个简单的神经网络层,比如一个tanh层。这个单元的输入包括当前时刻的输入 ( x_t ) 和上一时刻的隐藏状态 ( h_{t-1} ),然后它输出当前时刻的隐藏状态 ( h_t )。
  2. 隐藏状态:隐藏状态 ( h_t ) 是一个向量,它捕获了到当前时刻为止的序列信息。这个状态被传递到下一个时刻,成为下一时刻循环单元的输入之一。
  3. 输出:每个时刻的隐藏状态可以用于生成输出 ( y_t ),这个输出可以是序列的一个预测,比如下一个词的概率分布。在实际应用中,输出层通常是一个全连接层,它将隐藏状态映射到输出空间。
  4. 参数共享:在RNN中,循环单元的参数在所有时刻是共享的。这意味着无论序列有多长,处理每个时刻的单元都是使用相同的权重。这种参数共享使得RNN能够扩展到不同长度的序列。
  5. 序列处理:RNN按顺序处理序列的每个元素。对于每个时刻 ( t ),网络的输入是当前元素的表示 ( x_t ),然后网络更新隐藏状态 ( h_t ) 并生成输出 ( y_t )。
  6. 灵活性:RNN的结构使其能够处理不同长度的输入序列,这使得它非常适合于语言模型、时间序列预测和其他需要处理可变长度数据的任务。
    在这里插入图片描述

然而,传统的RNN存在一些问题,比如在训练过程中可能出现的梯度消失或梯度爆炸问题,这使得它们难以学习长距离依赖。为了解决这个问题,研究者们提出了更复杂的循环单元结构,如LSTM(长短时记忆网络)和GRU(门控循环单元),这些结构通过引入门控机制来更好地捕捉长距离依赖。
总的来说,RNN的结构使其成为处理序列数据的强大工具,而其变体如LSTM和GRU则进一步增强了其在复杂序列建模任务中的能力。

二、LSTM(长短期记忆递归神经网络)

这里递上两个我参考的文章和笔记
零基础入门深度学习(6) - 长短时记忆网络(LSTM)
LSTM - 长短期记忆递归神经网络 来自知乎作者:Mark

LSTM(长短时记忆网络,Long Short-Term Memory)是一种特殊的RNN(循环神经网络)架构,它能够学习长期依赖信息。LSTM由Hochreiter和Schmidhuber在1997年提出,旨在解决传统RNN在处理长序列数据时遇到的梯度消失和梯度爆炸问题。
LSTM的核心思想是引入了一个称为“细胞状态”(cell state)的向量,这个向量贯穿整个LSTM单元,并在序列处理过程中被修改。细胞状态允许信息以相对不变的方式流动,这使得LSTM能够保持长期记忆。
LSTM单元内部结构较为复杂,主要包括以下几个部分:

  1. 遗忘门(Forget Gate):决定哪些信息从细胞状态中丢弃。遗忘门的输入包括前一个时刻的隐藏状态和当前时刻的输入,输出一个在0到1之间的值给每个在细胞状态中的数。1表示“完全保留这个信息”,而0表示“完全丢弃这个信息”。
  2. 输入门(Input Gate):决定哪些新的信息被添加到细胞状态中。这个过程包括两个步骤:首先,一个称为“输入门层”(input gate layer)的sigmoid函数决定哪些值要更新;然后,一个tanh层创建一个新的候选值向量,可以被加到状态中。
  3. 细胞状态(Cell State):细胞状态是LSTM的核心,它贯穿于整个LSTM单元,并且可以携带信息很长一段时间。细胞状态的变化由遗忘门和输入门控制。
  4. 输出门(Output Gate):决定下一个隐藏状态应该是什么。隐藏状态包含关于前面的输入的信息,这个信息可以用于预测或决策。首先,一个sigmoid函数决定细胞状态的哪些部分将输出;然后,细胞状态通过tanh函数(得到一个在-1到1之间的值)并乘以sigmoid门的输出,得到最终的隐藏状态。

在这里插入图片描述LSTM通过这些门控结构,有效地控制信息的流动,从而能够在长序列中保持长期依赖信息。这使得LSTM在许多需要处理长序列数据的任务中非常有效,如语言模型、机器翻译、语音识别等。
总的来说,LSTM是一种强大的序列模型,它通过特殊的结构设计,解决了传统RNN在处理长距离依赖时的难题,因此在许多序列建模任务中得到了广泛的应用。

三、GRU(门控循环单元)

人人都能看懂的GRU 作者:陈诚(知乎)
GRU(门控循环单元,Gated Recurrent Unit)是一种特殊的RNN(循环神经网络)架构,旨在解决传统RNN在处理长序列数据时遇到的梯度消失和梯度爆炸问题。GRU由Cho等人在2014年提出,作为对LSTM(长短时记忆网络)的简化版本,旨在提供更好的计算效率和性能。
GRU的核心思想是减少RNN单元中的参数数量,从而降低计算复杂性,同时保持对长序列数据的有效建模能力。GRU单元的结构比LSTM单元更简单,它将LSTM单元中的三个门(遗忘门、输入门和输出门)合并为两个门(更新门和重置门),并且共享了这两个门的权重矩阵。
以下是GRU单元的组成部分和它们的功能:

  1. 更新门(Update Gate):决定哪些信息应该被保留在GRU单元中。更新门的输入包括前一个时刻的隐藏状态和当前时刻的输入,输出一个介于0到1之间的值给每个在细胞状态中的数。1表示“完全保留这个信息”,而0表示“完全丢弃这个信息”。
  2. 重置门(Reset Gate):决定哪些信息应该被丢弃,以便为新的信息腾出空间。重置门的输入包括前一个时刻的隐藏状态和当前时刻的输入,输出一个介于0到1之间的值给每个在细胞状态中的数。1表示“完全保留这个信息”,而0表示“完全丢弃这个信息”。
  3. 更新后的隐藏状态(Updated Hidden State):这是GRU单元的输出,它同时扮演了细胞状态和隐藏状态的角色。更新后的隐藏状态是通过更新门和重置门控制的信息流来计算的。
    图像来自于链接文章(作者:知乎陈诚)
    在这里插入图片描述

GRU通过这些门控结构,有效地控制信息的流动,从而能够在长序列中保持长期依赖信息。这使得GRU在许多需要处理长序列数据的任务中非常有效,如语言模型、机器翻译、语音识别等。
总的来说,GRU是一种强大的序列模型,它通过特殊的结构设计,解决了传统RNN在处理长距离依赖时的难题,因此在许多序列建模任务中得到了广泛的应用。

四、LSTM和GRU的对比

LSTM(长短时记忆网络)和GRU(门控循环单元)都是为了解决传统RNN在处理长序列数据时遇到的梯度消失和梯度爆炸问题而设计的特殊RNN架构。它们都包含门控机制来控制信息的流动,但它们的结构略有不同。以下是LSTM和GRU的主要区别:

  1. 结构差异
    • LSTM:每个LSTM单元包含三个门(遗忘门、输入门和输出门)和两个记忆单元(细胞状态和隐藏状态)。
    • GRU:每个GRU单元包含两个门(更新门和重置门)和一个记忆单元(更新后的隐藏状态,它同时扮演了细胞状态和隐藏状态的角色)。
  2. 参数数量
    • LSTM:每个单元有三个sigmoid层和三个tanh层,以及输入门、遗忘门和输出门的权重矩阵。
    • GRU:每个单元有两个sigmoid层和两个tanh层,以及更新门和重置门的权重矩阵。
  3. 信息流控制
    • LSTM:通过三个门来控制信息的流入、保留和流出,每个门都有独立的权重矩阵。
    • GRU:通过两个门来控制信息的流入和重置,这两个门共享权重矩阵。
  4. 记忆单元
    • LSTM:有一个独立的细胞状态和一个隐藏状态。
    • GRU:只有一个更新后的隐藏状态,它同时扮演了细胞状态和隐藏状态的角色。
  5. 计算效率
    • LSTM:由于其结构更复杂,计算量也更大。
    • GRU:结构更简单,参数数量更少,因此在计算效率上通常比LSTM高。
  6. 性能表现
    • LSTM:在许多任务中表现出色,特别是在需要精确长距离依赖建模的任务中。
    • GRU:在某些任务中表现与LSTM相当,甚至更优,特别是在处理较短序列时。
      在实际应用中,选择使用LSTM还是GRU取决于具体的任务需求和计算资源。如果任务对长距离依赖的建模要求很高,或者有足够的计算资源,LSTM可能是一个更好的选择。相反,如果任务对计算效率有较高要求,或者对长距离依赖的要求不是特别严格,GRU可能是一个更优的选择。

五、Seq2Seq

Seq2Seq模型介绍
正是从这个开始,我们引入了编码器和解码器,为后面transformer的出现打下了坚实的基础。

Seq2Seq(Sequence to Sequence)是一种深度学习架构,主要用于将一个序列转换为另一个序列。它通常用于自然语言处理任务,如机器翻译、语音识别、文本摘要、问答系统等。Seq2Seq模型由两个主要部分组成:编码器(Encoder)和解码器(Decoder)。

  1. 编码器(Encoder)
    • 输入:一个序列,通常是源语言的句子。
    • 输出:一个单一的向量,称为“上下文向量”(context vector)或“隐藏状态”(hidden state)。这个向量包含了输入序列的完整信息。
  2. 解码器(Decoder)
    • 输入:上下文向量和一个初始的向量,通常是解码器的第一个隐藏状态,这个初始向量通常由编码器的最后一个隐藏状态初始化。
    • 输出:一个序列,通常是目标语言的句子。
    • 在这里插入图片描述

Seq2Seq模型通常使用循环神经网络(RNN)作为编码器和/或解码器,尤其是长短期记忆网络(LSTM)和门控循环单元(GRU)由于其能够处理长序列数据的能力而非常受欢迎。
Seq2Seq模型的关键特点是它能够处理任意长度的输入序列,并生成相应的输出序列。这使得它非常适合于自然语言处理中的任务,如机器翻译,其中源语言和目标语言的句子长度可以不同。
Seq2Seq模型通常需要大量的数据进行训练,并且可能需要额外的技术,如注意力机制(Attention Mechanism),来提高性能。注意力机制允许解码器更加关注输入序列中的特定部分,从而生成更加准确的目标序列。

六、transformer

十分钟理解Transformer
Transformer模型是一种基于自注意力机制(self-attention)的深度神经网络模型,由Google的Vaswani等人于2017年在论文《Attention is All You Need》中提出。Transformer模型在自然语言处理(NLP)领域取得了巨大成功,特别是在机器翻译任务中。它取代了之前的RNN和CNN模型,成为处理序列数据的首选方法。
Transformer模型的主要特点如下:

  1. 自注意力机制:Transformer使用自注意力机制来捕捉序列中不同位置之间的依赖关系。自注意力机制允许模型为序列中的每个位置分配一个权重,从而更准确地捕捉到长距离依赖关系。
  2. 多头注意力(Multi-Head Attention):为了提高模型的性能,Transformer将自注意力机制扩展为多头注意力。多头注意力将输入序列分成多个子序列,并为每个子序列计算注意力权重。最后,将这些注意力权重聚合起来,得到最终的注意力权重。
  3. 位置编码(Positional Encoding):Transformer模型不使用传统的循环神经网络结构,因此它不包含位置信息。为了在模型中引入位置信息,Transformer模型使用位置编码来为每个位置分配一个独特的向量。这些位置编码与输入序列的原始向量一起作为模型的输入。
  4. 前馈神经网络(Feed-Forward Neural Network):在Transformer模型中,每个自注意力层之后都接有一个前馈神经网络。前馈神经网络是一个全连接层,它可以进一步增强模型的表达能力。
  5. 残差连接(Residual Connections):为了缓解深层网络中的梯度消失和梯度爆炸问题,Transformer模型在每个自注意力层和前馈神经网络层之后都接有一个残差连接。残差连接将输入序列的原始向量与经过自注意力层和前馈神经网络处理后的向量相加,然后将结果传递给下一层。
  6. 层归一化(Layer Normalization):为了提高模型的训练速度和稳定性,Transformer模型在每个自注意力层和前馈神经网络层之后都接有一个层归一化层。层归一化层对输入序列的每个位置进行归一化处理,以减少输入数据的分布变化。
  7. 注意力层堆叠(Attention Layer Stacking):Transformer模型通常包含多个自注意力层和前馈神经网络层,这些层按照特定顺序堆叠在一起。通过堆叠多个层,模型可以捕获更复杂的序列依赖关系。
    Transformer模型在NLP领域的成功得益于其强大的表达能力,能够处理长序列数据,并且训练速度快。它已经成为了NLP领域中的一种标准模型,被广泛应用于机器翻译、文本摘要、问答系统、文本分类等任务。
  • 30
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值