深度学习7这就是Transformer:深度详解(内附思维导图)

在这篇文章中,我们首先会介绍三个部分。1序列到序列模型应用,之后介绍2Transformer结构,最后,我们会提到一些Transformer训练技巧。

7.1 序列到序列模型的应用

序列到序列模型输入和输出都是一个序列,输入与输出序列长度之间的关系有两种情况。第一种情况下,输入跟输出的长度一样;第二种情况下,机器决定输出的长度。序列到序列模型有广泛的应用,通过这些应用可以更好地了解序列到序列模型。下面是一些有关应用的介绍。

7.1.1 语音识别、机器翻译与语音翻译

语音识别

  • 输入: 声音信号
  • 输出: 语音识别的结果,即声音信号对应的文字
  • 特点:
    • 输入声音信号的长度为 T,输出长度 N 不一定与 T 有绝对关系。
    • 机器决定输出的长度,根据声音信号内容决定语音识别结果。

机器翻译

  • 输入: 一种语言的句子
  • 输出: 另一种语言的句子
  • 特点:
    • 输入句子长度为 N,输出句子长度为 N’。
    • N 与 N’ 之间的关系由机器决定,例如输入“机器学习”,输出为“machine learning”。

语音翻译

  • 输入: 一种语言的声音信号
  • 输出: 另一种语言的文字
  • 应用举例: 对机器说英语“Hello”,机器直接输出中文“你好”。

Q: 既然把语音识别系统跟机器翻译系统接起来就能达到语音翻译的效果,那么为什么要做语音翻译?

A: 世界上很多语言是没有文字的,无法做语音识别。因此需要对这些语言做语音翻译,直接把它翻译成文字。

7.1.2 语音合成(TTS)

输入文字、输出声音信号就是语音合成(Text-To-Speech, TTS)。现在还没有真的做端到端(end-to-end)的模型,以闽南语的语音合成为例,其使用的模型还是分成两阶,首先模型会先把白话文的文字转成闽南语的拼音,再把闽南语的拼音转成声音信号。从闽南语的拼音转成声音信号这一段是通过序列到序列模型 echotron 实现的。

7.1.3 聊天机器人

聊天机器人概述

  • 应用: 聊天机器人是一种使用序列到序列模型训练的系统,用于与人类进行自然语言对话。
  • 输入输出: 输入是用户的文本消息,输出是机器人的回复文本。

训练数据

  • 来源: 训练数据通常来源于大量的对话记录,如电视剧、电影的台词等。
  • 示例: 假设对话中一人说“你好”,另一人回复“你好”,训练机器看到输入“你好”时,输出应尽可能接近“你好”。

训练过程

  • 目标: 训练机器学习输入与输出之间的对应关系,使机器能够生成合理的回复。
  • 方法: 通过大量对话数据训练模型,使模型学会根据输入预测合适的输出。

7.1.4 问答任务

序列到序列模型在自然语言处理的领域的应用很广泛,而很多自然语言处理的任务都可以想成是问答(Question Answering, QA)的任务,比如下面是一些例子。

• 翻译。机器读的文章是一个英语句子,问题是这个句子的德文翻译是什么?输出的答案就是德文。

• 自动做摘要:给机器读一篇长的文章,让它把长的文章的重点找出来,即给机器一段文字,问题是这段文字的摘要是什么。

• 情感分析:机器要自动判断一个句子是正面的还是负面的。如果把情感分析看成是问答的问题,问题是给定句子是正面还是负面的,希望机器给出答案

因此各式各样的自然语言处理的问题往往都可以看作是问答的问题,而问答的问题可以用序列到序列模型来解。序列到序列模型的输入是一篇文章和一个问题,输出就是问题的答案。
序列到序列模型就像瑞士刀,瑞士刀可以解决各式各样的问题,砍柴可以用瑞士刀,切菜也可以用瑞士刀,但是它不一定是最好用的。因此针对各种不同的任务定制的模型往往比只用序列到序列模型的模型更好。

7.1.5 句法分析

以**句法分析(syntactic parsing)**为例,给机器一段文字:比如“deep learning is very powerful”,机器要产生一个句法的分析树,即句法树(syntactic tree)。通过句法树告诉我们 deep 加 learning 合起来是一个名词短语, very 加 powerful 合起来是一个形容词短语,形容词短语加 is 以后会变成一个动词短语,动词短语加名词短语合起来是一个句子。

