9.现代循环神经网络

这篇具有很好参考价值的文章主要介绍了9.现代循环神经网络。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

#pic_center

R 1 R_1 R1

R 2 R^2 R2

知识框架

No.1 门控循环单元(GRU)

一、GRU

1、门控循环单元GRU

  • 首先,让我们看一下叫做门控循环单元的GRU。GRU(Gated Recurrent Unit)是近年来提出的一种神经网络结构。它在我们接下来要讨论的LSTM(Long Short-Term Memory)之后提出。选择先介绍GRU的原因是因为相对来说,它更为简单。相比之下,LSTM是一个相当复杂的网络结构。所以我们先来了解GRU,然后过渡到LSTM。尽管它们在外观上可能有所不同,但从效果上来看,它们其实差异不大。因此,在实际应用中,使用哪个都差不多。
  • 好,首先我们来了解一下GRU。在GRU中,最重要的一点是理解什么是门控,
  • 这里的“get it”实际上是指神经网络中的门控机制。在GRU中,门控的作用很关键。

2、关注一个序列

  • 在讨论循环神经网络(RNN)时,我们注意到它在处理过长的序列时存在一些问题。这是因为整个序列的信息被压缩到一个隐藏状态中,将所有内容都塞进去。当时间跨度很长时,隐藏状态可能会累积太多信息,导致难以有效地从中提取先前很久以前的信息。这个问题使得观察到一个现象,即:
  • 观察一个序列时,并不是每个观察值都具有同等的重要性。例如,考虑一系列观察:一只猫,一只猫,一只猫,突然出现一只老鼠,然后再是一只猫,一只猫。在这种情况下,发现老鼠是一个非常重要的事件,而第一次出现的猫也是重要的,但随后的猫就不那么重要了。在现实生活中,根据处理自然语言的角度,一些关键词和关键句可能比较重要,而其他地方可能相对不那么关键。
  • 举例来说,在股票领域,某些点可能比较关键,比如最近教育板块的股票大幅下跌。这就是一个比较重要的事件。在很多情况下,股票市场可能会处于震荡状态,但关键点的出现会引起注意。
  • 在之前的RNN中,缺乏对特定位置的关注机制,无法明确指定关注或不关注的区域。对于RNN来说,一切都是一个整体序列,没有明确的机制来突出某些部分或忽略其他部分。然而,在门控循环单元(GRU)中,引入了额外的控制单元,使得在构建隐藏状态时可以有选择地强调某些部分的重要性,同时也可以选择忽略其他部分。(这里是因为后面的R和Z都是向量大小跟前面的H一样大的数值为0~1的数值)
  • 这里的门控神经网络,特指GRU的部分,通过引入额外的控制单元,实现了在构建隐藏状态时对特定部分进行加权。这意味着我们可以选择性地强调某些区域的重要性,或者选择性地忽略其他区域。在后续的讨论中,我们将深入研究注意力机制,这个机制更加明确地描述了如何选择关注哪些区域以及忽略哪些区域。
  • 好,首先,我们来讨论关于门的部分。门在这里有两种,一种被称为更新门,又叫做“update gate”。它的作用是确定哪些数据是比较重要的,需要用它来尽可能地更新隐藏状态。在这里,第一步是将信息尽可能地放入隐藏状态中,这样可以传递给后面的另一个门,即遗忘门或重置门。
  • 遗忘门的作用是判断到目前为止的信息是否仍然重要。如果不重要,就可以选择要么将输入标记为不重要,要么让隐藏状态中的信息逐渐遗忘一些内容。这样就形成了一个动态的更新和遗忘的过程,有助于网络更好地适应序列数据的变化。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

3、门

  • 向量内的数值都是在0~1 之间的数值;理解的时候可以考虑极限情况下;
  • 首先,我们来研究一下“门”的概念。门是通过公式和图示来解释的,让我们从这两个方面来理解它是如何工作的。首先,我们有一张图,图中表示了一个层的结构。让我们仔细看一下这个结构:它有一个输入Xt和一个隐藏状态H(t-1)。回想一下RNN,这个单元的输入是Xt和前一个隐藏状态,然后输出是更新后的隐藏状态和输出Yt。
  • 然后,仔细研究一下GRU这个门。首先,我们定义了两个门,一个叫做RT(重置门),另一个叫做Zt(更新门)。对于重置门R,它的计算方式与之前RNN的隐藏状态计算相似。门可以看作是一个与隐藏状态长度相同的向量,计算方式如下:下面的图片的公式
  • 其中,是一个sigmoid函数,将结果映射到0和1之间,得到RT。所以,RT实际上相当于RNN中使用sigmoid作为激活函数的等效部分。
  • OK,接下来让我们看一下Zt,这是另外一个门,它与计算隐藏状态和RT的方式是相似的。不同之处在于,对于这个z,它有自己的权重w。这两个w再加上一个BIOS。所以,这就是额外计算的两个门,相较之前等价于多了几个权重,是可以学习的权重,然后它的计算过程是在这个地方。
  • 具体而言,可以看下面的图片的公式;
  • 因此,这里的R被称为重置门(reset gate),用于重置;而z用于控制更新门(update gate)。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

