自然语言处理基础知识入门(三) RNN,LSTM,GRU模型详解

在这里插入图片描述


前言

在上一章节中,深入探讨了Word2vec模型的两种训练策略以及创新的优化方法,从而得到了优质的词嵌入表示。不仅如此,Word2vec作为一种语言模型,也具备根据上下文预测中心词的能力,这是其训练的核心任务,也是模型所能实现的功能。那么,既然已有语言模型,为何还需要引入RNN呢?又或者,RNN具有何种独特性呢?而LSTM和GRU为什么会被视为RNN的变体?本章节将针对这些问题,用深入浅出的语言解读这些模型背后的核心逻辑,以便让读者对整个知识体系存在一个全面的理解。

一、RNN模型

在自然语言处理(NLP)领域中,最常见且历史悠久的深度学习模型莫过于循环神经网络,简称RNN(Recurrent Neural Network)。值得注意的是,循环神经网络(Recurrent Neural Network)与递归神经网络(Recursive Neural Network)尽管缩写相同,却是两种不同的网络结构。本文提及的是循环神经网络,特别强调这一概念的原因在于,现行的循环神经网络模型采用权重共享机制,对于其核心组成部分—— W 、 U 、 V W、U、V WUV这三个权重矩阵,需要有一个明确的理解,通过权重共享,RNN能够有效处理序列数据,捕捉时间序列中的动态特性。

1.1 RNN的作用

神经网络可以通过多层结构和激活函数的作用去拟合逼近各种函数,只需要训练数据足够,就能够完成多种任务,拥有如此强大的模型,那么为什么还要RNN呢?

先简单的定义下,循环神经网络就是处理序列数据的神经网络。

在传统神经网络处理流程中,单次输入间往往缺乏必要的关联,就像在图像分类的场景下使用的CNN,仅关注各个输入的独立特征。不过,许多任务,例如机器翻译,却本质上依赖于输入间的紧密联系。

以翻译"昨天,我吃了苹果"为例",若模型仅接收到不考虑序列之间的联系,会进行逐字翻译,那么它可能会产生如“yesterday I eat apple”这样语法错误的句子,当下文的输出考虑到之前的输入后才会输出正确的结果。就是在翻译吃这个单词的考虑到了之前输入过昨天的信息,因此它就应该将动词“eat”转换为其过去式“ate”,从而产生一个语法正确且语义完整的翻译:“yesterday I ate an apple”。这种模型必须能够理解整个句子序列中的时态和逻辑关系,以生成正确的翻译。

因此,序列数据中词与词之间的内在联系对于模型的输出有着直接的影响。为了更准确地捕捉和利用这些联系,在模型设计中需要能够整合之前的输入来指导未来输出的能力。正是为了解决这类问题,从而更有效地处理序列信息,循环神经网络(RNN)被创造出来。

1.2 RNN基本结构

与传统的神经网络相比,循环神经网络(RNN)的特殊之处在于其结构中增加了循环部分。这个循环部分允许信息在网络的层级之间进行循环,使得网络能够处理序列数据,并且能够利用之前的信息来影响后续的处理和输出。这种设计使RNN具有了处理时序数据的能力,这在处理语言、音频、时间序列数据等问题时尤其有价值。

在这里插入图片描述

上图清晰展示了传统神经网络与循环神经网络(RNN)之间的区别。在传统神经网络中,输入信息会通过权重矩阵和激活函数进行处理,最终输出结果。相比之下,循环神经网络(RNN)在生成当前输出时,不仅考虑当前的输入信息 ,还会考虑另一个从W方块中传递过来的信息。实际上这部分保存的就是上一个时间步留下来的。 这种机制允许RNN在处理数据时,将过去的信息传递到当前步骤,从而更有效地处理序列数据。

上面图片过于抽象,按照输入的时间展开就是这样:
在这里插入图片描述
再直白一点就是这样的:

传统神经网络循环神经网络按时间方向展开RNN网络
在这里插入图片描述在这里插入图片描述在这里插入图片描述

x x x 代表模型的输入, x t x_t xt 代表在时间点 t t t 的输入信息。 x t x_t xt 是一个向量,这与传统神经网络的输入方式相似。在时间点 t t t,状态 s t s_t st 是由当前时间的输入信息 x t x_t xt 和上一时间点的隐藏层输出 s t − 1 s_{t-1} st1 两部分组成。因此,我们可以得出模型的整体公式如下:

s t = f ( U x t + W s t − 1 ) s_t = f(Ux_t + Ws_{t-1} ) st=f(Uxt+Wst1)

两部分输入整合:

O t = g ( V s t ) O_t = g(Vs_t) Ot=g(Vst)

计算输出结果, f g fg fg分别代表不同的激活函数。

对上图的某一个时间步进行展开得到下图:
在这里插入图片描述
在时刻 t t t ,模型接收输入信息 x t x_t xt ,通过权重矩阵 U U U 进行线性变换。同时,时刻 t − 1 t-1 t1 的隐藏层输出 s t − 1 s_{t-1} st1 通过权重矩阵 W W W 进行映射。 W W W U U U 的输出维度必须一致,这两部分结果被结合并通过一个激活函数来生成当前时刻 t t t 的隐藏层输出 s t s_t st。最终, s t s_t st 通过权重矩阵 V V V 再次映射并通过激活函数处理,得到时刻 t t t 的输出结果 y t y_t yt 。此外,隐藏层的输出 s t s_t st 会被复制并传递到下一个时间步,即 t + 1 t+1 t+1 时刻,用于指导下一阶段的模型预测。

上图中的参数矩阵 W 、 U 、 V W、U、V WUV都没有进行标号,上文中描述过,这是参数共享的,因此模型中不同的 W W W矩阵使用的参数都是相同的。 不同的部分也仅仅是模型增加了一个上一时间阶段的隐藏层输出信息用来指导当前时间的输出结果。

https://zhuanlan.zhihu.com/p/61472450 当前文章解释RNN的反向传播
https://zhuanlan.zhihu.com/p/123211148 当前文章对RNN进行举例子
https://cuijiahua.com/blog/2018/12/dl-11.html 参考文章内容详实

1.3 双向循环神经网络

在前述内容中,阐明了循环神经网络(RNN)在语言模型中的功能,即它能够利用之前的文字输入以及当前时间点的信息来指导当前输出,以预测接下来的文本。然而,仅仅依赖前文来预测后续单词所获得的信息显然是不全面的。

可以考虑一个简单的RNN语言模型的应用场景,比如要预测一句话中下一个单词是什么。

假设目前的句子是

“天气预报说今天___,所以我带了雨伞出门”

模型需要预测下一个单词。RNN会接受前面的单词“天气预报说今天”作为序列输入,每个时间点接受一个单词。模型将记住之前的信息(也就是它所谓的“记忆”),现在它要做的是利用这些信息来预测下一个单词。因为“天气预报说今天”后面通常会跟随天气状况,所以模型可能会预测出“晴天”、“下雨”等与天气相关的单词,具体的答案不能确定,然而,当我们看到下文的内容时候就有了一个准确的答案,今天后面的单词是下雨。

基于当前思想利用循环神经网络进行建模,构建出双向神经网络,满足这部分的功能需求。

在这里插入图片描述

上图中展示的就是双向循环神经网络的模型架构,在每个时间步同时考量历史和未来的信息。这样的设计在处理序列数据时具有极大的优势,特别是在需要理解上下文联系的情境中。