7.1.6 多标签分类

**多标签分类(multi-label classification)**任务也可以用序列到序列模型。多类的分类跟多标签的分类是不一样的。如图 7.5 所示,在做文章分类的时候,同一篇文章可能属于多个类,文章 1 属于类 1 和类 3,文章 3 属于类 3、 9、 17。

多分类问题(multi-class classification)是指分类的类别数大于 2。而多标签分类是指同一个东西可以属于多个类。

多标签分类问题不能直接把它当作一个多分类问题的问题来解。比如把这些文章丢到一个分类器里面,本来分类器只会输出分数最高的答案,如果直接取一个阈值(threshold),只输出分数最高的前三名。这种方法是不可行的,因为每篇文章对应的类别的数量根本不一样。因此需要用序列到序列模型来做,如图所示,输入一篇文章,输出就是类别,机器决定输出类别的数量。这种看起来跟序列到序列模型无关的问题也可以用序列到序列模型解,比如目标检测问题也可以用序列到序列模型来做,读者可参考论文“End-to-End Object Detectionwith Transformers”。

7.2 Transformer 结构

序列到序列模型

  • 结构组成: 一般的序列到序列模型分为编码器和解码器两部分。
  • 功能: 编码器处理输入序列,解码器根据编码器的结果决定输出的序列。

序列到序列模型的起源其实非常的早,在 14 年的 9 月就有一篇序列到序列模型用在翻译的论文:“Sequence to Sequence Learning with Neural Networks”。序列到序列典型的模型就是 Transformer,其有一个编码器架构和一个解码器架构,结构见下图

7.2.1 Transformer 编码器
编码器里面会分成很多的块(block),每一个块都是输入一排向量,输出一排向量。输入一排向量到第一个块,第一个块输出另外一排向量,以此类推,最后一个块会输出最终的向量序列。

Transformer 的编码器的每个块并不是神经网络的一层,每个块的结构如图所示,在每个块里面,输入一排向量后做自注意力,考虑整个序列的信息,输出另外一排向量。接下来这排向量会“丢”到全连接网络网络里面,输出另外一排向量,这一排向量就是块的输出,事实上在原来的 Transformer 里面做的事情是更复杂的

Transformer 里面加入了残差连接(residual connection) 的设计,如图 所示,最左边的向量 b 输入到自注意力层后得到向量 a,输出向量 a 加上其输入向量 b 得到新的输出。得到残差的结果以后,再做层归一化(layer normalization)。层归一化比信念网络更简单,不需要考虑批量的信息,而批量归一化需要考虑批量的信息。层归一化输入一个向量,输出另外一个向量。层归一化会计算输入向量的平均值和标准差。

残残差连接后进行层归一化,对每个特征维度进行归一化处理,以稳定训练过程。

公式如下:
x i ′ = x i − m σ x_i^{\prime}=\frac{x_i-m}\sigma xi=σxim

得到层归一化的输出以后,该输出才是全连接网络的输入。输入到全连接网络,还有一个残差连接,把全连接网络的输入跟它的输出加起来得到新的输出。接着把残差的结果再做一次层归一化得到的输出才是 Transformer 编码器里面一个块的输出。

图 给出了 Transformer 的编码器结构,其中 表示重复 N 次。首先,在输入的地方需要加上位置编码。如果只用自注意力,没有未知的信息,所以需要加上位置信息。多头自注意力就是自注意力的块。经过自注意力后,还要加上残差连接和层归一化。接下来还要经过全连接的前馈神经网络,接着再做一次残差连接和层归一化,这才是一个块的输出,这个块会重复 N 次。

Q: 为什么 Transformer 中使用层归一化,而不使用批量归一化?
A: 论文“PowerNorm: Rethinking Batch Normalization in Transformers”解释了在Transformers 里面批量归一化不如层归一化的原因,并提出能量归一化(power normalization)。能量归一化跟层归一化性能差不多,甚至好一点

7.2.2 Transformer 解码器

解码器比较常见的称为自回归的(autoregressive)解码器。

自回归解码器