4、候选隐状态

  • 全0的话,就是不考虑之前的状态的情况了; H t − 1 H_{t-1} Ht1,就是之前的不考虑了;这里是没有影响到 X t X_t Xt,的

  • 接下来,我们要讨论的是一个被称为候选隐状态的东西,它不是真正的隐藏状态,而是作为候选状态声称真正的要的隐藏状态。让我们仔细看一下它的计算方式。

  • 首先,假设我们不考虑RT,也就是说,不考虑它的话,其实它就是描述之前RNN如何计算隐藏状态的方式。就是XT进来,对应的隐藏状态用相应的w表示,再加上假设不看r的情况下,上一个时刻的隐藏状态乘以相应的权重,再加上b,然后通过一个tanh作为激活函数。这就是说,如果我们不考虑Rt的话,这就是之前RNN如何计算隐藏状态的方式。

  • 但是现在我们加入了一个Rt,这个点表示按元素乘法的意思。我们知道Rt是一个与Ht长度相同的向量,对于一个样本来说,它是一个向量,长度是hypnotized。因此,这两个向量的长度相同,可以进行按元素的乘法。

  • 然后,另一方面,我们要了解这个东西是一个在0到1之间的值,因为使用了sigmoid函数。那么这意味着什么呢?假设里面的元素越靠近0,那么相应的计算结果就会接近于0。这个值的变化是什么意思呢?简单来说,它表示在更新隐藏状态时,如果某个元素趋近于0,那么相应的操作就会使得该元素的值接近于0,相当于将上一个时刻的隐藏状态“忘掉”,将其置为0。如果某个元素设为0,表示丧失了状态信息,而如果所有元素都设为0,就相当于回到初始状态。在极端情况下,如果RT全部等于0,那就意味着从这个时刻开始,前面的信息全部被丢弃,隐藏状态重新从0开始初始化。

  • 另一个极端情况就是RT里面全是1;这表示所有前面的信息都会被带入当前的更新,就等价于回到了RNN是如何计算隐藏状态的情形。当然,实际上,由于RT是可以学习的,因此它会根据之前的信息来学习,决定哪些信息应该传递到下一轮的隐藏状态,而哪些信息则被丢弃。它会自动地执行这个控制过程,因此它类似于一个控制单元,因此被称为“门”。

  • 门实际上是电路领域的一个概念,表示电路中的一个控制机制,它可以允许信号通过或者阻挡信号。在这里,门的概念是软件实现的,因为它的值在0到1之间,表示可以进行柔性的控制。

    9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

5、隐状态

  • Z t Z_t Zt等于全1的时候,最终是没有有 X t X_t Xt的了;这里主要影响的是 X t X_t Xt了感觉
  • 真正的隐藏状态是 Zt 按元素点乘上一次的隐藏状态,再加上(1-Zt)按元素点乘的候选隐藏状态。在这里,Zt 是一个控制单元,被称为更新门(update gate)。这个更新门的值在0到1之间,假设 Zt 全部等于1,则表示 HT 等于 H(t-1),即不进行更新,直接将前一时刻的状态传递到当前时刻。这相当于将 XT 的影响忽略掉,不用 XT 来更新隐藏状态。
  • 当假设的 ZT 几乎等于0时,基本上就回到了 RNN 的情况,不再直接使用过去的状态,而是更关注当前的更新状态。因此,在极端情况下,如果 ZT 等于0,而 reset gate 没有作用,那么相当于直接使用前一时刻的状态。
  • 在一般情况下,reset gate 和 update gate 通过调节其值,可以控制是丢弃当前的 XT 直接回到过去状态,还是在新状态中使用多少过去的状态,再加上当前的 XT 进行计算。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