在确定时间步骤 t t t 的输出 y t y_t yt 时,Bi-RNN 遵循以下过程:

  1. 正向模块(例如 A t A_t At)结合当前输入与过去的累计信息,以捕获序列前段的语境。
  2. 反向模块(例如 A t ′ A'_t At)同时引入未来的输入和当前时刻的信息,以捕获序列末尾的情况。

如此,时间步 t t t 的输出 y t y_t yt 不仅受到前文信息 A t A_t At 的影响,还受到后续信息 A t ′ A'_t At 的影响。可以通过以下方式表述这一计算流程:

y t = g ( V A t + V ′ A t ′ ) y_t = g(VA_t + V'A'_{t} ) yt=g(VAt+VAt)
其中:
A t = f ( W A t − 1 + U X t ) A_t = f(WA_{t-1} +UX_t) At=f(WAt1+UXt)
A t ′ = f ( W A t + 1 ′ + U ′ X t ) A'_{t} = f(WA'_{t+1} +U'X_t) At=f(WAt+1+UXt)
可以看出模型的计算方式和单向的差别不大,当然这部分权重矩阵用了 U U U U ′ U' U来进行区分前向和后向,上文中也说过模型是由两个单向网络拼接,因此 U U U U ′ U' U W W W W ′ W' W V V V V ′ V' V不共享权重系数,因此是不同的权重矩阵。

在上文中引入双向循环神经网络使用了填空任务,但是看实际模型架构似乎存在透露答案的可能,这里解释下

模型本身就是语言模型,只是为了结合上下文信息生成结果,比如翻译模型需要依赖前文和后续的信息输出当前信息的最终就够。因此不存在提前知道答案的行为。

在处理填空任务时,模型的输入部分会对需要填空的位置使用mask占位符替代,因此也不会存在偷看答案的情况,输入进行遮挡(masking),模拟出单词缺失的情况。这样做可以帮助模型学习如何根据上下文预测缺失的单词。这种方式通常称作“掩码语言模型”(Masked Language Model, MLM)训练。这部分的知识不影响后续的学习故此本章节不做过多的解释,有想了解的读者可以参考本专栏关于Bert模型使用mask方法的部分进行学习。

实际应用中,选择遮挡多少及如何遮挡取决于具体的任务需求和模型设计。尤其现在,更先进的模型如BERT已经广泛采用了这种遮挡策略,并在多种自然语言处理任务中取得了显著的成绩

1.4 深层双向循环神经网络

前文中采用的是简单结构的网络进行举例,同样循环神经网络的隐藏层也是可以通过堆叠增加模型的深度,从而提取深层的信息,如下图所示:

在这里插入图片描述
每个额外的隐藏层都允许网络进一步抽象和整合输入序列的特征,使得深度循环神经网络能够捕捉更为复杂的模式和依赖关系。这种结构扩展为模型提供了更大的灵活性和更高层次的数据表达能力。

在计算某个时间步的输出时,信息不只是在相邻层之间传递,而是在多个层次间经过深度交互后得到。

1.5 RNN的梯度爆炸和消失问题

通常来说,增强神经网络的深度会增加遇到梯度消失或梯度爆炸现象的风险。深度学习中,微小的调整在第一层网络参数中产生的影响可通过后续各层传播,进而影响整个网络的参数。此过程涉及到对网络中多个连续层参数渐变的链式乘积。特别是当激活函数选为sigmoid时,其梯度的导数值始终小于1,这将导致随着层级数量的增加,累积梯度越来越微小,最终导致梯度消失。反之,如果累积梯度异常巨大,则可能会出现梯度爆炸。在训练深度神经网络时,这两种情况都需特别留意,因为它们会严重妨碍模型的学习效能和表现。

对于循环神经网络(RNN),它在时间上的展开类似于深度网络,且由于参数共享的特性,单个权重矩阵的变动会同时影响到多个时间步的隐藏状态。链式求导法则的应用导致了任何单一权重的更新都会对整个时间序列产生影响,由此产生了梯度消失和爆炸问题,这与在深度网络中遇到的问题是一致的。

事实上,在正向传播的过程中,网络第一层的参数影响了后续所有层的输出。由于链式法则,求导过程可以分解为逐层计算,每一层的输出经过激活函数后成为下一层的输入。当反向传播算法执行时,我们通过层层分解这个过程,反复对激活函数的输出应用求导操作。由于激活函数(如sigmoid或者tanh)的导数值小于1,经过多层传递后,激活函数的累积求导结果会连乘很多个小于1的数值,这最终会导致梯度消失——即梯度的信息在传递过程中逐渐减弱直至消散。若连乘结果大于1,就可能发生梯度爆炸——即梯度的信息在传递过程中迅速放大,导致数值过度膨胀。这两种情况都会严重阻碍模型的训练过程。

简单的举个例子:

请添加图片描述
上述公式损失函数对时间步 t t t 的隐藏导数。为什么中所看到的损失 E E E ,被分解成了多个损失呢?实际上就是时间步 t t t 的隐藏层结果 z t z_t zt 影响了时间 t + 1 t+1 t+1 到最终时间 L L L 的损失情况,所以梯度是多个部分的累加。首先计算的是时间 t t t t + 1 t+1 t+1 还好,到到时间 t t t L L L 的情况就需要计算多次迭代导数的乘积:

请添加图片描述

就会出现多种对激活函数求导的连乘项,故此引发梯度消失。而这时候 W W W矩阵或者是其他的参数矩阵出现矩阵模小于1,会加剧这个情况的发生。

https://zhuanlan.zhihu.com/p/76772734 当前大佬讲的更详细。

二、LSTM模型

上文中介绍了RNN模型以及存在的梯度消失问题,而长短期记忆网络(LSTM)是为了解决梯度消失问题而设计的。在传统的循环神经网络(RNN)中,由于序列数据的长距离依赖,梯度在传播过程中会随着每一层的逐层乘积而指数级减小,这就是梯度消失问题。这使得RNN难以学习和保持长期依赖关系。LSTM通过引入一系列精妙的门控机制,可以有效地控制信息的保留与遗忘,以此维持长距离的梯度流动。

首先明确下这部分内容:

  • LSTM是RNN的变种,本质上也是循环神经网络
  • LSTM可以避免梯度消失的问题实现更长时间的记忆功能

2.1 LSTM和RNN的结构对比

首先看下传统简单的RNN结构:
在这里插入图片描述样式1

读者看这个图可能和上文中画的RNN图之间存在差异,由于多数论文中对LSTM讲解都使用上图这种结构,为了统一性,在参考其他博文的基础上本文对差异部分进行简单解释,后续文章基于一致性都采用和其他文章一样的图样。在这里插入图片描述
样式2

样式2中所述的循环神经网络输出 O O O 是通过对隐藏层输出 S S S 进行线性变换和激活函数处理得到的。而在样式1中, h h h 代表的是未经过线性变换矩阵和激活处理的纯粹隐藏层输出。需要注意的是,这里的 S S S h h h 实际上指的是同一种数据。具体上文中描述的 U U U 矩阵和 W W W 都被包含在了绿色方块 A A A 中,矩阵其他处并无差异。

故此按照时间方向展开的图结构就是:

在这里插入图片描述

展开看下 A A A 内部的具体操作,实际上就是 U U U 矩阵, W W W 矩阵和激活函数都被描述在了 A A A 内部,展开如下:

请添加图片描述

上图中黄色方块表示神经网络层,即线性变换和激活函数的汇总,这部分包含了,实际上就是 U U U 矩阵, W W W 矩阵和激活函数都被描述在了文中这个黄色的区域内,这部分为神经网路层。

在这里插入图片描述

再来简单看下LSTM结构看起来复杂了很多,具体的就是通过这个复杂的结构让模型实现了避免梯度消失的问题实现更长时间的记忆功能。就是对RNN中的上文中描述的 A A A 的部分进行了修改。

2.2 LSTM模型细节

为了更好的看懂这个复杂的结构对途中符号进行解释:

请添加图片描述

第一个黄色方块表示的是由线性映射矩阵和激活函数构成的神经网络层。第二个粉色点就是两个向量在相同位置的数值进行操作,如果中间是加号那么就进行加法操作,乘法则变成哈达马积。后续的部分较为直观:第三个图形表示向量的流动,即信息数据的传递方向;第四个图形表示向量的汇总或拼接;最后一个图形表示将一个向量复制成两份,并让这两份向量分别向不同的方向传递。

为了看懂模块做了什么,首先要确定下这个LSTM模型这个 A A A 的部分输入了什么?要输出什么?

模型输入部分分为三个:

在这里插入图片描述

图中红色箭头指出的是输入,蓝色的箭头标志出的是模型输出的位置。对比RNN图可以发现RNN只有两个输入和输出。

故此差距显现,那么多出来的输出和输出是是什么呢?具体的表示的什么信息呢?

在 LSTM 模型中, X t X_t Xt 易于理解,它代表当前时间步下模型的输入。随后,关注两个重要的组件: C t − 1 C_{t-1} Ct1 h t − 1 h_{t-1} ht1。首先, h t − 1 h_{t-1} ht1 在很多方面与传统 RNN 中的隐藏层输出类似,它表示用于计算 t − 1 t-1 t1 时刻的输出所需的隐藏层结果。而 C t − 1 C_{t-1} Ct1,或称为“细胞状态”,实际上就是 h t − 1 h_{t-1} ht1 在未经激活和特征选择之前的隐藏层状态。

C t − 1 C_{t-1} Ct1 h t − 1 h_{t-1} ht1 同时传递到下一个时间步的目的,类似于残差连接的作用,旨在防止迭代过程中丢失重要信息。通过这种方式,不仅传递了处理后的隐藏层结果,还包括了处理之前的原始结果,以保持信息的完整性和连续性。简单的来说就是担忧被处理过的 h t − 1 h_{t-1} ht1 丢失了 C t − 1 C_{t-1} Ct1 中重要的信息,所以索性一起传下来

好了,有了对于全局的理解现在分步的探索每一个部分的操作时如何实现的。

请添加图片描述

首先看上图中的 C t − 1 C_{t-1} Ct1 这部分的信息,被传递进了 t t t 时刻的模型中经历了两次操作变成了 C t C_{t} Ct ,第一次对 C t − 1 C_{t-1} Ct1 向量按位进行乘积的操作,第二次是按位进行加法操作。

首先看第一个的操作部分:

在这里插入图片描述

t t t 时刻新加入的数据数据 X t X_t Xt 和上一个时刻的隐藏层输出结果 h t − 1 h_{t-1} ht1 拼接成一个向量送入到神经网络层中,得到向量 f t f_t ft。实际上和上文中 s t = f ( U x t + W s t − 1 ) s_t = f(Ux_t + Ws_{t-1} ) st=f(Uxt+Wst1)的计算过程一致的。


这种运算本身就是等价的再此解释:

两个变换过程的等价性展示:

给定:

  • 输入向量 X t X_t Xt
  • 上一时刻的隐藏状态 h t − 1 h_{t-1} ht1
  • 矩阵 U U U 对应于 X t X_t Xt 的线性变换
  • 矩阵 W W W 对应于 h t − 1 h_{t-1} ht1 的线性变换

分开的变换过程:

  1. 应用矩阵 U U U 到向量 X t X_t Xt
    U x t Ux_t Uxt
  2. 应用矩阵 W W W 到向量 h t − 1 h_{t-1} ht1
    W h t − 1 Wh_{t-1} Wht1
  3. 然后将这两个变换的结果相加:
    U x t + W h t − 1 Ux_t + Wh_{t-1} Uxt+Wht1

拼接的变换过程:

  1. 将向量 X t X_t Xt h t − 1 h_{t-1} ht1 拼接成一个新的向量 z t z_t zt
    z t = [ X t , h t − 1 ] z_t = [X_t, h_{t-1}] zt=[Xt,ht1]
  2. 构造矩阵 V V V,它是由 U U U W W W 组成的更大的矩阵:
    V = [ U , W ] V = [U, W] V=[U,W]
  3. 应用矩阵 V V V 到拼接后的向量 z t z_t zt 来完成一次性变换:
    V z t = V [ X t , h t − 1 ] = U x t + W h t − 1 Vz_t = V[X_t, h_{t-1}] = Ux_t + Wh_{t-1} Vzt=V[Xt,ht1]=Uxt+Wht1

两个分开的线性变换的结果是等价于一个拼接后的线性变换的结果。


这里唯一需要注意的是激活函数 𝜎 是sigmoid函数。这个函数的特性就是会将数据映射成0-1之间的数值。通过向量 f t f_t ft 和上一个时间步的全部信息 C t − 1 C_{t-1} Ct1 相同向量位进行乘积(Hadamard Product),思考一下,一个向量的乘上一个向量值在0-1之间的向量,本身就是对自身有些数据的保留有些数据的舍弃,所以当前位置计算的结果 f t f_t ft 被称为遗忘门,就是通过 t t t 时刻的输入 X t X_t Xt 和 上一时间步的隐藏层输出结果 h t − 1 h_{t-1} ht1 来决定对上一部分得到的全部信息 C t − 1 C_{t-1} Ct1 的取舍情况,即遗忘情况,哪些忘记哪些留下来。从而对 C t − 1 C_{t-1} Ct1 的信息进行了一定取舍。

将改变后的 C t − 1 C_{t-1} Ct1 的信息继续传递等待着加号位置的第二次操作:

请添加图片描述

加号底下的处理部分分为两部分,一部分是 i t i_t it 一部分是 C ~ t C̃_t C~t 先来看看这两部分的作用:

i t i_t it 的结果很简单通过输入 X t X_t Xt 和 上一时间步的隐藏层输出结果 h t − 1 h_{t-1} ht1 再次生成遗忘门的向量,对特征信息进行选择,而这次处理得到的向量目的也是用来帮助模型遗忘和留下的信息的,不同的是上一次是用来筛选上一个时间步传递进来的信息,而这次却是用来筛选新数据和上个时间步隐藏层信息经过神经网络层处理的向量, 利用 X t X_t Xt 和 上一时间步的隐藏层输出结果 h t − 1 h_{t-1} ht1生成的遗忘门结果对 X t X_t Xt 和 上一时间步的隐藏层输出结果 h t − 1 h_{t-1} ht1的信息进行选择。

在这里插入图片描述

现在得到了两部分信息,一部分是改变后的 C t − 1 C_{t-1} Ct1 的信息,一部分是改变后的 X t X_t Xt 和 上一时间步的隐藏层输出结果 h t − 1 h_{t-1} ht1 生成向量的部分信息。

粗略的说 第一次改变的 C t − 1 C_{t-1} Ct1 == 是上一个时间步的旧信息的遗忘保留结果,一部分是 当前时间步的新信息 选择的结果,将这两种信息进行加法操作得到了最终的信息 C t C_{t} Ct。 ==

之所以输出 C t C_{t} Ct 模型的目的构建一个之前描述的类似于残差连接的操作,所以会直接输出 C t C_{t} Ct 这是当前时刻准备记忆保留的全部信息。

当前时刻的隐藏层输出 h t h_{t} ht 如何得到呢?

再次依赖 X t X_t Xt 和 上一时间步的隐藏层输出结果 h t − 1 h_{t-1} ht1 生成的这样的一个“门”操作,来对 C t C_{t} Ct 当前时刻记忆全部信息进行取舍操作,从而得到了当前时间步的隐藏层表示 h t h_{t} ht

故此模型实现了记忆的保留遗忘功能,依赖于新信息和旧信息的指导利用sigmoid的函数0-1的特性,构造多次的门结构,对一个向量的不同位置的值进行保留和遗忘,实现模型具备记忆和遗忘的能力。

主要能力都是来源于下图中的结构:

请添加图片描述

它由一个Sigmoid神经网络层和一个逐点乘法操作组成。读者在不明确这部分含义的时候可以带着问题再次回顾下,从而更好的理解LSTM中“门”的概念。

三、GRU模型

上文中讲解了LSTM中通过“门”的概念实现了长时间的记忆功能,但是这一复杂的结构也增加了模型的训练难度,GRU(门控循环单元)能够在更少的参数情况下达到相同的性能。GRU模型作为LSTM的一个变种,它优化了LSTM中的门控机制。GRU的主要特点是仅使用两个门——重置门(reset gate)和更新门(update gate)——来控制信息流,使模型在减少参数数量的同时,保持了长期依赖学习的能力。

请添加图片描述

上图中展示了GRU的总体结构,减少了一个“门”控单元,可以看到在LSTM的第二个“门”控单元中,GRU则通过“1-”操作从而对两部分进行了互补,旧信息遗忘的部分通过新信息补充,从而大幅的减少了模型的参数,达到了和LSTM相同的能力水平。

精华部分就是通过一个“门”装置,实现了对旧信息 C t − 1 C_{t-1} Ct1,和新信息 X t X_t Xt 和 上一时间步的隐藏层输出结果 h t − 1 h_{t-1} ht1 构成向量的的信息选择,而LSTM则要使用多个“门”装置。

就模型性能而言,虽然GRU与LSTM在很多任务上都有相似的表现,但实际上,不同的任务和数据集可能会使得其中一种模型表现得更好。例如,对于一些任务而言,可能不需要LSTM提供的所有门控制能力,GRU的简化版本已经足够。因此,在选择模型时,研究者通常会根据具体任务的数据特点和需求来决定使用哪种模型,并通过交叉验证来找到最佳的架构

总结

本章节深入讲解了循环神经网络(RNN),并分析了其在自然语言处理(NLP)领域中处理序列信息的重要性。通过这些内容,可以更加透彻地理解RNN取得的显著成就。尽管如此,RNN仍然因为梯度消失问题在性能上面临着限制。长短时记忆网络(LSTM)利用其独特的门控机制克服了这一障碍,实现了长期记忆的功能。此外,门控循环单元(GRU)在维持与LSTM相同性能的情况下,优化了模型的参数数量,提升了网络架构的效率。

继而,本文将详尽阐述目前大型模型基础之上的Transformer架构,旨在协助读者紧随当下的多模态技术潮流,进而丰富其在自然语言处理领域的知识结构。通过对Transformer架构的深入了解,读者将能够更加效率地掌握和应用当前前沿的机器学习技术。

  • 33
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值