要让解码器产生输出,首先要先给它一个代表开始的特殊符号 ,即 Begin Of Sequence,这是一个特殊的词元(token)。在词表(vocabulary)里面,在本来解码器可能产生的文字里面多加一个特殊的符号 。在机器学习里面,假设要处理自然语言处理的问题,每一个词元都可以用一个独热的向量来表示。独热向量其中一维是 1,其他都是 0,所以 也是用独热向量来表示,其中一维是 1,其他是 0。接下来解码器会“吐”出一个向量,该向量的长度跟词表的大小是一样的。在产生这个向量之前,跟做分类一样,通常会先进行一个 softmax 操作。这个向量里面的分数是一个分布,该向量里面的值全部加起来,总和是 1。这个向量会给每一个中文字一个分,分数最高的中文字就是最终的输出。

Q: 解码器输出的单位是什么?

A: 假设做的是中文的语音识别,解码器输出的是中文。词表的大小可能就是中文的方块字的数量。常用的中文的方块字大概两三千个,一般人可能认得的四、五千个,更多都是罕见字。比如我们觉得解码器能够输出常见的 3000 个方块字就好了,就把它列在词表中。不同的语言,输出的单位不见不会不一样,这取决于对语言的理解。比如英语,选择输出英语的字母。但字母作为单位可能太小了,有人可能会选择输出英语的词汇,英语的词汇是用空白作为间隔的。但如果都用词汇当作输出又太多了,有一些方法可以把英语的字首、字根切出来,拿字首、字根当作单位。中文通常用中文的方块字来当作单位,这个向量的长度就跟机器可以输出的方块字的数量是一样多的。每一个中文的字都会对应到一个数值。

工作原理

  • 逐步生成: 自回归解码器逐个元素地生成输出序列,每次生成一个元素时都会考虑之前生成的所有元素。
  • 输入依赖: 在生成当前元素时,解码器会将之前生成的元素作为额外的输入,以确保序列的连贯性和上下文相关性。

如果解码器有语音识别的错误,它把机器的“器”识别错成天气的“气”,接下来解码器会根据错误的识别结果产生它想要产生的期待是正确的输出,这会造成误差传播(error propagation)的问题,一步错导致步步错,接下来可能无法再产生正确的词汇。

Transformer 里面的解码器内部的结构如图所示。类似于编码器,解码器也有多头注意力、残差连接和层归一化、前馈神经网络。解码器最后再做一个 softmax,使其输出变成一个概率。此外,解码器使用了掩蔽自注意力(masked self-attention),掩蔽自注意力可以通过一个掩码(mask) 来阻止每个位置选择其后面的输入信息。如图所示,原来的自注意力输入一排向量,输出另外一排向量,这一排中每个向量都要看过完整的输入以后才做决定。根据 a1 到 a4 所有的信息去输出 b1。掩蔽自注意力的不同点是不能再看右边的部分,如图 7.19 所示,产生 b1 的时候,只能考虑 a1 的信息,不能再考虑 a2、 a3、 a4。产生 b2 的时候,只能考虑 a1、 a2 的信息,不能再考虑 a3、 a4 的信息。产生 b3 的时候,不能考虑 a4 的信息。产生 b4 的时候,可以用整个输入序列的信息。一般自注意力产生 b2 的过程如图 7.20 所示。掩蔽自注意力的计算过程如图 7.21 所示,我们只拿 q2 和 k1、 k2 计算注意力,最后只计算 v1 跟 v2 的加权和。不管 a2 右边的地方,只考虑 a1、 a2、 q1、 q2、 k1 以及 k2。输出 b2 的时候,只考虑了 a1 和 a2,没有考虑到 a3和 a4

Q: 为什么需要在注意力中加掩码?

A: 一开始解码器的输出是一个一个产生的,所以是先有 a1 再有 a2,再有 a3,再有a4。这跟原来的自注意力不一样,原来的自注意力 a1 跟 a4 是一次整个输进去模型里面的。编码器是一次把 a1 跟 a4 都整个都读进去。但是对解码器而言,先有 a1 才有a2,才有 a3 才有 a4。所以实际上当我们有 a2,要计算 b2 的时候,没有 a3 跟 a4 的,所以无法考虑 a3 a4。解码器的输出是一个一个产生的,所以只能考虑其左边的东西,没有办法考虑其右边的东西。

掩码注意力计算过程:

但这还有一个非常关键的问题:实际应用中输入跟输出长度的关系是非常复杂的,我们无法从输入序列的长度知道输出序列的长度,因此解码器必须决定输出的序列的长度。给定一个输入序列,机器可以自己学到输出序列的长度。但在目前的解码器运作的机制里面,机器不知道什么时候应该停下来,如图所示,机器产生完“习”以后,还可以继续重复一模一样的过程,把“习”当做输入,解码器可能就会输出“惯”,接下来就一直持续下去,永远都不会停下来。

如图所示,要让解码器停止运作,需要特别准备一个特别的符号 。产生完“习”以后,再把“习”当作解码器的输入以后,解码器就要能够输出 ,解码器看到编码器输出的嵌入、 、“机”、“器”、“学”、“习”以后,其产生出来的向量里面 的概率必须是最大的,于是输出 ,整个解码器产生序列的过程就结束了。

非自回归解码器

自回归的模型是先输入 ,输出 w1,再把 w1 当做输入,再输出 w2,直到输出 为止。假设产生是中文的句子,非自回归不是一次产生一个字,它是一次把整个句子都产生出来。非自回归的解码器可能“吃”的是一整排的 词元,一次产生产生一排词元。比如输入 4 个 的词元到非自回归的解码器,它就产生 4 个中文的字。**因为输出的长度是未知的,所以当做非自回归解码器输入的 的数量也是未知的,因此有如下两个做法。**** **

  • 用分类器来解决这个问题。用分类器“吃”编码器的输入,输出是一个数字,该数字代表解码器应该要输出的长度。比如分类器输出 4,非自回归的解码器就会“吃”4 个 的词元,产生 4 个中文的字。
  • 给编码器一堆 的词元。假设输出的句子的长度有上限,绝对不会超过 300 个字。给编码器 300 个 ,就会输出 300 个字,输出 右边的的输出就当它没有输出。

非自回归的解码器有很多优点。第一个优点是平行化。 所以非自回归的解码器会跑得比自回归的解码器要快。非自回归解码器的想法是在有 Transformer 以后,有这种自注意力的解码器以后才有的。以前如果用长短期记忆网络(Long Short-Term Memory Network, LSTM)或 RNN,给它一排 ,其无法同时产生全部的输出,其输出是一个一个产生的 。

另外一个优点是非自回归的解码器比较能够控制它输出的长度。在语音合成里面,非自回归解码器算是非常常用的。非自回归的解码器可以控制输出的长度,可以用一个分类器决定非自回归的解码器应该输出的长度。在做语音合成的时候,如果想要让系统讲快一点,就把分类器的输出除以 2,系统讲话速度就变 2 倍快。如果想要讲话放慢速度,就把分类器输出的长度乘 2 倍,解码器说话的速度就变 2 倍慢。因此非自回归的解码器可以控制解码器输出的长度,做出种种的变化。
平行化是非自回归解码器最大的优势,但非自回归的解码器的性能(performance)往往都不如自回归的解码器。所以很多研究试图让非自回归的解码器的性能越来越好,去逼近自回归的解码器。要让非自回归的解码器跟自回归的解码器性能一样好,必须要使用非常多的技巧。

7.2.3 编码器-解码器注意力

编码器-解码器注意力是连接编码器跟解码器之间的桥梁。如图所示,解码器中编码器-解码器注意力的键(k)和值(v)来自编码器的输出,查询(q)来自解码器中前一个层的输出。

编码器输入一排向量,输出一排向量 a1、 a2、 a3。接下来解码器会先“吃”< BOS>,经过掩蔽自注意力得到一个向量。接下来把这个向量乘上一个矩阵,做一个变换(transform),得到一个查询 q, a1、 a2、a3 也都产生键: k1、 k2、 k3。把 q 跟 k1、 k2、 k3 去计算注意力的分数,得到 α1、 α2、 α3,接下来做 softmax,得到 α′ 1、 α′ 2、 α′ 3。接下来通过式 (7.2) 可得加权和 v。

v = α 1 ′ × v 1 + α 2 ′ × v 2 + α 3 ′ × v 3 \boldsymbol{v}=\boldsymbol{\alpha}_1^{\prime}\times\boldsymbol{v}^1+\boldsymbol{\alpha}_2^{\prime}\times\boldsymbol{v}^2+\boldsymbol{\alpha}_3^{\prime}\times\boldsymbol{v}^3 v=α1×v1+α2×v2+α3×v3