6、总结

  • GRU引入了两个额外的门。每个门都有一组可学习的参数,与之前的RNN相比,这些参数的数量相同。这些权重,如Wxr、Wxr和Wxh,它们的形状都是相同的,都是可学习的权重。因此,总体来说,可学习的序列权重的数量是之前的3倍。
  • 这两个门充当控制单元,因为它们的输出在0到1之间。一个门用于重置(reset),在更新新的隐藏状态时决定要使用过去隐藏状态的多少信息。另一个门用于计算真正的新的隐藏状态,需要多少来自当前新的Xt的相关信息。在极端情况下,如果一个门的值(例如Z)等于0,而另一个门的值(例如R)等于1,那么系统将回到之前RNN的情况,即HT等于HDE(T2),而R等于1。这相当于之前RNN是如何计算的。
  • 在另一些极端情况下,可以选择完全不考虑Xt,直接从H(t-1)等于Ht,这基本上是忽略了当前的Xt。另一种状态是在计算候选状态时,整个新的状态只与Xt相关,不需要使用前面的所有信息,直接是Ht从Xt过来。
  • 总的来说,GRU在这两个极端情况之间进行一些可学习的调整,以控制是多看现在的Xt,还是不太看它,尽量关注过去的信息。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

二、D2L代码注意点

三、QA

No.2 长短期记忆网络(LSTM)

一、LSTM

1、长短期记忆网络(LSTM)

  • LSTM,即长短期记忆网络,是在上世纪90年代被提出的网络结构。它相当复杂,网络设计的原因一直让人疑惑。
  • 尽管LSTM的结构看起来有些奇特,但在实际应用中,它仍然是一个经常被使用的网络。即使是在90年代提出的,它仍然在深度学习领域保持着广泛的应用。

2、长短期记忆网络

  • LSTM在后面讲述GRU放在后面讲述的原因是因为LSTM引入了一些额外的组件,使得它相比于GRU更为复杂。具体来说,LSTM引入了忘记门,类似于之前介绍的那个门(GRU),它的作用是决定是否要忽略输入的数据。
  • 此外,LSTM还引入了输入门,用于决定是否要用隐藏状态。因此,LSTM和GRU在实现的效果上是一样的,都是为了判断是否要忘记过去的状态,尽量关注当前状态或者是当前输入数据。但是,在实现相同的效果时,LSTM引入的组件相对更为复杂一些。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

3、门

  • 首先,LSTM引入了三个门,与之前介绍的Z和R的计算方式相似,但是它们的命名不同。这三个门分别被称为“遗忘门”(forgot gate,缩写为F)、“输入门”(input gate,缩写为I)和“输出门”(output gate,缩写为O)。大家需要注意,相较于之前的R和Z,现在变成了 IFO。虽然不详细展开,但基本上计算方式是一样的,每个门都有两个权重(w)和一个偏置(b)来进行计算。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

4、候选记忆单元

  • 首先,这个结构引入了一个新的组件,称为候选记忆单元(Candidate memory,)。这个C的计算方式实际上类似于之前在RNN中计算隐藏状态Ht的方法,即将输入与其对应的权重w相乘,再加上前一个状态的h,最后再加上偏置b进行更新。换言之,C的计算方式与之前RNN中计算h的方式相似。

  • 在这个新引入的记忆单元中,它涉及到两组新的权重w,相较之前的两组,现在总共有了四组。之前的计算方式是两组,再加上h的更新方式。而现在,这个计算变成了C的更新方式。为什么这里叫做c而不是h呢?因为这里涉及到的C(Candidate memory)的更新方式与之前RNN中的Ht更新方式是一样的,没有涉及到任何门控机制。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

5、记忆单元

  • 记忆单元是LSTM中的一个关键组件,它会将上一个时刻的记忆单元作为状态传递到当前时刻。与RNN和GRU不同的是,LSTM的状态包含两个部分,一个是记忆单元c,另一个是隐藏状态h。为什么之前的状态都用一个单元来表示呢?因为LSTM引入了记忆单元c,需要额外考虑它。
  • 在LSTM中,记忆单元有一个称为遗忘门(forgot gate)的机制,即尽量将某些部分的记忆置零。i门(input gate)的作用是根据输入来更新记忆单元,如果i等于0,就会舍弃当前的候选记忆单元(类似于GRU中的z和1减z)。需要注意的是,这里的 I 和F是相互独立的,它们可以同时选择保留前面的状态和舍弃当前的记忆单元,也可以选择全部保留或全部舍弃。
  • 总的来说,LSTM中的这两个门是相互独立的,对于其中一个的操作不会影响到另一个,可以选择在状态更新时同时保留前面的状态和当前的记忆单元,也可以选择不保留其中之一。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

