分享

RNN到GPT文本生成的革命之路经历了什么(1)

 山峰云绕 2023-07-10 发布于贵州

https://www.toutiao.com/article/7236366180959666699/?log_from=9968b7b9b0314_1688977169713

想了很久,一直想以什么样子的方式能够快速简单的说明GPT里面这个“T”的发展过程,但是又不想陷入细节中长篇大论。最终,思来想去可能从文本生成领域最容易讲清楚吧。

可能,对于很多对NLP或文本生成领域不了解的同学,不一定清楚下面提到的几者的关系(RNN、SimpleRNN、LSTM、Attention、Self-Attention、Transformer、BERT、GPT等),我会从发展的角度逐步介绍,当然按照我个人理解,希望对各位有所帮助。

  • 最初(记忆力差)

SimpleRNN 是循环神经网络 (RNN) 的一种变种,它最早由 Elman 在 1990 年提出,用于处理序列数据。SimpleRNN 的全称是 Simple Recurrent Neural Network,它是一种基本的 RNN 模型,由一个循环层组成,每个时间步接收一个输入和前一个时间步的隐藏状态,输出当前时间步的隐藏状态。

SimpleRNN 的主要优势是非常简单直观,易于理解和实现。它也可以很好地处理一些简单的序列数据,例如预测下一个时间步的值、文本分类、情感分析等。

这里提到的Simple RNN(循环神经网络) ,最明显的缺点就是难以处理长序列。当输入序列或输出序列非常长时,模型很容易出现梯度消失或梯度爆炸的问题。

那在一定程度可以解决这个问题的LSTM(Long Short-Term Memory,LSTM)就出现了:

  • 然后(记得久一点)

首先,看下LSTM的几点优势:

  • 长期记忆能力:LSTM 可以有效地处理长序列,因为它具有长期记忆能力。SimpleRNN 由于梯度消失的问题,不能够有效地处理长序列。
  • 防止梯度消失:LSTM 通过门控机制(遗忘门、输入门和输出门)防止梯度消失,从而使得模型能够更好地捕捉长期依赖关系。
  • 更好的可解释性:由于 LSTM 具有门控机制,可以更好地理解模型的决策过程和输出结果。
  • 更好的性能:由于 LSTM 具有更好的长期记忆和防止梯度消失的能力,因此在训练和测试时通常具有更好的性能。
  • 更好的泛化能力:由于 LSTM 能够更好地处理长序列和长期依赖关系,因此在处理具有长期依赖关系的序列数据时具有更好的泛化能力。

为什么LSTM就这么厉害呢,主要还是看上面那张图,会发现LSTM有“四个门”,在传统的循环神经网络中,由于梯度消失或梯度爆炸的问题,网络很难记住长期依赖的信息,而LSTM通过引入门控机制,可以有效地控制信息的流动,从而解决了这个问题。

LSTM中的主要组成部分包括输入门、遗忘门、输出门和记忆单元。记忆单元是网络中的核心部分,它负责存储和更新信息。输入门和遗忘门决定了哪些信息需要被添加或遗忘,而输出门控制了信息的输出。

  • 输入门(Input Gate):输入门控制着新的信息进入记忆单元的程度。它包括一个Sigmoid激活函数和一个点乘操作。Sigmoid函数的输出值在0到1之间,表示新信息的重要性。点乘操作将新的信息与输入向量进行加权相加,得到加权后的新信息。输入门的作用是过滤掉不重要的新信息,只保留重要的信息。
  • 遗忘门(Forget Gate):遗忘门控制着过去信息从记忆单元中被遗忘的程度。它也包括一个Sigmoid激活函数和一个点乘操作。Sigmoid函数的输出值在0到1之间,表示过去信息的重要性。点乘操作将过去的信息与记忆单元中对应位置的值进行加权相加,得到加权后的过去信息。遗忘门的作用是过滤掉不重要的过去信息,只保留重要的信息。
  • 输出门(Output Gate):输出门控制着记忆单元中的信息如何被输出。它包括一个Sigmoid激活函数和一个点乘操作和一个Tanh激活函数。Sigmoid函数的输出值在0到1之间,表示输出的重要性。点乘操作将记忆单元中的信息与输出向量进行加权相加,得到加权后的输出。Tanh激活函数将输出进行缩放,得到最终的输出。输出门的作用是过滤掉不重要的信息,只保留重要的输出。
  • 更新门(Update Gate):更新门控制着记忆单元中的信息如何被更新。它包括一个Sigmoid激活函数和一个点乘操作和一个Tanh激活函数。Sigmoid函数的输出值在0到1之间,表示新信息的重要性。点乘操作将新信息与输入向量进行加权相加,得到加权后的新信息。Tanh激活函数将新信息进行缩放,得到最终的新信息。更新门的作用是将新信息与过去的信息进行加权相加,得到更新后的信息。

LSTM中的四个门单元都有自己独特的能力,可以有效地控制信息的流动,从而解决了传统循环神经网络中的长期依赖问题。它们的作用不同,但都是为了使网络能够更好地处理序列数据。