v 接下来会“丢”给全连接网络,这个步骤 q 来自于解码器, k 跟 v 来自于编码器,该步骤就叫做编码器-解码器注意力,所以解码器就是凭借着产生一个 q,去编码器这边抽取信息出来,当做接下来的解码器的全连接网络的输入。

如图 所示,假设产生“机”,输入 <BOS 、“机”,产生一个向量。这个向量一样乘上一个线性变换得到一个查询 q′。 q′ 会跟 k1、 k2、 k3 计算注意力的分数。接着用注意力分数跟 v1、 v2、 v3 做加权和,加起来得到 v′,最后交给全连接网络处理。

编码器和解码器都有很多层,但在原始论文中解码器是拿编码器最后一层的输出。但不一定要这样,读者可参考论文“Rethinking and Improving Natural Language Generation withLayer-Wise Multi-View Decoding”。

7.3 Transformer 的训练过程

Transformer 应该要学会听到“机器学习”的声音信号,它的输出就是“机器学习”这四个中文字。把 < BOS> 丢给编码器的时候,其第一个输出应该要跟“机”越接近越好。而解码器的输出是一个概率的分布,这个概率分布跟“机”的独热向量越接近越好。因此我们会去计算标准答案(Ground Truth) 跟分布之间的交叉熵,希望该交叉熵的值越小越好。每一次解码器在产生一个中文字的时候做了一次类似分类的问题。假设中文字有四千个,就是做有四千个类别的分类的问题。

训练的时候,解码器输出的不是只有“机器学习”这四个中文字,还要输出 < EOS>。所以解码器的最终第五个位置输出的向量跟 < EOS> 的独热向量的交叉熵越小越好。我们把标准答案给解码器,希望解码器的输出跟正确答案越接近越好。在训练的时候,告诉解码器在已经有< BOS>、“机”的情况下,要输出“器”,有 < BOS> 、“机”、“器”的情况下输出“学”,有 < BOS>、“机”、“器”、“学”的情况下输出“习”,有 < BOS> 、“机”、“器”、“学”、“习”的情况下,输出 < EOS>。在解码器训练的时候,在输入的时候给它正确的答案,这称为教师强制(teacher forcing)。

7.4 序列到序列模型训练常用技巧

复制机制(Copy Mechanism)
  • 目的: 使模型能够从输入中复制信息到输出,特别是在处理未见过的词汇或特定领域术语时。
  • 应用: 对话系统、文本摘要等,其中输出可能包含直接来自输入的实体或短语。

对于许多任务而言,解码器并不需要完全创造输出,而是可以从输入的信息中复制一些内容。例如,在聊天机器人中,当用户说“你好,我是库洛洛”时,机器人可以简单地回复“库洛洛你好,很高兴认识你”,而不是试图创造一个新的名字。这是因为,对于机器人来说,“库洛洛”很可能是一个非常奇怪的名字,而且在训练数据中可能从未出现过,因此很难正确地产生输出。

在这种情况下,复制机制可以帮助机器人更容易地学习如何回答问题。具体来说,机器人只需要学会从输入中复制一些词汇作为输出即可。这种方法不仅能够提高机器人的准确性,还可以减少训练所需的数据量。例如,在做摘要任务时,需要大量的文章和摘要来训练模型。如果每个文章都需要手动编写摘要,那么这将是极其耗时的任务。然而,通过从原始文章中复制信息,可以大大简化这个过程。

引导注意力(Guided Attention)
  • 目的: 强制模型以特定方式分配注意力,例如在语音合成或语音识别中从左到右的注意力模式。
  • 应用: 语音处理任务,确保模型按照人类阅读或说话的自然顺序处理信息。

以语音合成为例,当模型训练出来的结果出现问题时,可能是由于训练数据中缺少某些特定的短句造成的。为了避免这种情况的发生,我们可以使用引导注意力的方法,即让机器在做注意力的时候遵循一个固定的方式。例如,在语音合成中,注意力应该从左向右移动,这样可以保证机器能够正确地合成声音。为了实现这一目标,作者提出了一种新的训练方法,即在训练过程中强制机器学习到正确的注意力方式。这种方法可以帮助机器更好地理解和处理各种不同的任务,从而提高其性能和准确性。

束搜索(Beam Search)
  • 目的: 在解码过程中探索多个可能的输出序列,以找到最优解,而不是仅选择每个步骤的单个最佳选择。
  • 应用: 机器翻译、文本生成等,其中需要平衡探索和利用以找到全局最优解。