6、隐状态

  • 这里涉及到隐藏状态的处理,其中有一个有趣的地方是对记忆单元进行Tanh操作。为什么要这样做呢?因为Tanh可以将数值映射到正1到负1之间。在此之前,记忆单元c被认为是在正1到负1之间的范围内,而CT(候选记忆单元)也需要在相同的范围内。然而,由于f和i都在0到1之间,c和CT2档也在负1到正1之间,它们相加后可能会变得比较大。因此,为了确保范围在正1到负1之间,需要对CTI进行Tanh操作,以将其限制在正1到负1之间。这样,无论CT的值如何,通过Tanh处理后,可以将其拉回到正1到负1的范围内。这就是使用Tanh的原因。
  • 再进行另一项操作,这项操作涉及到Ot(输出门),它用于控制输出。当Ot等于1时,表示允许输出;当Ot等于0时,表示不进行输出。不进行输出的情况下,即Ot等于0时,当前的Xt和过去所有信息都将被忽略,最终隐藏状态Ht将被重置为0。这种方式与之前的操作略有不同,以前的重置操作是放在计算的最前面,而现在则放在最后面。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

7、总结

  • LSTM(长短时记忆网络)与之前的GRU有相似的目标,但它的实现稍微复杂一些。首先,它引入了一个记忆单元C。这个C可以被看作是一个未经归一化的数值,可能具有较大的数值范围,它被放置在一个辅助的记忆单元中。在每次更新时,它可以选择忽略前面的C,只与当前的X相关;或者可以选择忽略当前的x,只使用前面的状态;当然,它还可以选择全部忽略。这种设计使得LSTM在处理不同情况时更加灵活。
  • 对于隐藏状态H,它可以选择将C记忆单元整合过来,也可以选择不使用任何信息,直接在下一时刻进行重置。总体来说,LSTM的设计灵活多样。
  • 为什么要先讲GRU呢?因为GRU的解释相对简单,而LSTM相对更加复杂一些。但实际上,它们都追求相似的效果,即要么更多地关注当前的Xt,要么更多地忽略Xt,又或者选择重新开始。这样设计的目的是实现不同的功能。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

二、D2L代码注意点

三、QA

No.3 深层循环神经网络

一、深层循环神经网络

1、深层循环神经网络

  • 深度循环神经网络,深度体现了深度学习的概念。在之前的讨论中,我们主要关注单一的隐含层,而现在我们要进一步,引入深度,使网络更加复杂。深度循环神经网络通常涉及多个循环隐含层,使得模型能够更好地处理序列变长的情况。深度学习的深度正是通过引入多个隐含层来实现的。

2、回顾:循环神经网络

  • 说回RNN,它是一个具有隐藏变量的模型,可以理解为一个拥有隐藏层的神经网络。然而,在RNN中,由于难以处理宽度过大的情况,容易出现过拟合问题。为了解决这个问题,一般的做法是通过引入非线性操作来增加深度,每一层都应用一些非线性操作,多个层叠加在一起,最后再添加一个非常强烈的非线性操作。
  • 同样的思路也适用于循环神经网络,即如何将循环网络变得更深。简而言之,就是增加更多的隐藏层。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

3、更深层次

  • 本质上有个区别。之前我们讨论的是浅层的RNN模型,只有一个输入层,连接一个隐藏层,最后输出结果。如果要实现深度,我们可以在隐藏层之间加入更多层次。就像这样,有一个输入层,然后是一个隐藏层、两个隐藏层、三个隐藏层,一直到输出层,中间增加了更多层次。这里画了一个隐藏层,是因为每一步输入,都会在下一个时间步中进行相同的操作。
  • 在公式上看也相对简单,比如当前的第一个隐藏层的状态(HT),我们就在这里加一个一,根据之前的计算得到。然后向下走,这里是一个DJ层,这里是FJ层。FJ层之所以有一个小空白,是因为它隐含了一些东西,然后是d阶层的一个。上一个时刻的隐藏状态,申老师提到每一层都进行一些非线性操作,然后层层叠加,将循环神经网络变得更深。
  • 这个地方应该是激活函数,然后这个是上一个时刻的隐藏层的状态,作为输出。不同之处在于,每个隐藏层的状态既往下传递,也往上输出。所以说,只有第一层使用XT作为输入,而后面的层使用上一个隐藏层的状态。最后,对最后一层的隐藏状态进行处理,得到输出。这就是深度网络的概念。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

