精华内容
下载资源
问答
  • Decoder和Encoder的结构差不多,但是多了一个attention的sub-layer,这里先明确一下decoder的输入输出和解码过程: 输出:对应i位置的输出词的概率分布 输入:encoder的输出 & 对应i-1位置decoder的输出。所以...

    Decoder和Encoder的结构差不多,但是多了一个attention的sub-layer,这里先明确一下decoder的输入输出和解码过程:

    输出:对应i位置的输出词的概率分布
    输入:encoder的输出 & 对应i-1位置decoder的输出。所以中间的attention不是self-attention,它的K,V来自encoder,Q来自上一位置decoder的输出
    解码:这里要注意一下,训练和预测是不一样的。在训练时,解码是一次全部decode出来,用上一步的ground truth来预测(mask矩阵也会改动,让解码时看不到未来的token);而预测时,因为没有ground truth了,需要一个个预测。
    文末附上我总结的BERT面试点&相关模型汇总,还有NLP组队学习群的加群方式~明确了解码过程之后最上面的图就很好懂了,这里主要的不同就是新加的另外要说一下新加的attention多加了一个mask,因为训练时的output都是ground truth,这样可以确保预测第i个位置时不会接触到未来的信息。

    加了mask的attention原理如图(另附multi-head attention):

    5.2 第二个 Multi-Head Attention
    Decoder block 第二个 Multi-Head Attention 变化不大, 主要的区别在于其中 Self-Attention 的 K, V 矩阵不是使用 上一个 Decoder block 的输出计算的,而是使用 Encoder 的编码信息矩阵 C 计算的。

    根据 Encoder 的输出 C 计算得到 K, V,根据上一个 Decoder block 的输出 Z 计算 Q (如果是第一个 Decoder block 则使用输入矩阵 X 进行计算),后续的计算方法与之前描述的一致。

    这样做的好处是在 Decoder 的时候,每一位单词都可以利用到 Encoder 所有单词的信息 (这些信息无需 Mask)。

    作者:NLP与人工智能
    链接:https://www.jianshu.com/p/9b87b945151e
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    展开全文
  • 目录1 引言2 详解3 优缺点3.1 优点3.2 缺点4 应用领域5 面经5.1 第一部分...一个基于Transformer的可训练的神经网络可以通过堆叠Transformer的形式进行搭建,作者的实验是通过搭建编码器和解码器各6层,总共12层的Enco

    1 引言

    在这里插入图片描述

    Transformer中抛弃了传统的CNN和RNN,整个网络结构完全是由Attention机制组成。更准确地讲,Transformer主要由多头self-Attenion和Feed Forward Neural Network组成。一个基于Transformer的可训练的神经网络可以通过堆叠Transformer的形式进行搭建,作者的实验是通过搭建编码器和解码器各6层,总共12层的Encoder-Decoder,并在机器翻译中取得了BLEU值得新高。是一个典型的 encoder-decoder 模型。
    作者采用Attention机制的原因是考虑到RNN(或者LSTM,GRU等)的计算限制为是顺序的,也就是说RNN相关算法只能从左向右依次计算或者从右向左依次计算,这种机制带来了两个问题:

    1. 时间片t 的计算依赖t-1 时刻的计算结果,这样限制了模型的并行能力;
    2. 顺序计算的过程中信息会丢失,尽管LSTM等门机制的结构一定程度上缓解了长期依赖的问题,但是对于特别长期的依赖现象,LSTM依旧无能为力。

    Transformer的提出解决了上面两个问题,首先它使用了Attention机制,将序列中的任意两个位置之间的距离是缩小为一个常量;其次它不是类似RNN的顺序结构,因此具有更好的并行性,符合现有的GPU框架。

    2 详解

    参考详解Transformer (Attention Is All You Need)

    3 优缺点

    3.1 优点

    (1)虽然Transformer最终也没有逃脱传统学习的套路,Transformer也只是一个全连接(或者是一维卷积)加Attention的结合体。但是其设计已经足够有创新,因为其抛弃了在NLP中最根本的RNN或者CNN并且取得了非常不错的效果,算法的设计非常精彩,值得每个深度学习的相关人员仔细研究和品位。
    (2)Transformer的设计最大的带来性能提升的关键是将任意两个单词的距离是1,这对解决NLP中棘手的长期依赖问题是非常有效的。
    (3)Transformer不仅仅可以应用在NLP的机器翻译领域,甚至可以不局限于NLP领域,是非常有科研潜力的一个方向。(4)算法的并行性非常好,符合目前的硬件(主要指GPU)环境。

    3.2 缺点

    (1)粗暴的抛弃RNN和CNN虽然非常炫技,但是它也使模型丧失了捕捉局部特征的能力,RNN + CNN + Transformer的结合可能会带来更好的效果。
    (2)Transformer失去的位置信息其实在NLP中非常重要,而论文中在特征向量中加入Position Embedding也只是一个权宜之计,并没有改变Transformer结构上的固有缺陷。
    (3)有些rnn轻易可以解决的问题transformer没做到,比如复制string,或者推理时碰到的sequence长度比训练时更长(因为碰到了没见过的position embedding)

    4 应用领域

    • 自然语言处理NLP
    • 图像识别

    An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

    • 图像合成

    Taming Transformers for High-Resolution Image Synthesis

    • 多目标追踪

    TransTrack: Multiple-Object Tracking with Transformer

    • 音乐生成

    Compound Word Transformer: Learning to Compose Full-Song Music over Dynamic Directed Hypergraphs

    • 舞蹈生成

    Dance Revolution: Long-Term Dance Generation with Music via Curriculum Learning

    • 3D目标检测

    Self-Attention Based Context-Aware 3D Object Detection

    • 点云处理

    PCT: Point Cloud Transformer

    • 时序预测

    Temporal Fusion Transformers for Interpretable Multi-horizon Time Series Forecasting

    • 视觉-语言建模

    VinVL: Making Visual Representations Matter in Vision-Language Models

    • 车道形状预测

    End-to-end Lane Shape Prediction with Transformers

    • 端到端目标检测

    Deformable DETR: Deformable Transformers for End-to-End Object Detection

    5 面经

    5.1 第一部分

    参考:https://zhuanlan.zhihu.com/p/363466672
    1. Transformer为何使用多头注意力机制?(为什么不使用一个头)

    答:多头可以使参数矩阵形成多个子空间,矩阵整体的size不变,只是改变了每个head对应的维度大小,这样做使矩阵对多方面信息进行学习,但是计算量和单个head差不多。

    2. Transformer为什么Q和K使用不同的权重矩阵生成,为何不能使用同一个值进行自身的点乘?

    答:请求和键值初始为不同的权重是为了解决可能输入句长与输出句长不一致的问题。并且假如QK维度一致,如果不用Q,直接拿K和K点乘的话,你会发现attention score 矩阵是一个对称矩阵。因为是同样一个矩阵,都投影到了同样一个空间,所以泛化能力很差。

    3. Transformer计算attention的时候为何选择点乘而不是加法?两者计算复杂度和效果上有什么区别?

    答:K和Q的点乘是为了得到一个attention score 矩阵,用来对V进行提纯。K和Q使用了不同的W_k, W_Q来计算,可以理解为是在不同空间上的投影。正因为 有了这种不同空间的投影,增加了表达能力,这样计算得到的attention score矩阵的泛化能力更高。

    4. 为什么在进行softmax之前需要对attention进行scaled(为什么除以dk的平方根),并使用公式推导进行讲解

    答:假设 Q 和 K 的均值为0,方差为1。它们的矩阵乘积将有均值为0,方差为dk,因此使用dk的平方根被用于缩放,因为,Q 和 K 的矩阵乘积的均值本应该为 0,方差本应该为1,这样可以获得更平缓的softmax。当维度很大时,点积结果会很大,会导致softmax的梯度很小。为了减轻这个影响,对点积进行缩放。

    5. 在计算attention score的时候如何对padding做mask操作?

    答:对需要mask的位置设为负无穷,再对attention score进行相加

    6. 为什么在进行多头注意力的时候需要对每个head进行降维?

    答:将原有的高维空间转化为多个低维空间并再最后进行拼接,形成同样维度的输出,借此丰富特性信息,降低了计算量

    7. 大概讲一下Transformer的Encoder模块?

    答:输入嵌入-加上位置编码-多个编码器层(每个编码器层包含全连接层,多头注意力层和点式前馈网络层(包含激活函数层))

    8. 为何在获取输入词向量之后需要对矩阵乘以embedding size的开方?

    embedding matrix的初始化方式是xavier init,这种方式的方差是1/embedding size,因此乘以embedding size的开方使得embedding matrix的方差是1,在这个scale下可能更有利于embedding matrix的收敛。

    9. 简单介绍一下Transformer的位置编码?有什么意义和优缺点?

    答:因为self-attention是位置无关的,无论句子的顺序是什么样的,通过self-attention计算的token的hidden embedding都是一样的,这显然不符合人类的思维。因此要有一个办法能够在模型中表达出一个token的位置信息,transformer使用了固定的positional encoding来表示token在句子中的绝对位置信息。

    10. 你还了解哪些关于位置编码的技术,各自的优缺点是什么?

    答:相对位置编码(RPE)1.在计算attention score和weighted value时各加入一个可训练的表示相对位置的参数。2.在生成多头注意力时,把对key来说将绝对位置转换为相对query的位置3.复数域函数,已知一个词在某个位置的词向量表示,可以计算出它在任何位置的词向量表示。前两个方法是词向量+位置编码,属于亡羊补牢,复数域是生成词向量的时候即生成对应的位置信息。

    11. 简单讲一下Transformer中的残差结构以及意义。

    答:encoder和decoder的self-attention层和ffn层都有残差连接。反向传播的时候不会造成梯度消失。

    12. 为什么transformer块使用LayerNorm而不是BatchNorm?LayerNorm 在Transformer的位置是哪里?

    答:多头注意力层和激活函数层之间。CV使用BN是认为channel维度的信息对cv方面有重要意义,如果对channel维度也归一化会造成不同通道信息一定的损失。而同理nlp领域认为句子长度不一致,并且各个batch的信息没什么关系,因此只考虑句子内信息的归一化,也就是LN。

    13. 简答讲一下BatchNorm技术,以及它的优缺点。

    答:批归一化是对每一批的数据在进入激活函数前进行归一化,可以提高收敛速度,防止过拟合,防止梯度消失,增加网络对数据的敏感度。

    14. 简单描述一下Transformer中的前馈神经网络?使用了什么激活函数?相关优缺点?

    答:输入嵌入-加上位置编码-多个编码器层(每个编码器层包含全连接层,多头注意力层和点式前馈网络层(包含激活函数层))-多个解码器层(每个编码器层包含全连接层,多头注意力层和点式前馈网络层)-全连接层,使用了relu激活函数

    15. Encoder端和Decoder端是如何进行交互的?

    答:通过转置encoder_ouput的seq_len维与depth维,进行矩阵两次乘法,即qkTv输出即可得到target_len维度的输出

    16. Decoder阶段的多头自注意力和encoder的多头自注意力有什么区别?

    答:Decoder有两层mha,encoder有一层mha,Decoder的第二层mha是为了转化输入与输出句长,Decoder的请求q与键k和数值v的倒数第二个维度可以不一样,但是encoder的qkv维度一样。

    17. Transformer的并行化提现在哪个地方?

    答:Transformer的并行化主要体现在self-attention模块,在Encoder端Transformer可以并行处理整个序列,并得到整个输入序列经过Encoder端的输出,但是rnn只能从前到后的执行

    18. Decoder端可以做并行化吗?

    训练的时候可以,但是交互的时候不可以

    19. 简单描述一下wordpiece model 和 byte pair encoding,有实际应用过吗?

    答“传统词表示方法无法很好的处理未知或罕见的词汇(OOV问题)
    传统词tokenization方法不利于模型学习词缀之间的关系”
    BPE(字节对编码)或二元编码是一种简单的数据压缩形式,其中最常见的一对连续字节数据被替换为该数据中不存在的字节。后期使用时需要一个替换表来重建原始数据。
    优点:可以有效地平衡词汇表大小和步数(编码句子所需的token次数)。
    缺点:基于贪婪和确定的符号替换,不能提供带概率的多个分片结果。

    20. Transformer训练的时候学习率是如何设定的?Dropout是如何设定的,位置在哪里?Dropout 在测试的需要有什么需要注意的吗?

    LN是为了解决梯度消失的问题,dropout是为了解决过拟合的问题。在embedding后面加LN有利于embedding matrix的收敛。

    21. bert的mask为何不学习transformer在attention处进行屏蔽score的技巧?

    答:BERT和transformer的目标不一致,bert是语言的预训练模型,需要充分考虑上下文的关系,而transformer主要考虑句子中第i个元素与前i-1个元素的关系。

    5.2 第二部分

    参考:https://cloud.tencent.com/developer/article/1597910
    1. Transformer 的结构是什么样的?

    答:Transformer 本身还是一个典型的 encoder-decoder 模型,如果从模型层面来看,Transformer 实际上就像一个 seq2seq with attention 的模型,下面大概说明一下 Transformer 的结构以及各个模块的组成。
    (1)Encoder 端 & Decoder 端总览

    • Encoder 端由 N(原论文中「N=6」)个相同的大模块堆叠而成,其中每个大模块又由「两个子模块」构成,这两个子模块分别为多头 self-attention 模块,以及一个前馈神经网络模块;
    • Decoder 端同样由 N(原论文中「N=6」)个相同的大模块堆叠而成,其中每个大模块则由「三个子模块」构成,这三个子模块分别为多头 self-attention 模块,「多头 Encoder-Decoder attention 交互模块」,以及一个前馈神经网络模块
      (2)Encoder 端各个子模块之多头 self-attention 模块
      在介绍 self-attention 模块之前,先介绍 self-attention 模块,图示如下:
      在这里插入图片描述

    上述 attention 可以被描述为「将 query 和 key-value 键值对的一组集合映射到输出」,其中 query,keys,values 和输出都是向量,其中 query 和 keys 的维度均为,values 的维度为(论文中),输出被计算为 values 的加权和,其中分配给每个 value 的权重由 query 与对应 key 的相似性函数计算得来。这种 attention 的形式被称为“Scaled Dot-Product Attention”。
    而多头 self-attention 模块,则是将通过参数矩阵映射后(给分别接一个全连接层),然后再做 self-attention,将这个过程重复(原论文中)次,最后再将所有的结果拼接起来,再送入一个全连接层即可,图示如下:
    在这里插入图片描述

    (3)Encoder 端各个子模块之前馈神经网络模块

    前馈神经网络模块(即图示中的 Feed Forward)由两个线性变换组成,中间有一个 ReLU 激活函数,对应到公式的形式为:
    论文中前馈神经网络模块输入和输出的维度均为,其内层的维度.
    (4)Decoder 端各个子模块之多头 self-attention 模块
    Decoder 端多头 self-attention 模块与 Encoder 端的一致,但是「需要注意的是 Decoder 端的多头 self-attention 需要做 mask,因为它在预测时,是“看不到未来的序列的”,所以要将当前预测的单词(token)及其之后的单词(token)全部 mask 掉。
    (5)Decoder 端各个子模块之多头 Encoder-Decoder attention 交互模块
    多头 Encoder-Decoder attention 交互模块的形式与多头 self-attention 模块一致,唯一不同的是其矩阵的来源,其矩阵来源于下面子模块的输出(对应到图中即为 masked 多头 self-attention 模块经过 Add & Norm 后的输出),而矩阵则来源于整个 Encoder 端的输出,仔细想想其实可以发现,这里的交互模块就跟 seq2seq with attention 中的机制一样,目的就在于让 Decoder 端的单词(token)给予 Encoder 端对应的单词(token)“更多的关注(attention weight)”
    (6)Decoder 端各个子模块之多头前馈神经网络模块
    该部分与 Encoder 端的一致
    (7)Add & Norm 模块
    Add & Norm 模块接在 Encoder 端和 Decoder 端每个子模块的后面,其中 Add 表示残差连接,Norm 表示 LayerNorm,残差连接来源于论文Deep Residual Learning for Image Recognition[1],LayerNorm 来源于论文Layer Normalization[2],因此 Encoder 端和 Decoder 端每个子模块实际的输出为:LayerNorm ,其中Sublayer 为子模块的输出。
    (8)Positional Encoding
    Positional Encoding 添加到 Encoder 端和 Decoder 端最底部的输入 embedding。Positional Encoding 具有与 embedding 相同的维度,因此可以对两者进行求和。需要注意的是,Transformer 中的 Positional Encoding 不是通过网络学习得来的,而是直接通过公式计算而来的,论文中也实验了利用网络学习 Positional Encoding,发现结果与上述基本一致,但是论文中选择了正弦和余弦函数版本,「因为三角公式不受序列长度的限制,也就是可以对 比所遇到序列的更长的序列 进行表示。

    2. Transformer Decoder 端的输入具体是什么?

    答:见上述 Encoder 端 & Decoder 端总览中,对 Decoder 端的输入有详细的分析

    3. self-attention是什么?

    答:self-attention,也叫 「intra-attention」,是一种通过自身和自身相关联的 attention 机制,从而得到一个更好的 representation 来表达自身,self-attention 可以看成一般 attention 的一种特殊情况。在 self-attention 中,,序列中的每个单词(token)和该序列中其余单词(token)进行 attention 计算。self-attention 的特点在于「无视词(token)之间的距离直接计算依赖关系,从而能够学习到序列的内部结构」,实现起来也比较简单,值得注意的是,在后续一些论文中,self-attention 可以当成一个层和 RNN,CNN 等配合使用,并且成功应用到其他 NLP 任务。

    4. 关于 self-attention 的计算过程?

    答:问题 1 中有详细的解答

    5. 关于 self-attention 为什么它能发挥如此大的作用

    答:在上述 self-attention 的介绍中实际上也有所提及,self-attention 是一种自身和自身相关联的 attention 机制,这样能够得到一个更好的 representation 来表达自身,在多数情况下,自然会对下游任务有一定的促进作用,但是 Transformer 效果显著及其强大的特征抽取能力是否完全归功于其 self-attention 模块,还是存在一定争议的,参见论文:How Much Attention Do You Need?A Granular Analysis of Neural Machine Translation Architectures[3],如下例子可以大概探知 self-attention 的效果:
    在这里插入图片描述

    图 1 可视化 self-attention 实例

    在这里插入图片描述

    图 2 可视化 self-attention 实例

    从两张图(图 1、图 2)可以看出,self-attention 可以捕获同一个句子中单词之间的一些句法特征(比如图 1 展示的有一定距离的短语结构)或者语义特征(比如图 1 展示的 its 的指代对象 Law)。
    很明显,引入 Self Attention 后会更容易捕获句子中长距离的相互依赖的特征,因为如果是 RNN 或者 LSTM,需要依次序序列计算,对于远距离的相互依赖的特征,要经过若干时间步步骤的信息累积才能将两者联系起来,而距离越远,有效捕获的可能性越小。
    但是 Self Attention 在计算过程中会直接将句子中任意两个单词的联系通过一个计算步骤直接联系起来,所以远距离依赖特征之间的距离被极大缩短,有利于有效地利用这些特征。除此外,Self Attention 对于增加计算的并行性也有直接帮助作用。这是为何 Self Attention 逐渐被广泛使用的主要原因。

    6. 关于 self-attention 为什么要使用 Q、K、V,仅仅使用 Q、V/K、V 或者 V 为什么不行?

    答:这个问题我觉得并不重要,self-attention 使用 Q、K、V,这样三个参数独立,模型的表达能力和灵活性显然会比只用 Q、V 或者只用 V 要好些,当然主流 attention 的做法还有很多种,比如说 seq2seq with attention 也就只有 hidden state 来做相似性的计算,处理不同的任务,attention 的做法有细微的不同,但是主体思想还是一致的,不知道有没有论文对这个问题有过细究,有空去查查。其实还有个小细节,因为 self-attention 的范围是包括自身的(masked self-attention 也是一样),因此至少是要采用 Q、V 或者 K、V 的形式,而这样“询问式”的 attention 方式,个人感觉 Q、K、V 显然合理一些。

    7. Why Multi-head Attention?

    答:原论文中说到进行 Multi-head Attention 的原因是将模型分为多个头,形成多个子空间,可以让模型去关注不同方面的信息,最后再将各个方面的信息综合起来。其实直观上也可以想到,如果自己设计这样的一个模型,必然也不会只做一次 attention,多次 attention 综合的结果至少能够起到增强模型的作用,也可以类比 CNN 中同时使用「多个卷积核」的作用,直观上讲,多头的注意力「有助于网络捕捉到更丰富的特征/信息」。

    8. 关于 Multi-head Attention 的计算过程

    答:在 1 中也有详细的介绍,但是需要注意的是,论文中并没有对 Multi-head Attention 有很强的理论说明,因此后续有不少论文对 Multi-head Attention 机制都有一定的讨论,一些相关工作的论文如下(还没看,先攒着)

    9. Multi-head Attention 机制相关的论文:

    答:A Structured Self-attentive Sentence Embedding[4]
    Analyzing Multi-Head Self-Attention: Specialized Heads Do the Heavy Lifting, the Rest Can Be Pruned[5]
    Are Sixteen Heads Really Better than One?[6]
    What Does BERT Look At? An Analysis of BERT’s Attention[7]
    A Multiscale Visualization of Attention in the Transformer Model[8]
    Improving Deep Transformer with Depth-Scaled Initialization and Merged Attention[9]

    10. RNN 系列的模型,并行计算能力很差

    答:RNN 系列的模型时刻隐层状态的计算,依赖两个输入,一个是时刻的句子输入单词,另一个是时刻的隐层状态的输出,这是最能体现 RNN 本质特征的一点,RNN 的历史信息是通过这个信息传输渠道往后传输的。而 RNN 并行计算的问题就出在这里,因为时刻的计算依赖时刻的隐层计算结果,而时刻的计算依赖时刻的隐层计算结果,如此下去就形成了所谓的序列依赖关系。

    11. Transformer 的特征抽取能力比 RNN 系列的模型要好

    答:上述结论是通过一些主流的实验来说明的,并不是严格的理论证明,具体实验对比可以参见:
    放弃幻想,全面拥抱 Transformer:自然语言处理三大特征抽取器(CNN/RNN/TF)比较[10]
    但是值得注意的是,并不是说 Transformer 就能够完全替代 RNN 系列的模型了,任何模型都有其适用范围,同样的,RNN 系列模型在很多任务上还是首选,熟悉各种模型的内部原理,知其然且知其所以然,才能遇到新任务时,快速分析这时候该用什么样的模型,该怎么做好。

    12. Transformer 是如何训练的?测试阶段如何进行测试呢?

    答:Transformer 训练过程与 seq2seq 类似,首先 Encoder 端得到输入的 encoding 表示,并将其输入到 Decoder 端做交互式 attention,之后在 Decoder 端接收其相应的输入(见 1 中有详细分析),经过多头 self-attention 模块之后,结合 Encoder 端的输出,再经过 FFN,得到 Decoder 端的输出之后,最后经过一个线性全连接层,就可以通过 softmax 来预测下一个单词(token),然后根据 softmax 多分类的损失函数,将 loss 反向传播即可,所以从整体上来说,Transformer 训练过程就相当于一个有监督的多分类问题。
    【需要注意的是,「Encoder 端可以并行计算,一次性将输入序列全部 encoding 出来,但 Decoder 端不是一次性把所有单词(token)预测出来的,而是像 seq2seq 一样一个接着一个预测出来的。】
    而对于测试阶段,其与训练阶段唯一不同的是 Decoder 端最底层的输入,详细分析见问题 1。

    13. Transformer 中的 Add & Norm 模块,具体是怎么做的?

    答:见 1 其他模块的叙述,对 Add & Norm 模块有详细的分析

    14. 为什么说 Transformer 可以代替 seq2seq?

    答:这里用代替这个词略显不妥当,seq2seq 虽已老,但始终还是有其用武之地,seq2seq 最大的问题在于「将 Encoder 端的所有信息压缩到一个固定长度的向量中」,并将其作为 Decoder 端首个隐藏状态的输入,来预测 Decoder 端第一个单词(token)的隐藏状态。在输入序列比较长的时候,这样做显然会损失 Encoder 端的很多信息,而且这样一股脑的把该固定向量送入 Decoder 端,Decoder 端不能够关注到其想要关注的信息。
    上述两点都是 seq2seq 模型的缺点,后续论文对这两点有所改进,如著名的Neural Machine Translation by Jointly Learning to Align and Translate[11],虽然确确实实对 seq2seq 模型有了实质性的改进,但是由于主体模型仍然为 RNN(LSTM)系列的模型,因此模型的并行能力还是受限,而 transformer 不但对 seq2seq 模型这两点缺点有了实质性的改进(多头交互式 attention 模块),而且还引入了 self-attention 模块,让源序列和目标序列首先“自关联”起来,这样的话,源序列和目标序列自身的 embedding 表示所蕴含的信息更加丰富,而且后续的 FFN 层也增强了模型的表达能力(ACL 2018 会议上有论文对 Self-Attention 和 FFN 等模块都有实验分析,见论文:How Much Attention Do You Need?A Granular Analysis of Neural Machine Translation Architectures[12]),并且 Transformer 并行计算的能力是远远超过 seq2seq 系列的模型,因此我认为这是 transformer 优于 seq2seq 模型的地方。

    15. Transformer 中句子的 encoder 表示是什么?如何加入词序信息的?

    答:Transformer Encoder 端得到的是整个输入序列的 encoding 表示,其中最重要的是经过了 self-attention 模块,让输入序列的表达更加丰富,而加入词序信息是使用不同频率的正弦和余弦函数,具体见 1 中叙述。

    16. Transformer 如何并行化的?

    答:Transformer 的并行化我认为主要体现在 self-attention 模块,在 Encoder 端 Transformer 可以并行处理整个序列,并得到整个输入序列经过 Encoder 端的输出,在 self-attention 模块,对于某个序列,self-attention 模块可以直接计算的点乘结果,而 RNN 系列的模型就必须按照顺序从计算到。

    17. self-attention 公式中的归一化有什么作用?

    答:首先说明做归一化的原因,随着的增大,点积后的结果也随之增大,这样会将 softmax 函数推入梯度非常小的区域,使得收敛困难(可能出现梯度消失的情况)
    为了说明点积变大的原因,假设和的分量是具有均值 0 和方差 1 的独立随机变量,那么它们的点积均值为 0,方差为,因此为了抵消这种影响,我们将点积缩放,对于更详细的分析,参见(有空再来总结,哈哈~):transformer 中的 attention 为什么 scaled?[13]

    展开全文
  • 点上方人工智能算法与Python大数据获取更多干货在右上方···设为星标★,第一时间获取资源仅做学术分享,如有侵权,联系删除转载于 :机器之心Transformer 为自然语言处理领...

    点上方人工智能算法与Python大数据获取更多干货

    在右上方 ··· 设为星标 ★,第一时间获取资源

    仅做学术分享,如有侵权,联系删除

    转载于 :机器之心

    Transformer 为自然语言处理领域带来的变革已无需多言。近日,印度国立理工学院、生物医学人工智能创业公司 Nference.ai 的研究者全面调查了 NLP 领域中基于 Transformer 的预训练模型,并将调查结果汇集成了一篇综述论文。本文将按大致脉络翻译介绍这篇论文,并重点关注其中的讨论部分,因为研究者在其中指出了该领域新的研究机会。尤其需要说明:研究者将该论文命名为「 AMMUS 」,即  AMMU Smiles,这是为了纪念他们的朋友 K.S.Kalyan。

    在如今的 NLP 领域,几乎每项任务中都能看见「基于 Transformer 的预训练语言模型(T-PTLM)」成功的身影。这些模型的起点是 GPT 和 BERT。而这些模型的技术基础包括 Transformer、自监督学习和迁移学习。T-PTLM 可使用自监督学习从大规模文本数据学习普适性的语言表征,然后将学到的知识迁移到下游任务。这些模型能为下游任务提供优质的背景知识,从而可避免从头开始训练下游任务。

    这篇详尽调查 T-PTLM 的综述论文首先将简要介绍自监督学习。接下来将解释多个核心概念,包括预训练、预训练方法、预训练任务、嵌入和下游任务适应方法。接下来,文章将为 T-PTLM 给出一种新的分类方法,然后简要介绍多种不同的基准,包括内部基准和外部基准。研究者还归纳总结了一些适用于 T-PTLM 的软件库。最后讨论了一些可能有助于进一步改进这些模型的未来研究方向。

    a32d6f77a3a0e749eadd53174633be90.png

     论文地址:https://arxiv.org/pdf/2108.05542.pdf

    研究者相信,这篇全面详尽的综述论文能作为一份很好的参考资料,帮助读者了解 T-PTLM 的相关核心概念和近期研究进展。

    引言

    基于 Transformer 的预训练语言模型(T-PTLM)具备从大规模无标注文本数据学习通用语言表征并将所学知识迁移到下游任务的能力,因此已经在 NLP 领域取得了巨大的成功,这类模型包括 GPT-1、BERT、XLNet、RoBERTa、ELECTRA、T5、ALBERT、BART 和 PEGAUSUS。在更早期,NLP 系统大都采用了基于规则的方法,之后取而代之的是机器学习模型。机器学习模型需要特征工程,而特征工程又需要领域专业知识并且需要较长的时间。

    随着 GPU 等更好的计算机硬件以及 Word2Vec 和 Glove 等词嵌入方法的出现,CNN 和 RNN 等深度学习模型在构建 NLP 系统方面得到了更广泛的应用。这些深度学习模型的主要缺点是除了词嵌入之外,需要从头开始训练模型。从头开始训练这类模型需要大量有标注实例,而生成这些实例的成本很高。但是,我们希望仅使用少量有标注实例来获得表现良好的模型。

    迁移学习让我们可以将在源任务上学习到的知识很好地复用到目标任务上。在这其中,目标任务应该与源任务相似。基于迁移学习的思想,计算机视觉领域的研究者已在使用 ImageNet 等大规模有标注数据集来训练大型 CNN 模型。这些模型学习到的图像表征对所有任务来说都是普适的。然后,这些大型预训练 CNN 模型可以适应下游任务,具体做法是添加少数特定于任务的层,然后在目标数据集上进行微调。由于预训练 CNN 模型能为下游模型提供很好的背景知识,因此它们在许多计算机视觉任务上取得了巨大的成功。

    CNN 和 RNN 等深度学习模型难以建模长期上下文以及学习具有局部性偏差(locality bias)的词表征。此外,由于 RNN 按顺序处理输入(逐词处理),因此只能有限度地使用并行计算硬件。为了克服现有深度学习模型的这些缺点,Vaswani et al. 提出了完全基于自注意力的深度学习模型:Transformer。相比于 RNN,自注意力支持更高度的并行化,并且还能轻松地建模长期上下文,因为输入序列中的每个 token 都会关注其它所有 token。

    Transformer 包含一些堆叠的编码器和解码器层。在堆叠编码器和解码器层的帮助下,Transformer 可以学习到复杂的语言信息。在 NLP 领域,生成大量有标注数据的成本非常高,也非常耗时。但是,大量无标注文本数据却很容易获得。在计算机视觉社区使用基于 CNN 的预训练模型所取得的成功的感召下,NLP 研究社区将 Transformer 和自监督学习的能力组合到一起,开发出了 T-PTLM。自监督学习让 Transformer 可以使用由一个或多个预训练任务提供的伪监督进行学习。

    GPT 和 BERT 是最早的 T-PTLM,它们分别是基于 Transformer 解码器和编码器层开发的。之后,又诞生了 XLNet、RoBERTa、ELECTRA、ALBERT、T5、BART 和 PEGAUSUS 等模型。其中,XLNet、RoBERTa、ELECTRA 和 ALBERT 是基于 BERT 的改进模型;T5、BART 和 PEGAUSUS 是基于编码器 - 解码器的模型。

    Kaplan et al. 表明只需增加 T-PTLM 模型的规模就能带来性能的提升。这一发现推动了大规模 T-PTLM 的发展并催生了 GPT-3 (175B)、PANGU (200B)、GShard (600B) 等包含上千亿参数的模型,而 Switch-Transformers (1.6T) 的参数量更是达到了万亿级。

    T-PTLM 在通用英语领域取得成功之后,又开始进军其它领域,包括金融、法律、新闻、编程、对话、网络、学术和生物医学。T-PTLM 还支持迁移学习,即通过在目标数据集上进行微调和即时调整,可让这些模型适用于下游任务。本文将全面回顾与 T-PTLM 有关的近期研究成果。这篇综述论文的看点总结如下:

    • 第 2 节将简单介绍自监督学习,这是 T-PTLM 的核心技术。

    • 第 3 节将介绍与 T-PTLM 相关的一些核心概念,包括预训练、预训练方法、预训练任务、嵌入和下游适应方法。

    • 第 4 节将给出一种针对 T-PTLM 的新型分类法。这种分类法考虑了四大方面,即预训练语料库、架构、自监督学习类型和扩展方法。

    • 第 5 节将给出一种针对不同下游适应方法的新型分类法并将详细解释每个类别。

    • 第 6 节将简要介绍多种用于评估 T-PTLM 进展的基准,包括内部基准和外部基准。

    • 第 7 节将给出一些适用于 T-PTLM 的软件库,从 Huggingface Transformers 到 Transformer-interpret。

    • 第 8 节将简单讨论一些可能有助于进一步改进这些模型的未来研究方向。

    自监督学习(SSL)

    监督学习的缺点总结如下:

    • 严重依赖人类标注的实例,而获取这些实例耗时费力。

    • 缺乏泛化能力,容易出现虚假相关的问题。

    • 医疗和法律等许多领域缺乏有标注数据,这会限制 AI 模型在这些领域的应用。

    • 难以使用大量免费可用的无标注数据进行学习。

    SSL 与监督学习和无监督学习等其它流行学习范式具有一些相似性。SSL 与无监督学习的相似之处是它们都不需要人类标注的实例。但是,它与无监督学习也有不同之处:a) SSL 需要监督,而无监督学习没有监督;b) 无监督学习的目标是识别隐藏模式,而 SSL 的目标是学习有意义的表征。SSL 与监督学习的相似之处是学习范式时都需要监督。但是,它与监督学习也有不同之处:a) SSL 会自动生成标签,而无需任何人类干预;b) 监督学习的目标是提供特定于任务的知识,而 SSL 的目标是向模型提供通用知识。

    SSL 的目标总结如下:

    • 学习通用语言表征,这能为下游模型提供优良的背景。

    • 通过学习大量免费可用的无标注文本数据来获得更好的泛化能力。

    自监督学习可大致分为生成式 SSL、对比式 SSL 和对抗式 SSL 三种。

    T-PTLM 核心概念

    预训练

    预训练能带来以下一些优势:

    • 通过利用大量无标注文本,预训练有助于模型学习通用语言表征。

    • 只需增加一两个特定的层,预训练模型可以适应下游任务。因此这能提供很好的初始化,从而避免从头开始训练下游模型(只需训练特定于任务的层)。

    • 让模型只需小型数据集就能获得更好的表现,因此可以降低对大量有标注实例的需求。

    • 深度学习模型由于参数数量大,因此在使用小型数据集训练时,容易过拟合。而预训练可以提供很好的初始化,从而可避免在小型数据集上过拟合,因此可将预训练视为某种形式的正则化。

    预训练的步骤

    预训练一个模型涉及以下五个步骤:

    • 准备预训练语料库

    • 生成词汇库

    • 设计预训练任务

    • 选择预训练方法

    • 选择预训练动态

    预训练语料库

    78f60914ea18983531ef7ecb5dfc6d72.png

    图 1:预训练语料库

    0dca9bbf04d13c5eeb46f95a204a92c5.png

    图 2:预训练方法,其中 PTS 是从头开始型预训练、CPT 是持续型预训练、SPT 是同时型预训练、TAPT 是任务自适应型预训练、KIPT 是知识继承型预训练

    预训练任务

    • 闲聊语言建模(CLM)

    • 掩码语言建模(MLM)

    • 替代 token 检测(RTD)

    • 混洗 token 检测(STD)

    • 随机 token 替换(RTS)

    • 互换语言建模(SLM)

    • 翻译语言建模(TLM)

    • 替代语言建模(ALM)

    • 句子边界目标(SBO)

    • 下一句子预测(NSP)

    • 句子顺序预测(SOP)

    • 序列到序列语言模型(Seq2SeqLM)

    • 去噪自动编码器(DAE)

    嵌入

    524d96d67d511c349d2d176840b6448e.png

    图 8:T-PTLM 中的嵌入

    分类法

    为了了解以及跟踪各种 T-PTLM 的发展,研究者从四个方面对 T-PTLM 进行了分类,即预训练语料库、模型架构、SSL 类型和扩展方法。如下图 9 所示:

    8f0e08b7a86c954cb35791729d383e6c.png

    图 9:T-PTLM 的分类法。

    下游适应方法

    一旦完成语言模型的训练,就可将其用于下游任务了。将预训练后的语言模型用于下游任务的方式有三种:基于特征的方法、微调和基于提示的微调(prompt-based tuning)。

    如下图 10 所示,基于特征的方法涉及到根据语言模型生成上下文的词嵌入,然后在针对特定下游任务的模型中将它们用作输入特征。微调涉及到根据下游任务,通过尽量降低针对特定任务的损失来调整模型权重。

    7d7594942d63d674f9a4da4f6fa9acae.png

    图 10:下游适应方法。

    评估

    在预训练阶段,T-PTLM 会获取预训练语料库中编码的知识。这里的知识包括句法、语义、事实和常识。对于 T-PTLM 的效果,评估方式有两种,即内在方式和外在方式。见下图 11。

    内在评估方式是通过探测 T-PTLM 中编码的知识进行评估,而外在评估方式则是评估 T-PTLM 在真实世界下游任务中的效果如何。内在评估方式可让我们了解 T-PTLM 在预训练阶段获得的知识,这有助于我们设计更好的预训练任务,使得模型可以在预训练阶段学习到更多知识。

    cf93d18d5694e8a225b72c459d3aeec9.png

    图 11:用于评估 T-PTLM 研究进展的基准。

    有用的软件库

    研究者还归纳总结了一些适用于 T-PTLM 的常用软件库。其中,Transformers 和 Fairseq 等软件库适用于模型训练和评估。SimpleTransformers、HappyTransformer、AdaptNLP 等则构建于 Transformer 软件库之上,可让用户仅使用少量代码就实现更轻松的训练和评估。FastSeq、DeepSpeed、FastT5、OnnxT5 和 LightSeq 等则可用于提升模型的推理速度。Ecco、BertViz 和 exBERT 都是可视化分析工具,可用于探索 Transformer 模型的层。Transformers-interpret 和 Captum 则能用于解释模型决策。

    48d21ea232e534fee0c20b918e66faa2.png

    表 11:适用于 T-PTLM 的软件库。

    讨论和未来方向

    更好的预训练方法

    仅使用 SSL 来训练模型(尤其是带有成千上万亿参数的大模型)的成本非常高。知识继承型预训练(KIPT)等全新的预训练方法涉及到 SSL 和知识蒸馏。SSL 让模型可以学习预训练语料库中可用的知识,而知识蒸馏则让模型可以学习已经编码在已有预训练模型中的知识。由于在通过知识蒸馏的预训练阶段,模型可获得额外的知识,因此 a) 模型可以更快速地收敛并由此缩短预训练时间,b) 相比于仅使用 SSL 预训练的模型,在下游任务上的表现会更好。研究社区必须重点关注开发 KIPT 等更好的预训练方法,让模型获得更多知识以及降低预训练时间。

    样本高效型预训练任务

    如果一个预训练任务能最大化地利用每个训练实例,那么就可以说该预训练任务是样本高效的,即它应该能在训练实例中的所有 token 上获得定义。样本高效型预训练任务能使预训练的计算效率更高。最常用的预训练任务 MLM 的样本效率就不太高,因为其仅涉及到一个 token 子集,即掩码 token,其占总 token 数的 15%。RTD、RTS 和 STD 等预训练任务可被视为是开发样本高效型预训练任务的早期尝试。这三种预训练任务都定义在每个训练实例的所有 token 之上,即它们涉及到识别每个 token 是否被替代、随机替换或混洗。未来应该还将出现使计算效率更高的样本高效型预训练任务。

    高效模型

    由于模型尺寸较大并且需要大量无标注的文本数据,因此预训练 T-PTLM 的成本也很高。但是,较长的预训练时间对环境并不友好,因为这个过程会释放二氧化碳;而在生物医学等许多领域,也没有大规模的无标注文本数据。近期,在 BERT 模型基础上进行全新改进的 DeBERTa 等模型实现了比 RoBERTa 模型更好的性能,尽管其仅使用了 78 GB 数据进行预训练,这只是预训练 RoBERTa 模型所用的数据量的一半。类似地,ConvBERT 凭借全新的混合注意力模块,仅使用 ELECTRA 模型四分之一的预训练成本就取得了更优的表现。为了降低预训练的数据量和训练成本,人们需要 DeBERTa 和 ConvBERT 这样的高效模型。

    更好的位置编码机制

    自注意力机制是置换不变型的方法,不存在位置偏差。使用绝对或相对位置嵌入,可以提供位置偏差。此外,绝对位置嵌入可以预先确定或学习到。但是,这两种方法各有优缺点。绝对位置嵌入会有泛化问题,但却很容易实现。不同于绝对位置,相对位置嵌入能稳健地应对序列长度变化,但却难以实现,性能也更差。我们还需要全新的位置编码机制,比如 CAPE,其将绝对和相对位置嵌入的优势组合到了一起。

    改进现有的 T-PTLM

    BERT 和 RoBERTa 等 T-PTLM 已经在许多 NLP 任务上取得了优良的结果。近期的研究表明,通过基于对抗或对比预训练任务的持续预训练注入句子层级的语义,还可以进一步改进这些模型。举个例子,Panda et al. 表明使用混洗 token 检测目标的持续预训练可提升 RoBERTa 模型在 GLUE 任务上的性能,因为其允许模型学习更连贯的句子表征。类似地,使用对比预训练目标的持续性预训练可以提升 T-PTLM 在 GLUE 任务上的性能以及多语言 T-PTLM 在 Mickey Probe 上的表现。为了将其扩展到其它单语言和特定领域的 T-PTLM,还需要进一步的研究。

    超越朴素的微调

    为了将预训练模型用于下游任务,微调是最常用的方法。但是,朴素的微调的主要缺点是其会改变预训练模型中的所有层,因此我们需要为每个任务维持另一个副本,这会增加部署成本。为了以一种参数高效的方式将预训练模型用于下游任务,人们提出了 Adapters 和基于剪枝的微调等方法。

    举个例子,adapter 是添加到每个 Transformer 层的针对特定任务的小层。而在下游任务适应期间,仅更新 adapter 层的参数,Transformer 层的参数保持不变。此外,Poth et al. 表明 adapter 也可用于中间微调。近期,基于提示的微调(prompt-based tuning)方法在参数效率方面取得了明显更优的表现,并得到了研究社区的关注。举个例子,Prefix-tuning 等基于提示的微调方法仅需要 0.1% 的针对特定任务的参数,而基于 adapter 的微调则需要 3% 的针对特定任务的参数。

    基准评测

    在最后四层中,人们引入了很多基准来评估通用型和领域特定型预训练模型的进展。除了英语之外,也出现了一些用于评估其它单语言和多语言模型进展的基准。但是,现有的基准不足以覆盖所有场景。举个例子,还没有基准用于评估 a) 紧凑预训练模型的进展,b) 预训练模型的稳健性,c) 针对社交媒体以及学术等专业领域开发的 PTLM。

    近日,Explainboard 等排行榜不再只是使用已有基准等单一指标评估进展,也会深挖或分析模型的长项和短板。这类排行榜应该也能扩展到其它领域。此外,FewGLUE、FLEX 和 FewCLUE 等评估少量次学习技术的基准也应当扩展到其它语言和领域。

    紧凑模型

    T-PTLM 几乎在每种 NLP 任务上都获得了最佳表现。但是,这些模型都很大,需要更大的存储空间。因为这些模型的层数很多,因此输入需要一定时间才能完全通过模型,从而得到预测结果,因此延迟很高。而真实世界应用的资源有限,需要更低的延迟,因此剪枝、量化、知识蒸馏、参数共享和分解等模型压缩方法已经在英语通用领域应用方面得到了探索。研究这些模型压缩方法在其它语言和领域的应用具有很大的前景。

    对噪声的稳健性

    T-PTLM 容易受到噪声影响,其中包括对抗噪声和自然噪声。其主要原因是使用了子词嵌入。在使用子词嵌入时,一个词会被分解为多个子词 token,因此即使很小的拼写错误也可能改变该词的整体表征,进而阻碍模型学习并影响模型预测。为了提升模型对噪声的稳健性,CharacterBERT 等模型采用了只使用字符嵌入的方法,而 CharBERT 等模型则会将字符嵌入和子词嵌入一起使用。这两种方法都能提升对噪声的稳健性。

    近期,研究者们还提出了 CANINE、ByT5 和 Charformer 等无 token 化模型来提升对噪声的稳健性。为了让这些模型能在真实世界中得到应用,尤其是在医学等敏感领域,我们需要提升它们的稳健性。

    全新的适应方法

    为了将通用模型适应到生物医学等专业领域或将多语言模型适应到特定语言,常用的策略是使用持续性预训练。尽管这种方法通过调整模型以适应特定的领域或语言能得到良好的结果,但如果缺少领域或语言特定的词汇库,下游模型的性能会受到影响。近期有研究者提出了扩展词汇表然后持续预训练的方法。这些方法能克服 OOV 词的问题,但由于会在词汇表中增加新词,因此会增大词汇表的规模。近日,Yao et al. 提出了 Adapt and Distill 方法,即使用词汇表扩展和知识蒸馏来使通用模型适应特定领域。不同于已有的适应方法,该方法不仅能让通用模型适应特定领域,而且还能减小模型的规模。这一注意值得进一步研究并有望产出全新的适应方法。

    隐私问题

    T-PTLM 已经在许多 NLP 任务上取得了优良的结果。但是,这些模型也存在一些超出预期且并无益处的风险。举个例子,数据泄露是人们担心的一个主要问题,尤其是当这些模型的预训练使用了隐私数据时。由于模型是在大量文本数据上预训练的,因此有可能从中恢复敏感信息,比如可识别出个人身份的信息。因此,需要防止人们公开发布使用隐私数据预训练的模型。

    近日,Carlini et al. 研究表明,GPT-2 模型可生成一个人的完整邮政地址,这些地址包含在训练数据中,可使用该人的名字通过提示得到。近期出现在生物医学领域的 KART 框架可通过执行多种攻击来评估数据泄露情况。研究社区需要开发更复杂的攻击来评估数据泄露情况并开发防止预训练模型泄露敏感数据的方法。

    降低偏见

    基于深度学习的方法正在现实世界中得到越来越广泛的应用,其中包括在生物医学和法律等专业领域。但是,这些模型很容易学习并放大训练数据中已有的偏见。由此造成的结果是:这些模型会产生对特定种族、性别或年龄群体的偏见。我们完全不需要这样的模型。

    近期出现了一些重点关注识别和降低偏见的研究。比如,Minot et al. 提出了一种用于减少性别偏见的数据增强方法,Liang et al. 提出的 A-INLP 方法可以动态地识别偏见敏感型 token。在这一领域进行进一步研究有助于降低预训练模型中的偏见并帮助它们做出公平的决定。

    降低微调不稳定性

    为了让预训练模型适应下游任务,最常用的方法是微调。尽管微调的表现不错,但它并不稳定,即使用不同随机种子来执行微调会令下游表现差距巨大。有人认为,微调不稳定的原因包括灾难性遗忘和数据集规模较小。但是,Mosbach et al. 表明这两个原因都不是微调不稳定的原因,并进一步表明微调不稳定的原因包括:a) 优化困难,导致梯度消失,b) 泛化问题。为了降低微调不稳定,可能的解决方案包括:a) 中间微调,b) 混合(mix-out),c) 在早期 epoch 采用更小的学习率并且增多微调 epoch 的次数,d) 同时使用监督式对比损失和交叉熵损失。让微调更稳定的方法值得进一步研究。

    ---------♥---------

    声明:本内容来源网络,版权属于原作者

    图片来源网络,不代表本公众号立场。如有侵权,联系删除

    AI博士私人微信,还有少量空位

    7edc8ccc9f246e4b89c3efa0615232ad.png

    fb05c559fa7bd7cde6fe775a300a519e.gif

    如何画出漂亮的深度学习模型图?

    如何画出漂亮的神经网络图?

    一文读懂深度学习中的各种卷积

    点个在看支持一下吧3696892361980269ea0b321b65577bb6.png312b0ede4be441b8b107f4c290b79ed8.png

    展开全文
  • 机器之心报道在如今的 NLP 领域,几乎每项任务中都能看见「基于 Transformer 的预训练语言模型(T-PTLM)」成功的身影。这些模型的起点是 GPT 和 BERT。而这些模型的...

    321d492e21340596ff527a80031f2338.png

    机器之心报道

    在如今的 NLP 领域,几乎每项任务中都能看见「基于 Transformer 的预训练语言模型(T-PTLM)」成功的身影。这些模型的起点是 GPT 和 BERT。而这些模型的技术基础包括 Transformer、自监督学习和迁移学习。T-PTLM 可使用自监督学习从大规模文本数据学习普适性的语言表征,然后将学到的知识迁移到下游任务。这些模型能为下游任务提供优质的背景知识,从而可避免从头开始训练下游任务。

    这篇详尽调查 T-PTLM 的综述论文首先将简要介绍自监督学习。接下来将解释多个核心概念,包括预训练、预训练方法、预训练任务、嵌入和下游任务适应方法。接下来,文章将为 T-PTLM 给出一种新的分类方法,然后简要介绍多种不同的基准,包括内部基准和外部基准。研究者还归纳总结了一些适用于 T-PTLM 的软件库。最后讨论了一些可能有助于进一步改进这些模型的未来研究方向。

    5197ff6f03eb4a4f64894725b3fd2617.png

     论文地址:https://arxiv.org/pdf/2108.05542.pdf

    研究者相信,这篇全面详尽的综述论文能作为一份很好的参考资料,帮助读者了解 T-PTLM 的相关核心概念和近期研究进展。

    引言

    基于 Transformer 的预训练语言模型(T-PTLM)具备从大规模无标注文本数据学习通用语言表征并将所学知识迁移到下游任务的能力,因此已经在 NLP 领域取得了巨大的成功,这类模型包括 GPT-1、BERT、XLNet、RoBERTa、ELECTRA、T5、ALBERT、BART 和 PEGAUSUS。在更早期,NLP 系统大都采用了基于规则的方法,之后取而代之的是机器学习模型。机器学习模型需要特征工程,而特征工程又需要领域专业知识并且需要较长的时间。

    随着 GPU 等更好的计算机硬件以及 Word2Vec 和 Glove 等词嵌入方法的出现,CNN 和 RNN 等深度学习模型在构建 NLP 系统方面得到了更广泛的应用。这些深度学习模型的主要缺点是除了词嵌入之外,需要从头开始训练模型。从头开始训练这类模型需要大量有标注实例,而生成这些实例的成本很高。但是,我们希望仅使用少量有标注实例来获得表现良好的模型。

    迁移学习让我们可以将在源任务上学习到的知识很好地复用到目标任务上。在这其中,目标任务应该与源任务相似。基于迁移学习的思想,计算机视觉领域的研究者已在使用 ImageNet 等大规模有标注数据集来训练大型 CNN 模型。这些模型学习到的图像表征对所有任务来说都是普适的。然后,这些大型预训练 CNN 模型可以适应下游任务,具体做法是添加少数特定于任务的层,然后在目标数据集上进行微调。由于预训练 CNN 模型能为下游模型提供很好的背景知识,因此它们在许多计算机视觉任务上取得了巨大的成功。

    CNN 和 RNN 等深度学习模型难以建模长期上下文以及学习具有局部性偏差(locality bias)的词表征。此外,由于 RNN 按顺序处理输入(逐词处理),因此只能有限度地使用并行计算硬件。为了克服现有深度学习模型的这些缺点,Vaswani et al. 提出了完全基于自注意力的深度学习模型:Transformer。相比于 RNN,自注意力支持更高度的并行化,并且还能轻松地建模长期上下文,因为输入序列中的每个 token 都会关注其它所有 token。

    Transformer 包含一些堆叠的编码器和解码器层。在堆叠编码器和解码器层的帮助下,Transformer 可以学习到复杂的语言信息。在 NLP 领域,生成大量有标注数据的成本非常高,也非常耗时。但是,大量无标注文本数据却很容易获得。在计算机视觉社区使用基于 CNN 的预训练模型所取得的成功的感召下,NLP 研究社区将 Transformer 和自监督学习的能力组合到一起,开发出了 T-PTLM。自监督学习让 Transformer 可以使用由一个或多个预训练任务提供的伪监督进行学习。

    GPT 和 BERT 是最早的 T-PTLM,它们分别是基于 Transformer 解码器和编码器层开发的。之后,又诞生了 XLNet、RoBERTa、ELECTRA、ALBERT、T5、BART 和 PEGAUSUS 等模型。其中,XLNet、RoBERTa、ELECTRA 和 ALBERT 是基于 BERT 的改进模型;T5、BART 和 PEGAUSUS 是基于编码器 - 解码器的模型。

    Kaplan et al. 表明只需增加 T-PTLM 模型的规模就能带来性能的提升。这一发现推动了大规模 T-PTLM 的发展并催生了 GPT-3 (175B)、PANGU (200B)、GShard (600B) 等包含上千亿参数的模型,而 Switch-Transformers (1.6T) 的参数量更是达到了万亿级。

    T-PTLM 在通用英语领域取得成功之后,又开始进军其它领域,包括金融、法律、新闻、编程、对话、网络、学术和生物医学。T-PTLM 还支持迁移学习,即通过在目标数据集上进行微调和即时调整,可让这些模型适用于下游任务。本文将全面回顾与 T-PTLM 有关的近期研究成果。这篇综述论文的看点总结如下:

    • 第 2 节将简单介绍自监督学习,这是 T-PTLM 的核心技术。

    • 第 3 节将介绍与 T-PTLM 相关的一些核心概念,包括预训练、预训练方法、预训练任务、嵌入和下游适应方法。

    • 第 4 节将给出一种针对 T-PTLM 的新型分类法。这种分类法考虑了四大方面,即预训练语料库、架构、自监督学习类型和扩展方法。

    • 第 5 节将给出一种针对不同下游适应方法的新型分类法并将详细解释每个类别。

    • 第 6 节将简要介绍多种用于评估 T-PTLM 进展的基准,包括内部基准和外部基准。

    • 第 7 节将给出一些适用于 T-PTLM 的软件库,从 Huggingface Transformers 到 Transformer-interpret。

    • 第 8 节将简单讨论一些可能有助于进一步改进这些模型的未来研究方向。

    自监督学习(SSL)

    监督学习的缺点总结如下:

    • 严重依赖人类标注的实例,而获取这些实例耗时费力。

    • 缺乏泛化能力,容易出现虚假相关的问题。

    • 医疗和法律等许多领域缺乏有标注数据,这会限制 AI 模型在这些领域的应用。

    • 难以使用大量免费可用的无标注数据进行学习。

    SSL 与监督学习和无监督学习等其它流行学习范式具有一些相似性。SSL 与无监督学习的相似之处是它们都不需要人类标注的实例。但是,它与无监督学习也有不同之处:a) SSL 需要监督,而无监督学习没有监督;b) 无监督学习的目标是识别隐藏模式,而 SSL 的目标是学习有意义的表征。SSL 与监督学习的相似之处是学习范式时都需要监督。但是,它与监督学习也有不同之处:a) SSL 会自动生成标签,而无需任何人类干预;b) 监督学习的目标是提供特定于任务的知识,而 SSL 的目标是向模型提供通用知识。

    SSL 的目标总结如下:

    • 学习通用语言表征,这能为下游模型提供优良的背景。

    • 通过学习大量免费可用的无标注文本数据来获得更好的泛化能力。

    自监督学习可大致分为生成式 SSL、对比式 SSL 和对抗式 SSL 三种。

    T-PTLM 核心概念

    预训练

    预训练能带来以下一些优势:

    • 通过利用大量无标注文本,预训练有助于模型学习通用语言表征。

    • 只需增加一两个特定的层,预训练模型可以适应下游任务。因此这能提供很好的初始化,从而避免从头开始训练下游模型(只需训练特定于任务的层)。

    • 让模型只需小型数据集就能获得更好的表现,因此可以降低对大量有标注实例的需求。

    • 深度学习模型由于参数数量大,因此在使用小型数据集训练时,容易过拟合。而预训练可以提供很好的初始化,从而可避免在小型数据集上过拟合,因此可将预训练视为某种形式的正则化。

    预训练的步骤

    预训练一个模型涉及以下五个步骤:

    • 准备预训练语料库

    • 生成词汇库

    • 设计预训练任务

    • 选择预训练方法

    • 选择预训练动态

    预训练语料库

    cfab9e636ffcff4ce8c53b22cc155011.png

    图 1:预训练语料库

    c1a6d6474aa10645de3a2ee89e36bb76.png

    图 2:预训练方法,其中 PTS 是从头开始型预训练、CPT 是持续型预训练、SPT 是同时型预训练、TAPT 是任务自适应型预训练、KIPT 是知识继承型预训练

    预训练任务

    • 闲聊语言建模(CLM)

    • 掩码语言建模(MLM)

    • 替代 token 检测(RTD)

    • 混洗 token 检测(STD)

    • 随机 token 替换(RTS)

    • 互换语言建模(SLM)

    • 翻译语言建模(TLM)

    • 替代语言建模(ALM)

    • 句子边界目标(SBO)

    • 下一句子预测(NSP)

    • 句子顺序预测(SOP)

    • 序列到序列语言模型(Seq2SeqLM)

    • 去噪自动编码器(DAE)

    嵌入

    69c68555853ad7773acd561b823998db.png

    图 8:T-PTLM 中的嵌入

    分类法

    为了了解以及跟踪各种 T-PTLM 的发展,研究者从四个方面对 T-PTLM 进行了分类,即预训练语料库、模型架构、SSL 类型和扩展方法。如下图 9 所示:

    b4590e51597a201dbb31bbdee860ce2f.png

    图 9:T-PTLM 的分类法。

    下游适应方法

    一旦完成语言模型的训练,就可将其用于下游任务了。将预训练后的语言模型用于下游任务的方式有三种:基于特征的方法、微调和基于提示的微调(prompt-based tuning)。

    如下图 10 所示,基于特征的方法涉及到根据语言模型生成上下文的词嵌入,然后在针对特定下游任务的模型中将它们用作输入特征。微调涉及到根据下游任务,通过尽量降低针对特定任务的损失来调整模型权重。

    ed09bac14bd83bfcf00951ecf219dcd3.png

    图 10:下游适应方法。

    评估

    在预训练阶段,T-PTLM 会获取预训练语料库中编码的知识。这里的知识包括句法、语义、事实和常识。对于 T-PTLM 的效果,评估方式有两种,即内在方式和外在方式。见下图 11。

    内在评估方式是通过探测 T-PTLM 中编码的知识进行评估,而外在评估方式则是评估 T-PTLM 在真实世界下游任务中的效果如何。内在评估方式可让我们了解 T-PTLM 在预训练阶段获得的知识,这有助于我们设计更好的预训练任务,使得模型可以在预训练阶段学习到更多知识。

    ec2336f01e5f2f73bfb454dd0f65a4af.png

    图 11:用于评估 T-PTLM 研究进展的基准。

    有用的软件库

    研究者还归纳总结了一些适用于 T-PTLM 的常用软件库。其中,Transformers 和 Fairseq 等软件库适用于模型训练和评估。SimpleTransformers、HappyTransformer、AdaptNLP 等则构建于 Transformer 软件库之上,可让用户仅使用少量代码就实现更轻松的训练和评估。FastSeq、DeepSpeed、FastT5、OnnxT5 和 LightSeq 等则可用于提升模型的推理速度。Ecco、BertViz 和 exBERT 都是可视化分析工具,可用于探索 Transformer 模型的层。Transformers-interpret 和 Captum 则能用于解释模型决策。

    1795f4a108b2f83b73fc467cb1ad9e02.png

    表 11:适用于 T-PTLM 的软件库。

    讨论和未来方向

    更好的预训练方法

    仅使用 SSL 来训练模型(尤其是带有成千上万亿参数的大模型)的成本非常高。知识继承型预训练(KIPT)等全新的预训练方法涉及到 SSL 和知识蒸馏。SSL 让模型可以学习预训练语料库中可用的知识,而知识蒸馏则让模型可以学习已经编码在已有预训练模型中的知识。由于在通过知识蒸馏的预训练阶段,模型可获得额外的知识,因此 a) 模型可以更快速地收敛并由此缩短预训练时间,b) 相比于仅使用 SSL 预训练的模型,在下游任务上的表现会更好。研究社区必须重点关注开发 KIPT 等更好的预训练方法,让模型获得更多知识以及降低预训练时间。

    样本高效型预训练任务

    如果一个预训练任务能最大化地利用每个训练实例,那么就可以说该预训练任务是样本高效的,即它应该能在训练实例中的所有 token 上获得定义。样本高效型预训练任务能使预训练的计算效率更高。最常用的预训练任务 MLM 的样本效率就不太高,因为其仅涉及到一个 token 子集,即掩码 token,其占总 token 数的 15%。RTD、RTS 和 STD 等预训练任务可被视为是开发样本高效型预训练任务的早期尝试。这三种预训练任务都定义在每个训练实例的所有 token 之上,即它们涉及到识别每个 token 是否被替代、随机替换或混洗。未来应该还将出现使计算效率更高的样本高效型预训练任务。

    高效模型

    由于模型尺寸较大并且需要大量无标注的文本数据,因此预训练 T-PTLM 的成本也很高。但是,较长的预训练时间对环境并不友好,因为这个过程会释放二氧化碳;而在生物医学等许多领域,也没有大规模的无标注文本数据。近期,在 BERT 模型基础上进行全新改进的 DeBERTa 等模型实现了比 RoBERTa 模型更好的性能,尽管其仅使用了 78 GB 数据进行预训练,这只是预训练 RoBERTa 模型所用的数据量的一半。类似地,ConvBERT 凭借全新的混合注意力模块,仅使用 ELECTRA 模型四分之一的预训练成本就取得了更优的表现。为了降低预训练的数据量和训练成本,人们需要 DeBERTa 和 ConvBERT 这样的高效模型。

    更好的位置编码机制

    自注意力机制是置换不变型的方法,不存在位置偏差。使用绝对或相对位置嵌入,可以提供位置偏差。此外,绝对位置嵌入可以预先确定或学习到。但是,这两种方法各有优缺点。绝对位置嵌入会有泛化问题,但却很容易实现。不同于绝对位置,相对位置嵌入能稳健地应对序列长度变化,但却难以实现,性能也更差。我们还需要全新的位置编码机制,比如 CAPE,其将绝对和相对位置嵌入的优势组合到了一起。

    改进现有的 T-PTLM

    BERT 和 RoBERTa 等 T-PTLM 已经在许多 NLP 任务上取得了优良的结果。近期的研究表明,通过基于对抗或对比预训练任务的持续预训练注入句子层级的语义,还可以进一步改进这些模型。举个例子,Panda et al. 表明使用混洗 token 检测目标的持续预训练可提升 RoBERTa 模型在 GLUE 任务上的性能,因为其允许模型学习更连贯的句子表征。类似地,使用对比预训练目标的持续性预训练可以提升 T-PTLM 在 GLUE 任务上的性能以及多语言 T-PTLM 在 Mickey Probe 上的表现。为了将其扩展到其它单语言和特定领域的 T-PTLM,还需要进一步的研究。

    超越朴素的微调

    为了将预训练模型用于下游任务,微调是最常用的方法。但是,朴素的微调的主要缺点是其会改变预训练模型中的所有层,因此我们需要为每个任务维持另一个副本,这会增加部署成本。为了以一种参数高效的方式将预训练模型用于下游任务,人们提出了 Adapters 和基于剪枝的微调等方法。

    举个例子,adapter 是添加到每个 Transformer 层的针对特定任务的小层。而在下游任务适应期间,仅更新 adapter 层的参数,Transformer 层的参数保持不变。此外,Poth et al. 表明 adapter 也可用于中间微调。近期,基于提示的微调(prompt-based tuning)方法在参数效率方面取得了明显更优的表现,并得到了研究社区的关注。举个例子,Prefix-tuning 等基于提示的微调方法仅需要 0.1% 的针对特定任务的参数,而基于 adapter 的微调则需要 3% 的针对特定任务的参数。

    基准评测

    在最后四层中,人们引入了很多基准来评估通用型和领域特定型预训练模型的进展。除了英语之外,也出现了一些用于评估其它单语言和多语言模型进展的基准。但是,现有的基准不足以覆盖所有场景。举个例子,还没有基准用于评估 a) 紧凑预训练模型的进展,b) 预训练模型的稳健性,c) 针对社交媒体以及学术等专业领域开发的 PTLM。

    近日,Explainboard 等排行榜不再只是使用已有基准等单一指标评估进展,也会深挖或分析模型的长项和短板。这类排行榜应该也能扩展到其它领域。此外,FewGLUE、FLEX 和 FewCLUE 等评估少量次学习技术的基准也应当扩展到其它语言和领域。

    紧凑模型

    T-PTLM 几乎在每种 NLP 任务上都获得了最佳表现。但是,这些模型都很大,需要更大的存储空间。因为这些模型的层数很多,因此输入需要一定时间才能完全通过模型,从而得到预测结果,因此延迟很高。而真实世界应用的资源有限,需要更低的延迟,因此剪枝、量化、知识蒸馏、参数共享和分解等模型压缩方法已经在英语通用领域应用方面得到了探索。研究这些模型压缩方法在其它语言和领域的应用具有很大的前景。

    对噪声的稳健性

    T-PTLM 容易受到噪声影响,其中包括对抗噪声和自然噪声。其主要原因是使用了子词嵌入。在使用子词嵌入时,一个词会被分解为多个子词 token,因此即使很小的拼写错误也可能改变该词的整体表征,进而阻碍模型学习并影响模型预测。为了提升模型对噪声的稳健性,CharacterBERT 等模型采用了只使用字符嵌入的方法,而 CharBERT 等模型则会将字符嵌入和子词嵌入一起使用。这两种方法都能提升对噪声的稳健性。

    近期,研究者们还提出了 CANINE、ByT5 和 Charformer 等无 token 化模型来提升对噪声的稳健性。为了让这些模型能在真实世界中得到应用,尤其是在医学等敏感领域,我们需要提升它们的稳健性。

    全新的适应方法

    为了将通用模型适应到生物医学等专业领域或将多语言模型适应到特定语言,常用的策略是使用持续性预训练。尽管这种方法通过调整模型以适应特定的领域或语言能得到良好的结果,但如果缺少领域或语言特定的词汇库,下游模型的性能会受到影响。近期有研究者提出了扩展词汇表然后持续预训练的方法。这些方法能克服 OOV 词的问题,但由于会在词汇表中增加新词,因此会增大词汇表的规模。近日,Yao et al. 提出了 Adapt and Distill 方法,即使用词汇表扩展和知识蒸馏来使通用模型适应特定领域。不同于已有的适应方法,该方法不仅能让通用模型适应特定领域,而且还能减小模型的规模。这一注意值得进一步研究并有望产出全新的适应方法。

    隐私问题

    T-PTLM 已经在许多 NLP 任务上取得了优良的结果。但是,这些模型也存在一些超出预期且并无益处的风险。举个例子,数据泄露是人们担心的一个主要问题,尤其是当这些模型的预训练使用了隐私数据时。由于模型是在大量文本数据上预训练的,因此有可能从中恢复敏感信息,比如可识别出个人身份的信息。因此,需要防止人们公开发布使用隐私数据预训练的模型。

    近日,Carlini et al. 研究表明,GPT-2 模型可生成一个人的完整邮政地址,这些地址包含在训练数据中,可使用该人的名字通过提示得到。近期出现在生物医学领域的 KART 框架可通过执行多种攻击来评估数据泄露情况。研究社区需要开发更复杂的攻击来评估数据泄露情况并开发防止预训练模型泄露敏感数据的方法。

    降低偏见

    基于深度学习的方法正在现实世界中得到越来越广泛的应用,其中包括在生物医学和法律等专业领域。但是,这些模型很容易学习并放大训练数据中已有的偏见。由此造成的结果是:这些模型会产生对特定种族、性别或年龄群体的偏见。我们完全不需要这样的模型。

    近期出现了一些重点关注识别和降低偏见的研究。比如,Minot et al. 提出了一种用于减少性别偏见的数据增强方法,Liang et al. 提出的 A-INLP 方法可以动态地识别偏见敏感型 token。在这一领域进行进一步研究有助于降低预训练模型中的偏见并帮助它们做出公平的决定。

    降低微调不稳定性

    为了让预训练模型适应下游任务,最常用的方法是微调。尽管微调的表现不错,但它并不稳定,即使用不同随机种子来执行微调会令下游表现差距巨大。有人认为,微调不稳定的原因包括灾难性遗忘和数据集规模较小。但是,Mosbach et al. 表明这两个原因都不是微调不稳定的原因,并进一步表明微调不稳定的原因包括:a) 优化困难,导致梯度消失,b) 泛化问题。为了降低微调不稳定,可能的解决方案包括:a) 中间微调,b) 混合(mix-out),c) 在早期 epoch 采用更小的学习率并且增多微调 epoch 的次数,d) 同时使用监督式对比损失和交叉熵损失。让微调更稳定的方法值得进一步研究。

    展开全文
  • Vision Transformer训练模型

    千次阅读 2021-12-06 10:35:06
    2021 vision transformer训练模型
  • 点击 机器学习算法与Python学习 ,选择加星标精彩内容不迷路机器之心报道在如今的 NLP 领域,几乎每项任务中都能看见「基于 Transformer 的预训练语言模型(T-PTLM)」...
  • 1.训练部分 每个字都是one-hot的形式,因此我们希望每个字输出的几率都和对应的one-hot向量越接近越好。因此我们要去计算输出和正确答案两者间的交叉熵越接小越好。(和分类很像,加入中文有4000个字,那就是做...
  • 一开始,Transformer在Attention is all you need这篇paper中提出,解决的自然语言中的序列问题,也就是将自然语言的word变成一个sequence问题,但是有效的解决了RNN的无法并行处理的问题,并且其可以考虑全局的咨询...
  • 作者丨Alexander Rush 来源丨哈工大SCIR 编辑丨极市平台 极市导读 本文分享一篇来自哈佛大学关于Transformer的文章,作者为此文章写了篇注解文档,详细介绍了模型结构,训练过程并给出了可实现的Transformer的代码...
  • 但是,较长的预训练时间对环境并不友好,因为这个过程会释放二氧化碳;而在生物医学等许多领域,也没有大规模的无标注文本数据。近期,在 BERT 模型基础上进行全新改进的 DeBERTa 等模型实现了比 RoBERTa 模型更好的...
  • QizNLP介绍:基于tensorflow(1.x)的NLP框架,提供NLP多种任务(分类、匹配、序列标注、生成等)代码模板,包括数据处理、模型训练、部署推断的全流程,同时内置一些常见模型提供调用,并支持基于horovod的数据并行式...
  • Transformer

    2021-10-08 20:09:43
    Transformer问题 问题 1.递归(循环)神经网络用于序列建模,比如语言建模和机器翻译,推动了循环语言模型和编码器-解码器体系结构的边界。但是递归神经网络由顺序计算的约束,所以提出注意力机制,不考虑输入输出...
  • 本文转载自:新智元来源:arXiv 编辑:Priscilla LQ【导读】CNN地位不稳。加州大学圣地亚哥分校联合谷歌进行研究:用视觉Transformer训练GAN,结果表明,ViTG...
  • 点击下面卡片,关注我呀,每天给你送来AI技术干货!来自:哈工大讯飞联合实验室本期导读:自从BERT出现以来,预训练技术逐渐发展成为了 NLP 领域不可或缺的主流技术。这给我们处理NLP任务...
  • 1.训练阶段避免模型用到未来的信息,造成训练作弊 2. 预测阶段要保持重复的单词预测结果是一样的,这样不仅合理,而且可以增量更新 3.预测与训练时的模型架构保持一致,前向传播的方式是一致的
  • 在计算资源相同的情况下,Switch Transformer训练速度可以达到 T5 模型的 4-7 倍。 在深度学习领域,模型通常会对所有输入重用相同的参数。但 Mixture of Experts (MoE,混合专家) 模型是个例外,它们会...
  • 加州大学圣地亚哥分校联合谷歌进行研究:用视觉Transformer训练GAN,结果表明,ViTGAN性能可以与卷积GAN媲美。 卷积神经网络(convoluitonal neural networks,CNN)凭借强大的卷积和池化(pooling)能力,在计算机...
  • Transformer学习笔记

    2021-10-10 14:26:09
      最近在学习Transformer相关的内容,借助这个笔记整理一下这段时间搜集到的相关资料以及个人理解。 一、模型产生背景     这段时间主要学习了Transformer模型在NLP方向上的应用,具体应用场景为机器语言翻译...
  • 1,请阐述 Transformer 能够进行训练来表达和生成信息背后的数学假设,什么数学模型 或者公式支持了 Transformer 模型的训练目标?请展示至少一个相关数学公式的具体推 导过程。 2,Transformer 中的可训练 ...
  • 文 | happy源 | 极市平台论文链接: https://arxiv.org/abs/2104.02057本文是FAIR的恺明团队针对自监督学习+Transformer的一篇实证研究。...
  • 【论文极速读】MoCo v3: MoCo机制下Transformer模型的训练不稳定现象 FesianXu 20211015 at Baidu search team 前言 之前笔者在[1]中介绍过MoCo v1模型通过解耦batch size和负样本队列大小,从而实现超大负样本...
  • 点击下方卡片,关注“CVer”公众号AI/CV重磅干货,第一时间送达作者丨happy 审稿丨邓富城转载自丨极市平台导读本文探索了用于提升ViT性能的各种训练技巧。通过一系列实验对比、...
  • 本文主要介绍了Transformer模型的架构
  • dir="E:/transformer_file/") model.eval() outputs = model(input_ids) #--------------------------------------------------------------------------------- prediction_scores = outputs[0] #prediction_scores...
  • 机器之心报道机器之心编辑部Transformer 为自然语言处理领域带来的变革已无需多言。近日,印度国立理工学院、生物医学人工智能创业公司 Nference.ai 的研究者全面调查了 NL...
  • 解决了这俩问题,UP-DETR的预训练过程如下图所示,除此之外,下游目标检测的微调是和训DETR一模一样的: 在实验中,通过在ImageNet上无监督预训练,UP-DETR在VOC和COCO上都取得了更快的收敛和更高的精度。...
  • batch size和lr会明显影响ViT训练的稳定性,比如batch size为6144时,从训练过程中的acc曲线可以看到会出现比较明显的“dips”,这就好像网络又重开始训练一样。虽然训练不稳定,但最终的效果为69.7,相比batch size...
  • 中文Transformer预训练模型权重 ...我们在huggingface上开源的所有权重,均是使用公开的语料进行训练的,并且我们在huggingface模型权重的readme中给出了详细的训练过程的说明,用户如果有足够的算力可
  • 视频来源YouTube,版权归原作者所有,作者Shusen Wang推荐阅读视频详解Transformer模型(1)视频详解Transformer模型(2)Transformers Neu...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,981
精华内容 5,992
关键字:

transformer训练过程