虽然LSTM可以解决长期依赖的问题,但是也存在一些缺点:

  • 计算量大:LSTM中引入了多个门控单元,相比于简单的循环神经网络,计算量要大得多。
  • 过度拟合:LSTM中的参数数量很多,当训练数据量较小时,容易发生过度拟合的情况。
  • 信息丢失:LSTM中的门控单元虽然可以控制信息的流动,但也可能会导致信息的丢失,特别是在处理长序列数据时。

为了解决LSTM的缺点,可以引入attention机制。attention机制是一种对于序列中不同位置的信息赋予不同权重的方法,可以帮助网络更好地处理长序列数据,同时也可以减少计算量和过度拟合的问题。

在使用attention机制时,可以将LSTM中的每个时间步的输出作为输入,计算出每个时间步的权重,然后将每个时间步的输出乘以对应的权重,得到加权后的输出。这样可以使网络更加关注重要的信息,减少信息的丢失。

  • Sequence-to-Sequence (Seq2Seq)模型

跟RNN不同的Sequence-to-Sequence (Seq2Seq)模型,同样是处理数据,RNN是处理序列数据,而Seq2Seq则是把一种序列转换为另一种序列,我们天然就能想到的是翻译的任务场景,Seq2Seq是一种深度学习模型,用于处理序列到序列(Sequence-to-Sequence)的问题。一种编码器-解码器(Encoder-Decoder)架构【本质上GPT中的Transformer中也是编码和解码】,用于将一个序列映射到另一个序列。

Seq2Seq模型最初是为了翻译任务而开发的,但现在已经广泛应用于各种自然语言处理(NLP)任务,例如对话系统、摘要生成、语音识别和问答系统等。

Seq2Seq模型由两个主要组件组成:编码器(Encoder)和解码器(Decoder)。编码器将输入序列转换为一个固定长度的向量(也称为上下文向量或编码),其中这个向量包含了输入序列的语义信息。解码器则将这个向量作为其输入,并将其转换为输出序列。

Seq2Seq模型的训练过程通常采用最大似然估计(Maximum Likelihood Estimation,MLE)或基于强化学习的方法。在MLE中,我们使用训练数据中的输入序列和对应的输出序列来计算模型的损失函数,并使用梯度下降等优化算法来最小化损失函数。在基于强化学习的方法中,我们使用类似于Actor-Critic或REINFORCE等算法来优化模型,并采用奖励信号来指导模型生成更好的输出序列。

总之,Seq2Seq模型是一种用于解决序列到序列问题的深度学习模型,它由编码器和解码器组成,并使用循环神经网络来处理输入和输出序列。该模型在自然语言处理中得到了广泛应用,例如机器翻译、对话生成、摘要生成等领域。

  • 进步,Attention机制(换种方式记的更多更久)

而即便是LSTM出现之后,仍然存在一定的问题,为了解决这些问题,开始出现Attention机制。主要优势在于:

  • 更好地捕捉长距离依赖关系:在LSTM中,信息需要从前向后依次传递,因此随着序列长度的增加,LSTM的性能会逐渐降低。而在Attention机制中,每个时间步骤都可以自适应地聚焦于最相关的部分,因此可以更好地捕捉长距离依赖关系。
  • 更好地处理变长输入序列:在LSTM中,输入序列需要进行填充或截断,使其长度相同。这会浪费大量的计算资源和内存,同时也会影响模型性能。而在Attention机制中,输入序列可以是变长的,因为注意力权重可以根据输入序列的长度动态计算。
  • 更好地处理多个输入序列:在LSTM中,通常需要将多个输入序列进行拼接或者堆叠。这样会使得模型的计算量和内存占用增加。而在Attention机制中,每个输入序列都可以单独计算注意力权重,因此可以更好地处理多个输入序列。

Attention机制可以自适应地聚焦于最相关的部分,更好地捕捉长距离依赖关系,更好地处理变长输入序列和多个输入序列。这使得Attention机制成为处理序列数据的一种非常有效的方法。

从Attention机制开始,其实RNN的发展或者说神经网络的发展才逐步的走向快速发展的时期,用一个不恰当的比喻:从SimpleRNN到LSTM再到Attention,相当于刚出生的婴儿到咿呀学语,现在终于会走路了。。。。等到下一期我再继续介绍Attentioin机制如何跟LSTM结合改善,再到Self-Attention(自注意力记住),再到Transformer再到GPT,才算是从走到跑,到幼儿园,小学。。。。

2017年Google发表论文《attention is all you need》,彻底引爆了attention的机制,然后出现了多头自注意力等。然后Transformer出现了,然后就是BERT,然后就是大家熟悉的GPT出现啦,今天带大家走马观花的了解一下发展过程,其实说来简单,但是这里每一步都少不了前辈学者们断探索和努力。

很有幸我们可以生在这个时代,见证这个时代!

变革时刻在发生。。。。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多