4、总结

  • 好,来简要总结一下。深度循环神经网络,简称深度RNN,通过使用多个隐藏层来获取更多的分析信息。需要注意的是,GRU、LSTM和RNN的结构在原理上是相似的,唯一的区别在于它们计算隐藏状态的函数。
  • 所以,对于RNN、GRU和LSTM来说,实现深度网络的原理是相似的。在刚刚的图示中,并没有详细讨论,唯一的差异在于f函数的具体实现,其他方面都是一样的。因此,对于这三者来说,深度网络的实现原理基本相同。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

二、D2L代码注意点

三、QA

No.4 双向循环神经网络

一、双向循环神经网络

1、双向循环神经网络

  • 双向循环神经网络(Bidirectional Recurrent Neural Network,Bi-RNN)在序列模型中是一个常见的概念,允许模型在处理序列数据时既可以从前往后看,也可以从后往前看。这在某些情况下是有效的,但并非适用于所有场景。让我们进一步探讨一下。

2、未来很重要

  • 来看一个例子。假设让填一句话,叫 “I am 什么什么样”,然后变成完全填空:我非常饿。我非常饿。那么填空的话 “I am” 就随便选了,比如 “I am happy”。就是说这个是很开心的,就是 very hungry。说可以用 “not very” 也可以,我可以随便填。但是如果再给定后面的句子的话,我那么填空的话就会根据后面的文本关系,比如是 “very” 啦。所以核心的意思是,根据后面的文本关系,可以让填空的内容取决于前面是怎么填的。所以核心思想是,取决于过去和未来的上下文,可以填入不同的词。
  • 目前来看,循环神经网络(RNN)只看过去,所以如果我要预测下一个词的话,我只能看到前面的 “I am”,那么我就不知道该填什么了。如果我能够看到后面的文本,那当然在完形填空的时候就更有用了。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

3、双向RNN

  • 双向神经网络的意思是,我的一个隐藏层实际上有两个。首先,我的输入进来,有两个箭头,一个是往前的箭头,一个是往后的箭头。往前的箭头表示我的输入进来,我的状态被放到下一个输入中。然后,这是正常的。反过来是怎么做呢?反过来是说,X2输入到这个地方,它更新后的隐藏状态之后是要给X1使用的。最后,这两个隐藏状态合在一起,本来就是256,现在合成了512,然后输出。
  • 实现上怎么实现呢?实线上其实挺简单的。就是把那个还是一个东西,把序列反一下就行了,对吧?就是说,如果从前往后实现的话,那么我要实现一个反向,我就把这个序列反过来,然后丢进去,就比较完事了。就可以得到那个东西了,对吧?当然,在输出的时候我还得跟着反向。就是我把这一层的实现,这一层实现,就是把输入反向数据线拿到输出,然后把输出再返回来。OK,就完事了,然后再跟下一个层的实现对接就行了。
  • 那么具体看一下,就是说其实也一样,但在公式上来写,前向是怎么前向的,反向就是说,XT是由H(t+1)的状态过来的,OK。然后这是公式写法,实际写法就反一下对吧。最后是两个东西concate起来,然后进入输出层,OK。所以基本就是这个意思,不会给大家讲具体怎么实现,就是说稍微讲一下,就是实现就是一个东西,一个之前写的代码,把输入复制一遍,然后在forward的时候呢,把我的第一个隐藏层,就是正常出来,就出一堆那个output,是吧?然后出一堆,
  • 那第二个呢,第二个那个隐藏层呢,就是把输入给反一下放进去,把输出再反一下,然后输出跟前面的输出呢,一一对应的去做concate起来,然后再丢回到最后一层,OK,这就是双向的RNN的实现,这样子就可以达到说,这一条pass就是往前看的,就这个方向看的;后面一条pass是往后看的,然后对每一个TOKEN,就任何一个TOKEN,我这个地方拿到的h是这边的信息过来,这边h是这个东西信息过来,对吧?所以我这个任何一个中间隐藏层,它是两个方向的信息在这个地方同时出现。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

4、推理

  • 在训练时,相对容易处理。如果要进行推理,这就涉及到将后续的信息与前面的信息相结合。然而,双向神经网络在推理方面表现得较差,因为它无法看到未来的信息。在进行预测时,双向LSTM几乎无法准确预测下一个词,因为获取输出的隐藏状态需要同时看到之前的信息和之后的信息。在推理时,由于无法获取之后的信息,双向神经网络无法执行有效的推理。
  • 因此,双向循环神经网络的主要应用是对句子进行特征提取。在语义分析和翻译等任务中,可以用双向网络来查看整个句子的上下文信息。在语音识别等领域,也可以利用双向网络在完整的句子结束后再进行分析,而不是逐词分析。这样有助于更全面地理解语境。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