每次找分数最高的词元来当做输出的方法称为贪心搜索(greedy search) ,其也被称为贪心解码(greedy decoding) 。 然而,贪心搜索并不一定能够得到最优解,因为在每个转折点的选择太多的情况下,可能会导致最后的结果较差。因此,穷举搜索(exhaustive search)成为了一种常见的解决方法,但由于每个地方的分叉都可能是可能的路径,因此很难穷举所有可能的路径。

束搜索(beam search) ,束搜索经常也称为集束搜索或柱搜索。束搜索是用比较有效的方法找一个近似解,在某些情况下效果不好。比如论文“The Curious Case Of Neural Text Degeneration”。这个任务要做的事情是完成句子(sentence completion),也就是机器先读一段句子,接下来它要把这个句子的后半段完成,如果用束搜索,会发现说机器不断讲重复的话。如果不用束搜索,加一些随机性,虽然结果不一定完全好,但是看起来至少是比较正常的句子。有时候对解码器来说,没有找出分数最高的路,反而结果是比较好的,这个就是要看任务本身的特性。假设任务的答案非常明确,比如语音识别,说一句话,识别的结果就只有一个可能。对这种任务而言,通常束搜索就会比较有帮助。但如果任务需要机器发挥一点创造力,束搜索比较没有帮助。

加入噪声(Adding Noise)
  • 目的: 提高模型的鲁棒性,通过在训练过程中引入噪声,使模型更好地泛化到未见过的数据。
  • 应用: 语音合成等,其中模型在测试时加入噪声可以改善生成声音的自然度。

训练阶段,加入噪声可以让机器看到更多的可能性,从而提高模型的鲁棒性和适应性。而在测试阶段,加入噪声可以使得合出来的声音更加自然和真实,因为这样可以增加一些随机性,使模型产生出更好的结果。然而,在正常解码方法下产生的声音听起来并不像人声,因此需要加入一些随机性才能产生更好的效果。此外,对于语音合成或句子完成任务来说,解码器找到的最佳结果可能并不是人类认为的最佳结果,相反,加入一些随机性的结果可能会更好。

使用强化学习训练(Training with Reinforcement Learning)
  • 目的: 优化不可微分的目标函数,如BLEU分数,通过将训练视为强化学习问题。
  • 应用: 机器翻译等,其中传统的交叉熵损失可能不直接对应于评估指标。

我们评估的标准用的是 BLEU(BiLingual Evaluation Understudy)分数。虽然 BLEU 最先是用于评估机器翻译的结果,但现在它已经被广泛用于评价许多应用输出序列的质量。解码器先产生一个完整的句子,再去跟正确的答案一整句做比较,拿两个句子之间做比较算出 BLEU 分数。但训练的时候,每一个词汇是分开考虑的,最小化的是交叉熵,最小化交叉熵不一定可以最大化 BLEU 分数。但在做验证的时候,并不是挑交叉熵最低的模型,而是挑 BLEU 分数最高的模型。一种可能的想法:训练的损失设置成 BLEU分数乘一个负号,最小化损失等价于最大化 BLEU 分数。但 BLEU 分数很复杂,如果要计算两个句子之间的 BLEU 分数,损失根本无法做微分。我们之所以采用交叉熵,而且是每一个中文的字分开来算,就是因为这样才有办法处理。遇到优化无法解决的问题,可以用强化学习训练。具体来讲,遇到无法优化的损失函数,把损失函数当成强化学习的奖励,把解码器当成智能体,可参考论文“Sequence Level Training with Recurrent Neural Networks”。

计划采样(Scheduled Sampling)
  • 目的: 解决训练和测试时模型输入的不一致性,即曝光偏差问题(exposure bias)。
  • 应用: 序列生成任务,通过在训练时偶尔使用模型生成的输出来模拟测试时的条件。

曝光偏差是指在测试时,解码器看到的结果与训练时不同,导致解码器无法正确处理错误信息的问题。为了缓解这个问题,提出了一种新的训练方式——计划采样****(scheduled sampling) 。计划采样的思路是在训练过程中,向解码器输入少量错误的信息,让解码器能够更好地适应错误情况下的数据处理。然而,计划采样也会对模型的并行能力造成一定的损害,因此需要采用其他方式进行优化。

全文思维导图

  • 16
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值