5、总结

  • 双向循环神经网络通过反向更新隐藏状态,利用反时间方向的信息。这样,网络可以获取到两个方向上的信息,
  • 通常用于抽取特征。在翻译任务中,比如将一个句子从中文翻译成英文,双向网络可以同时考虑两个方向的信息,这对于填空任务也是适用的。在填空时,可以考虑两个方向的上下文,选择合适的词语。然而,需要注意的是双向循环神经网络不能用于预测未来,因为未来的信息是未知的,所以不能通过反向信息获取。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

二、D2L代码注意点

三、QA

No.5 机器翻译数据集

No.6 编码器-解码器架构

一、编码器-解码器架构

1、编码器-解码器架构

  • 讨论一下整个框架的结构,这个结构被称为编码器。这是在最近几年得到广泛应用的一个概念。

2、重新考察CNN

  • 首先,让我们重新审视一下CNN的工作原理。回顾一下,CNN接收一幅图像,经过各种卷积层的处理,最终输出到输出层,进行分类,判断图中是否有猫等。你可以将它视为一种特征提取的过程,下层进行特征提取,上层进行预测。我们在之前的讨论中提到过,这是一种将底层数据编码成中间表达形式的过程,而这个表达形式对机器学习来说更加友好。
  • 现在,我们从另一个角度来看待特征提取的过程,即编码的角度。编码的目标是将原始数据转化为一种中间形式,这种中间形式对机器学习任务更为有利。接着,解码器的任务是将这个中间形式翻译成我们所需要的形式,即标签。这就是典型的编码和解码过程。
  • 在图像处理中,特征抽取就是编码的一部分,将原始数据编码成有意义的中间表达形式。最后,通过分类器进行解码,将中间表达形式翻译成我们感兴趣的标签。这种理解方式使得整个过程更加清晰,同时也符合机器学习的思维方式。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

3、重新考察RNN

  • RNN实际上也是一个类似的过程。给定一个句子,RNN会对其进行逐步处理,并输出结果。如果我们将最后一个时间步的隐藏层状态视为RNN的输出,就可以将其看作一种编码器。最终,我们可以在其上添加一个全连接层,将其输出到我们需要的形式,这时它就成为了一个解码器。这样的理解方式可以使我们更好地理解RNN的结构和功能。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

4、编码器-解码器架构

  • 这里涉及到了编码器和解码器的架构。这一抽象概念使得模型更加通用。具体而言,模型被分成两个主要部分,一个称为编码器(encoder),另一个称为解码器(decoder)。
  • 在编码过程中,模型接收输入并将其表示为中间状态,也可以称之为隐藏状态、特征图,或者统称为“statement”。此后,这个“statement”经过低扣处理,最简单的情况下,可以输出结果,即将输入转化为目标形式。值得注意的是,低扣处理也可以额外接收输入,从而生成额外的输出。
  • 这一架构相比之前稍显复杂,因为低扣处理可以接收额外的输入,并且在输出时也可以产生一些额外的信息。接下来我们将看到,这是如何转化成机器翻译的具体架构。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

5、总结

  • 是的,将模型抽象成编码器和解码器的结构,使其更加通用且适用于多种任务。在这一架构中,编码器负责将输入表示为中间状态或特征,而解码器则主要负责生成输出。
  • 编码器通过对输入进行处理,产生一个中间的状态,这个状态包含了输入的信息。这个状态可以被看作是对输入的一种抽象或表示,捕捉了输入数据的关键特征。这个过程通常包括将输入通过多个层次的网络结构,提取并组合不同层次的特征。
  • 解码器则利用编码器生成的中间状态,通过一系列的处理,将其转换为最终的输出。这个输出可以是对输入的翻译、重建或其他形式的处理结果,具体取决于任务的性质。
  • 这种编码器-解码器结构的灵活性使其适用于各种应用,如机器翻译、图像生成、语音合成等。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

二、QA

No.7 序列到序列学习(seq2seq)

一、seq2seq

1、序列到序列学习(seq2seq)

  • seq2seq,这指的是将一个句子翻译成另一个句子。类似于 DNA 转录为 RNA 的过程,生物学中常见的操作。这也可以被理解为从一种形式转换成另一种形式,就像 DNA 被转录为 RNA 一样。

2、机器翻译

  • 最初,它被应用于机器翻译。关于机器翻译的工作原理已经讲过,即将一个原始语句自动翻译成目标语言。例如,将一段英语句子输入模型,然后模型将其翻译成中文。这就是所谓的编码器-解码器架构,最早可能使用了 Seq2Seq 模型,现在可能采用了 BERT 等更先进的模型,具体使用了哪个模型并不确定。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

3、Seq2seq架构

  • 它是一个编码器(encoder)和解码器(decoder)的架构。具体而言,编码器接收一个输入句子(例如"hello world")并将其信息压缩存储在其中,然后传递给解码器,最终输出翻译后的句子(法语等)。这个具体实现被称为"Seq2Seq"或"S2S",而"Seq2Seq"则指的是这一模型的一篇论文。该模型的编码器使用的是递归神经网络(RNN)的单元,这个单元可以是长短时记忆网络(LSTM)或门控循环单元(GRU)。在每个时间步,RNN会接收一个词,将其状态记录下来,最后将最终时刻的隐藏状态传递给解码器。这个隐藏状态包含了整个原始句子的信息,而且可以是双向的,这意味着它能够考虑上下文的信息。
  • 上次讨论了一下,双向循环神经网络(RNN)不能用于语言模型,但它可以应用于翻译任务,特别是在处理encoder(sequence-to-sequence)的情境中。相比之下,decoder的情况需要进行预测,而encoder的情况则不需要。在encoder的情况下,我们基本上可以同时看到整个句子,因此可以正向和反向同时处理。这使得双向RNN经常用于encoder的场景。解码器也使用了一个RNN来输出,其中隐藏状态从上一个时刻传递到下一个时刻,而输出则作为下一个时刻的输入。这个过程不断循环,直到遇到句子的结束标志(End of Sentence,EOS)。
  • 总体来说,RNN在编码器中处理任意长度的原始序列,通过返回最后一个时刻的隐藏状态。对于解码器而言,它不断前进,直到观察到句子的结束标志。这使得在Seq2Seq模型中,RNN能够处理不同长度的输入序列和相应的输出,展示了sequence-to-sequence的能力。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

4、编码器-解码器细节

  • 关于细节,隐藏状态是如何传递的呢?在Seq2Seq这个模型中,具体来说,最后一层的RNN,由于RNN可能包含多个层,会将最后一个时刻的隐藏状态作为输出。这个输出随后与句子的嵌入输入结合在一起,作为解码器的输入。需要注意的是,音编码器在这里不需要输出,只需获取RNN的输入状态即可。最后,这个输出状态既充当解码器的初始状态,又作为上下文一同传入。这就是说,它不仅仅是隐藏状态,还会与输入一同合并,共同进行处理。
  • 值得一提的是,有多种不同的实现方式,Seq2Seq采用了一种特定的实现,具体的代码会更加清晰地展示这一点。因此,我们可以通过查看代码来更详细地了解这些实现细节。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

5、训练

  • 在训练和推理过程中,存在一些细微的差异。在训练过程中,encoder是一样的,每个时刻的输出都是可见的。然而,在low code时,训练时会有所不同。在训练时,由于我们知道目标句子,每个RNN时刻的输出都使用真正的目标句子中的输入。即使在翻译发生错误的情况下,下一个时刻的输入仍然是正确的。这有助于训练,避免了在时域序列预测中预测较长序列时可能遇到的问题。
  • 推理时情况不同。在推理时,由于没有真实的句子可供参考,每个时刻只能使用上一个时刻的输出作为当前时刻的输入,然后不断预测下去。在代码中,将详细介绍这些差异的一些细节。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

6、衡量生成序列的好坏的BLEU

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习

7、总结

  • 最后进行总结:Seq2Seq的目标是从一个句子生成另一个句子,主要用于解决问题,如机器翻译。这是一个广泛的问题类别,我们将在后续进一步讨论。该模型采用了编码器-解码器的架构,并利用RNN这一技术。具体而言,编码器的最后一个时间步的隐藏状态被用来初始化解码器的隐藏状态,并且这个状态也作为输入,以实现信息传递。此外,用BLUE来衡量生成序列的质量在机器翻译和语句子翻译中经常被使用。这个方法可以评估生成的翻译结果与参考翻译的相似程度。

9.现代循环神经网络,深度学习-李沐,rnn,人工智能,深度学习文章来源地址https://www.toymoban.com/news/detail-721380.html

二、D2L代码注意点

三、QA

No.8 束搜索

到了这里,关于9.现代循环神经网络的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深度学习循环神经网络

    循环神经网络(Recurrent Neural Network,RNN)是一种广泛应用于序列数据、自然语言处理等领域的神经网络。与传统的前馈神经网络不同,循环神经网络的输入不仅取决于当前输入,还取决于之前的状态。这使得循环神经网络可以对序列数据进行建模,具有记忆和递归的能力。

    2024年02月13日
    浏览(28)
  • 深度学习笔记之循环神经网络(十)基于循环神经网络模型的简单示例

    本节我们将前面介绍的几种 循环神经网络 —— RNN,LSTM,GRU text{RNN,LSTM,GRU} RNN,LSTM,GRU 关于实例中的一个演示,但重点并不仅在于这些模型,这里以 示例 的形式对 One-hot text{One-hot} One-hot 向量 重新进行认知 。 自然语言 ( Natural Language ) (text{Natural Language}) ( Natural Language ) 是人类

    2024年02月07日
    浏览(37)
  • 【AI】深度学习——循环神经网络

    神经元不仅接收其他神经元的信息,也能接收自身的信息。 循环神经网络(Recurrent Neural Network,RNN)是一类具有短期记忆能力的神经网络,可以更方便地建模长时间间隔的相关性 常用的参数学习可以为BPTT。当输入序列比较长时,其计算时间和空间要求随时间线性增长,可以

    2024年02月07日
    浏览(110)
  • 深度学习实践——循环神经网络实践

    系列实验 深度学习实践——卷积神经网络实践:裂缝识别 深度学习实践——循环神经网络实践 深度学习实践——模型部署优化实践 深度学习实践——模型推理优化练习 代码可见于:https://download.csdn.net/download/weixin_51735061/88131380?spm=1001.2014.3001.5503 **方法:**实验主要通过pyt

    2024年02月15日
    浏览(23)
  • 机器学习&&深度学习——循环神经网络RNN

    👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习深度学习—语言模型和数据集 📚订阅专栏:机器学习深度学习 希望文章对你们有所帮助 在之前介绍了n元语法模型,其中单词xt在时间步t的概率仅取决于前n-1个单词。对于时间步t-(n-1)之前

    2024年02月13日
    浏览(32)
  • 深度学习(2)---循环神经网络(RNN)

     1. 在深度学习中,序列数据(Sequence data)是指具有 前后顺序关联 的数据。常见的时间序列数据、文本数据(单词序列或字符序列)、语音数据等。这种数据不仅十分常见,而且往往具有很高的应用价值,比如我们可以通过过去的天气数据来预测未来的天气状况,通过以往

    2024年02月07日
    浏览(34)
  • 深度学习05-RNN循环神经网络

    循环神经网络(Recurrent Neural Network,RNN)是一种具有循环连接的神经网络结构,被广泛应用于自然语言处理、语音识别、时序数据分析等任务中。相较于传统神经网络,RNN的主要特点在于它可以处理序列数据,能够捕捉到序列中的时序信息。 RNN的基本单元是一个循环单元(

    2024年02月12日
    浏览(33)
  • 深度学习05-CNN循环神经网络

    循环神经网络(Recurrent Neural Network,RNN)是一种具有循环连接的神经网络结构,被广泛应用于自然语言处理、语音识别、时序数据分析等任务中。相较于传统神经网络,RNN的主要特点在于它可以处理序列数据,能够捕捉到序列中的时序信息。 RNN的基本单元是一个循环单元(

    2024年02月11日
    浏览(27)
  • 9.现代循环神经网络

    #pic_center R 1 R_1 R 1 ​ R 2 R^2 R 2 1、门控循环单元GRU 首先,让我们看一下叫做门控循环单元的GRU。GRU(Gated Recurrent Unit)是近年来提出的一种神经网络结构。它在我们接下来要讨论的LSTM(Long Short-Term Memory)之后提出。选择先介绍GRU的原因是因为相对来说,它更为简单。相比之下

    2024年02月08日
    浏览(33)
  • 深度学习实战——循环神经网络(RNN、LSTM、GRU)

           忆如完整项目/代码详见github: https://github.com/yiru1225 (转载标明出处 勿白嫖 star for projects thanks) 目录 系列文章目录 一、实验综述 1.实验工具及内容 2.实验数据 3.实验目标 4.实验步骤 二、循环神经网络综述 1.循环神经网络简介 1.1 循环神经网络背景 1.2 循环神经网络

    2023年04月24日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包