【综述专栏】一文回顾Transformer 和 预训练模型

2021-05-20 10:05:40 浏览数 (1)

在科学研究中,从方法论上来讲,都应“先见森林,再见树木”。当前,人工智能学术研究方兴未艾,技术迅猛发展,可谓万木争荣,日新月异。对于AI从业者来说,在广袤的知识森林中,系统梳理脉络,才能更好地把握趋势。为此,我们精选国内外优秀的综述文章,开辟“综述专栏”,敬请关注。

作者:知乎—管他叫大靖

地址:https://zhuanlan.zhihu.com/p/369781582

预训练模型(Pre-trained Model)大致可以分为两代,第一代预训练模型的学习目标是与上下文无关的分布式词嵌入(distributed word embedding),是单词级别的静态词向量,以Word2Vec, Glove, Fasttext为代表。然而,由于大多数NLP任务都超出单词理解级别,因此需要在句子级别或更高级别上对神经编码器进行预训练,这就是第二代预训练模型,代表模型为GPT, BERT。第二代预训练模型的编码器的输出向量依赖于单词的上下文,词嵌入表示取决于上下文语义。本文主要讨论第二代预训练模型,对第一代预训练模型只做简单的回顾。

本文试图梳理预训练模型在NLP中的发展历程,包括背景知识、预训练模型结构、任务设计。此外,本文对预训练模型的特征编码器transformer做一个基本的介绍,涉及transformer和CNN、RNN等其他特征编码器的对比,如何进行位置编码,如何降低attention的计算复杂度,如何压缩基于transformer的预训练模型等。

01

Introduction

1.1 History Before BERT

2018年9月份,Deep Learning Indaba 2018大会上,ULMFit作者之一Sebastian Ruder做了一个名为Frontiers of Natural Language Processing 的报告,其中梳理了近年来NLP的关键进展。这里引用报告中的时间线,并从预训练模型的视角做简单的remark。

2003 - Neural network language models(神经语言模型)

A Neural Probabilistic Language Model ,词嵌入(word embedding)首次出现就是在Bingo的这篇文章中。

2008 - Multi-task learning

多任务学习采用同一个模型结构并共享参数。目前预训练模型的也是这样做的,即:在多个任务上预训练同一个模型(参数共享),每个任务的优化目标不同,全局优化目标为轮流优化子任务或子任务优化目标之和。

2013 - Word embeddings(词嵌入)

Distributed representations of words and phrases and their compositionality(Mikolov) .

highlight:CBOW&Skip-gram,Negative Sampling

静态词向量的其他工作:Glove,Fasttext

2013 - Neural networks for NLP

典型代表:CNN, RNN, 是很多NLP模型的特征编码器。

2014 - Sequence-to-sequence models

典型结构:encoder-decoder

典型应用:机器翻译

2015 - Attention(注意力机制)

2015 - Memory-based networks(基于记忆的网络)

2017 - Transformer

一种基于attention的全新的特征提取器,碾压CNN, RNN的存在。

1.2 Dawn

Word2Vec, Glove等第一代预训练模型只能获得单词的静态词向量,句子和文章的表示只是静态词向量的一个简单平均。在第二代预训练模型出来之前,已经有大量的工作尝试从具体的语境中获取句子和文章的向量化表示:

[1]. PV-DM和PV-DBOW(2016) (sentences and documents representation)

[2]. InferSent(2017) (sentence representation)

[3]. Skip-thoughts(2015) (通过sentence generation获取sentence representation)

[4]. Quick-thoughts(2018) (通过sentence classification获取 sentence representation)

到这个时候,第二代预训练模型已经呼之欲出了。

1.3 New Era

在2018年,随着ELMO、GPT、BERT相继提出,各大NLP任务榜被不断刷新。通过在大规模的语料上训练一个通用模型,NLP也可以像CV那样进行迁移学习,开启了一个新的NLP时代——预训练语言模型(Pre-trained Language Models,PTLM)。

CV任务进行迁移学习的基础:图像的边缘特征是通用的。NLP任务进行迁移学习的基础:token的语义特征是通用的。

在BERT出来之前ELMO和GPT是预训练模型的典型代表,并开启了预训练模型解决NLP任务的三步,预训练(pretrain),微调(fine-tune)和目标任务训练(target-task train)。

预训练模型中最为耀眼的莫非BERT,BERT可以说是集前人智慧之大成者。它的encoder是Transformer的encoder,它和ELMO一样使用双向token的信息进行contextual编码,它的MLM任务很像CBOW,它的NSP任务和Quick-thoughts判断句子是否为上下文一样。除此之外,BERT是一个深层网络,它从ResNET吸收了Highway Network的思想。BERT可谓是集百家之长,终成一家之言。

为什么会有预训练模型呢?随着深度学习的发展,模型参数的数量迅速增加。要完全训练模型参数并防止过度拟合,需要更大的数据集。但是,由于标注成本极高,对于大多数NLP任务而言,构建大规模的标注数据集是一个巨大的挑战,尤其是对于语法和语义相关的任务。相反,大规模的未标记语料库相对容易构建。为了利用大量未标记的文本数据,我们首先可以从中学习token或sentence的表示形式(embedding),然后将这些表示形式用于其他任务。研究表明,借助从大规模无标注语料库中的PTM提取的表示形式,可以在许多NLP任务上获得显着的性能提升。 预训练模型的优点有:

1. 从大规模语料上可以获得tokens更通用的表示形式。

2. 预训练模型提供了更好的模型初始化,在目标任务上可以带来更好的泛化性并加速目标任务收敛。

3. 在下游小样本任务上,预训练模型可以防止过拟合。

相比于静态词向量模型(word2vec, glove) task-specific model,为何预训练语言模型能够达到如此好的效果?大概有以下几个方面的原因:

学习知识:

1. word2vec结构简单,只使用了单词的共现信息,没有考虑词语的顺序,且单词的上线文依赖长度太短。

2. BERT等预训练模型克服了如上缺点,通过位置编码考虑了单词的上下文信息。同时,transformer的encoder对长线记忆提取效果更好。

语义表征:

1. word2vec训练出来的是静态的词向量,同一个词在不同的上下文当中,向量表征是相同的。这样的一种词向量无法体现一个词在不同语境中的含义,即无法解决一词多义。

2. 预训练模型能够根据上下文提取符合语境的词向量,该词向量为一个动态向量,即不同上下文中,同一个词的表征向量是不同的。

应用难度:

1. word2vec只解决了单词的表征。在具体使用中需要根据具体任务,设计出不同的模型抽取单词之间的交互信息或深层语义。

2. 预训练模型中学习了大量的通用知识,大大降低了下游任务的使用难度。预训练模型自带了从句法到语义的特征,只按需提取对应的特征即可,比如[CLS], 各层的word embedding等。大量实验表明,即使不用之前的那些specific-task模型,直接使用预训练模型的特征 softmax,也能在下游任务上获得更好的效果。听起来有些悲观,但这并不意味预训练模型之前的那些模型、tricks就没用了,如果PTLM的特征和之前的Model进行适当的融合,可能会获得效果的进一步提升。这就需要NLPer们在生产中实际出真知了。

02

Background

PTLM更改了NLP任务的重心,让NLP任务变得标准化,降低了NLP技术的应用难度。在PTLM之前,NLP的重心在于设计精巧的模型,以充分提取有效特征。 不支持在 Docs 外粘贴 block 在详细介绍PTLM之前,我们先来回顾一下PTLM前的NLP任务是怎么做的。NLP任务的一般结构为:

2.1 Non-contextual Embeddings

第一步是将离散的语言文字(token)映射到一个低维空间,获取稠密表达(distributed embedding)。Non-contextual Embeddings的典型代表是word2vec,glove,fasttext。但这样做的缺点有两个:一是文本没有上下文特征,无法解决一词多义;二是Out of Vocabulary问题。针对这两个问题,学界和业界探索出了一系列解决办法,下面具体介绍。

2.2 Contextual Embeddings

为了解决一词多义,让word embedding拥有上下文特征,通常使用一个encoder来提取word的上下文特征:

是针对当前任务的特征提取函数。如果要提取单段文本特征,通常是让token看到左右tokens的信息,常见的特征提取方式有CNN,RNN,Attention。如果要提取文本pair的特征,通常还要看到交互信息,典型的做法有双塔模型,比如短文本匹配的典型范例:DSSM, ESIM, ABCNN, DIIN等。

2.3 Subword算法

为了解决OOV问题,降低Vocabulary的大小,刻画相关tokens的内在联系(比如:前后缀,时态,形容词的比较级、最高级等),subwords分词算法逐渐成为NLP任务中分词器(tokenizer)的标配:

1. Word hashing(n-gram)

比如,good 用trigrams编码,那么结果是[#go, goo, ood, od#]

1. Byte pair encoding (BPE, 1999)

2. WordPiece(2012)

BPE和WordPiece已经成为预训练模型的标准分词器了,读者自行查阅相关文献,这里便不再赘述。

03

OverView

3.1 PLTM Structure

下文会剖析Pre-trained Model的结构,将之拆分为不同的基本单元,讨论每个基本单元的代表成果及单元设计背后的Motivation。我们可以从如下四个角度来看预训练模型:

1. 用什么去学习?(What Model)

2. 学习什么样的知识?(What Knowledge)

3. 怎么去学习这些知识?(How to Learn, What tasks)

4. 怎么去应用学习到的知识?(How to Apply)

不支持在 Docs 外粘贴 block

3.2 Feature Extractor

Transformer的地位类似于CNN,RNN,是NLP中的一种特征编码器。现在的预训练模型都是采用transformer的encoder或decoder作为编码器。打个比方,特征编码器类似于一个人的智商,而transformer就是其中的佼佼者,决定了目前NLP模型学习能力的上限,下一次NLP的突破必将伴随着更加强大的特征编码器。

Transformer 基本结构 :

3.3 Abstract Knowledge

在传统的机器学习中,数据即知识,比如(X,y)都是数值型的变量,省去了编码这一步。在NLP任务中,我们需要从文本中抽取知识(Knowledge),再将知识表示为模型可以学习的形式。

Knowledge是我们对NLP领域基础知识的总结,决定了模型的知识面,就像语文、数学、物理等学科一样。NLP领域的常见知识有共现(cooccurrence)、词汇(vocabulary)、句法(syntactic)和语义(Sematic)等。cooccurrence, 指的是哪些单词经常一起出现。Syntactic,也就是句法,指的是语言的结构,简单说就是名词、动词、形容词、介词、副词等在一句话中的位置及约束关系。光有句法还不行,结构正确的句子不一定有意义, semantic, 也就是语义,指的是语言表达的意义要正确。

举个例子:The weather is an apple. 从syntactic上来说,这句话没有错,主谓宾齐全,但是sematic上来说是错的,weather 怎么能是apple呢。

有了syntactic knowledge,模型可以说一句通顺的话;有了sematic knowledge,就可以说出一句正确的话;有了vocabulary Knowledge,说的话更像人话。

从学习知识的形式上讲可以分为:token级别、sentence级别、document级别的知识。从学习目标上讲有单词、句法、语义的知识。

3.4 Concrete Pre-training Tasks

Knowledge是抽象的,看不见摸不着的;Pre-training Tasks是具体的学习的任务,是具象的,可感知的。Pre-training Tasks设计的好不好就像教材编写的好不好一样,会影响模型学习的速度和准确度。 当我们谈PTLM的时候,其实主要在谈预训练任务是怎样设计的。由于需要大规模的训练语料,预训练任务一般是无监的。其代表代表是Masked Language Modeling和Causal Language Modeling,将在第四章具体介绍。预训练任务是抽象知识的具象化表达,而模型是学习这种具象化知识的工具。

3.5 Application Tasks

预训练模型是无监督的,我们通过在下游任务中使用预训练模型的输出来训练一个有监督模型,从而衡量预训练模型的好坏或者将模型部署到实际生产中。预训练模型的下游应用包括Text Generation,Sequence Classification,Named Entity Recognition,Extractive Question Answering,Summarization,Translation等。

Text Generation

在文本生成(即开放式文本生成)中,目标是创建一个连贯的文本部分,它是给定上下文的延续。

Sequence Classification:序列分类是对文本序列进行分类的任务。比如一句话的情感是正向还是负向,两句话是不是同一个意思等。

Named Entity Recognition :命名实体识别(NER)从文本中识别出一个人、一个组织或一个位置。

Extractive Question Answering :提取性QA就是从给定问题的文本中提取答案。

Summarization :摘要是把一篇文章总结成更短的文本。

Translation :翻译就是把文本从一种语言翻译成另一种语言。

04

Pre-trained Language Model

4.1 Taxonomy of Pre-training Tasks

本章主要介绍预训练任务和预训练模型。预训练模型包括两大类:一类是自回归语言模型(AutoRegression Language Model), 也称因果语言建模(Causal Language Modeling)。一类是自编码语言模型(AutoEncoder Language Model),也称掩码语言建模(Masked Language Modeling)。

Causal Language Modeling(LM)

NLP中最常见的无监督任务是概率语言建模(LM),这是一个经典的概率密度估计问题。尽管LM是一个通用概念,但在实践中,LM通常特别指代自回归LM或单向LM。将在AutoRegression Model部分具体介绍。因果语言建模是预测一系列tokens之后的token的任务。在这种情况下,模型只关注左侧上下文(掩码左侧的标记)。这种训练对于生成任务尤其有用。

Masked Language Modeling(MLM)

掩码语言建模的任务是用[MASK]按序列屏蔽部分tokens,并使用模型预测被mask的token。这允许模型同时处理被mask的token左右上下文。MLM实际上是一个完形填空任务,根据被mask的token的周围的tokens恢复出被mask的token。根据被mask的token的形式可以分为:Single word masking, phrase making,random span masking,entity masking,whole word masking,将在AutoEncoder LM部分具体分析。

Contrastive Learning(CTL)

CTL背后的想法是“比较学习”。与LM相比,CTL通常具有较低的计算复杂性,因此是PTM的理想替代训练准则。Word2Vec中的negative sampling就是一种Noise-Contrastive Estimation (NCE) 方法。最近提出的基于CTL的预训练任务有:

Replaced token detection: ELECTRA的预训练任务之一。BERT是随机选的15%的MASK,有些token预测会比较简单,有些会比较难,那么利用一个MLM任务的Generator先过滤掉一些简单的mask,剩下的都是相对比较难学习的,这是一种非常好的自动选择masked tokens的方法。ELECTRA把生成式的Masked language model(MLM)预训练任务改成了判别式的Replaced token detection(RTD)任务,判断当前token是否被语言模型替换过。生成器的训练目标还是MLM,判别器的目标是二分类问题,两者同时训练,其目标函数为:

Next Sentence Prediction:BERT的预训练任务之一。

Sentence Order Prediction:ALBERT的预训练任务之一。

4.2 AutoRegression Model

AR语言模型是利用上下文单词预测目标单词的一种模型。但是在这里,上下文单词被限制在两个方向,要么向前,要么向后。

考虑文本序列

,其联合概率分布可以表示为:

其中

表示文本序列的开始。假设条件概率可以通过参数化表示(一般是某种深度学习模型),从而我们的学习目标是:

可以通过极大似然估计(MLE)优化如上目标函数。

代表模型:ELMo/GPT1.0/GPT2.0/XLNet

Methods

根据回归的方向可以分为三类方法:

  1. 单向语言模型(Unidirectional LM)
  2. 双向语言模型(Bidirectional LM)
  3. 序列到序列语言模型(sequence-to-sequence)

ELMO双向使用LSTM作为encoder,GPT单向使用transformer的decoder作为encoder,XLNET双向使用 transformer的decoder作为encoder。

Pros and Cons

优点:该类模型对文本序列联合概率估计进行建模,使得该模型更适用于一些生成类的NLP任务。因为这些任务在生成内容的时候就是从左到右的,这和自回归的模式天然匹配。

缺点:联合概率是按照文本序列从左至右进行计算的,因此无法同时得到包含上下文信息的双向特征表征。即使是Bidirectional LM,也只是拼接双向信息。

4.3 AutoEncoder Language Model

自编码语言模型通过随机mask掉一些单词,在训练过程中根据上下文对这些单词进行预测,使预测概率最大化,即:

其中

表示

是否被mask,

表示

能看见的其他tokens。现在的MLM用的基本都是 transformer 的 encoder 作为特征提取器。

MLM可以看成去噪自编码模型(Denoising Autoencoders),加入的 [MASK] 即为噪声,模型对 [MASK] 进行预测即为去噪。

Methods

各种预训练模型的MLM的主要差异在于Mask的方式不同:

BERT:

BERT随机mask 15%的token,对于这些token,再进行如下操作:

  • 80%:[MASK]
  • 10%:unchanged
  • 10%:random replace

ERNIE:

论文地址:ERNIE: Enhanced Representation through Knowledge Integration

将BERT中的随机masking改为实体或短语级别(entity or phrase)的masking(引入知识,Knowledge Integration),使得模型能够从中学习到更多句法语义知识,在许多中文任务上取得SOTA。

Whole Word Masking:

Pros and Cons

优点:能够利用上下文信息得到双向特征表示,擅长cloz任务和阅读理解。

缺点:BERT的MLM的任务,其引入了独立性假设,即每个 [MASK] 之间是相互独立的,这使得该模型是对语言模型的联合概率的有偏估计。但这个缺点在ERNIE和WWH提出后有所缓解。

另外,由于预训练中 [MASK] 的存在,使得模型预训练阶段的数据与微调阶段的不匹配,使其难以直接用于生成任务。

4.4 Integrate AE and AR

AE和AR模型各有优缺点,如何统一两者的优点,下面介绍两篇有代表性的工作。

Unified LM

一个新的预训练语言模型(UniLM),统一了AR模型和AE模型的任务,既可以应用于自然语言理解(NLU)任务,又可以应用于自然语言生成(NLG)任务。UniLM模型的框架与BERT一致,是由一个多层Transformer网络构成,但训练方式不同,它是通过联合训练三种任务目标函数来训练模型的:

UniLM模型通过三种不同目标函数的语言模型,共同优化同一个Transformer网络。为了控制对将要预测的token可见到的上下文(这是三种目标函数的根本不同),作者使用了不同的self-attention mask来实现:

单向语言模型:分为从左到右和从右向左两种,从左到右,即仅通过被掩蔽token的左侧所有本文来预测被掩蔽的token;从右到左,则是仅通过被掩蔽token的右侧所有本文来预测被掩蔽的token。

双向语言模型:与BERT模型一致,在预测被掩蔽token时,可以观察到所有的token。

序列到序列语言模型:如果被掩蔽token在第一个文本序列中,那么仅可以使用第一个文本序列中所有token,不能使用第二个文本序列的任何信息;如果被掩蔽token在第二个文本序列中,那么使用一个文本序列中所有token和第二个文本序列中被掩蔽token的左侧所有token预测被掩蔽token。

XLNET

AR语言模型只能使用前向或后向的上下文,如何让它学习双向上下文呢?XLNET提出了一个新的优化目标——重排列语言建模。XLNET通过重排列使用双向信息,但同时避免了AE模型中MASK方法带来的弊端。XLNET使用transformer的encoder作为encoder。

Architecture:

Pros:

(1)通过极大化重排列的采样的极大似然,可以学习文本双向的上下文信息。

(2) 由于是自回归形式,克服了BERT引入mask导致的上下文分布不一致。

05

Transformer

机器学习有一个很朴实的想法:预测

的值,那就在训练集

中寻找与

相似的样本,再把这些相似样本的值加权作为预测值。但这里有两个问题:

  1. 如何度量样本之间的相似性?
  2. 如何加权?

我们看看transformer是怎么做的:

可以看到,Attention操作实际上是一种加权平均(也可以说成平滑、卷积),其中softmax就是度量相似度的函数。

5.1 Comparison with RNN, CNN

  1. Transformer 是可并行的(parallelization);RNN每个time step的计算依赖于上一个time step的计算结果,很难并行化,在参数量大的时候训练特别慢。
  2. 长文本依赖一直是RNN的难点,虽然从LSTM到GRU一定程度上缓解了这个问题,但并不算一种彻底的解决方案。transformer引入位置编码,在长文本依赖上更优雅,效果更好。
  3. RNN不能在看到双向信息的同时堆叠多层,不然会造成信息泄露;transformer能看到双向信息,可以堆叠多层,拟合能力更强。
  4. Multi-Heads类似于CNN的多个filters

5.2 Interpretability(Intuition)

相关文献表示:

  1. Transformer不同层的关注点不同,浅层更加关注语法,深层更加关注语义。
  2. 相同层的Multi-Heads关注点比较一致。
  3. Multi-Heads之间的差距随着所在层数变大而减少。

5.3 Position Encoding

这里主要引用苏神的博客:让研究人员绞尽脑汁的Transformer位置编码 - 科学空间|Scientific Spaces

5.4 Attention Complexity

标准的Attention:

。可以看到

的计算复杂度为

, 这便是transformer计算瓶颈所在,能否简化attention计算直接决定了能否在线上大规模部署预训练模型。学者们从两个方面探索了降低attention计算的复杂度的方法:稀疏注意力(Sparse attention)和attention计算线性化(Linear attention)。

5.4.1 Sparse attention

Longforme

Local attention(局部注意力)和Atrous attention(空洞卷积)是稀疏注意力最直接的两种方式,这也是CNN中的典型做法。

Local attention:只关注当前token的近邻tokens;Atrous attention按照一定间隔关注远处的tokens。Longformer就是通过这两种方式降低attention计算的复杂度,其优点是计算复杂度低,但可能忽略重要的tokens。

Reformer

中,只有矩阵

的最大元素(在softmax维度中)才有作用。因此,对于Q中的每个查询q,我们只考虑K中接近q的键k。可以使用哈希函数确定q和k是否接近。由于哈希值可能是随机的,因此在实践中常常使用了多个哈希函数,然后将它们平均在一起。Refomer 就是通过LSH(Locality Sensitive Hashing)技术(近似地)快速地找到最大的若干个Attention值。

5.4.2 Linear Attention

Kernel function

其中

是一种推广,即softmax可以看成某个希尔伯特再生核空间中的内积,可以将softmax推广为其他核函数。其中

是一个非线性函数,比如常用的激活函数Relu,softmax。

根据乘法结合律,先计算第二项和第三项小矩阵的乘积,再计算和第一项的乘积,从而大大减少了计算量。

Linformer

将K, V投影到低维空间空间中去:

Performer

Idea: 将softmax的非线性运算近似为向量内积,从而根据乘法结合律,先计算后两项的乘积来减少计算量。

Derivation:

视为一个整体,对最后一项做傅里叶变换和逆变换可得:

从而:

采样

个点做近似:

从而令:

便得到:

借助如上近似,我们就可以将两个

维向量的内积的指数,转化为了两个

维向量的内积。再采用乘法结合律,运算量从

降到

,即:

5.5 Model Compression

5.5.1 AlBert

模型改进:

1. Embedding Factorization : 在BERT中,词embedding与encoder输出维度都是768。但是ALBERT认为,词级别的embedding是没有上下文依赖的表述,而隐藏层的输出值不仅包括了词的意思还包括一些上下文信息,包含的信息应该更多一些,因此应该让H>>E,所以ALBERT的词向量的维度是小于encoder输出值维度的。参数量从V * H降低到 V*E E*H。

2. Cross-layer parameter sharing :在ALBERT还提出了一种参数共享的方法,Transformer中共享参数有两种方案,共享attention层或全连接层。ALBERT全连接层与attention层都进行参数共享。这样做有两个好处,一防止了过拟合,二减少了参数量,提升了训练速度。同样量级下的Transformer采用该方案后实际上效果是有下降的。

remark: Albert降低了模型的参数量,但没有减少计算量。

5.5.2 Knowledge Distillation

Hinton的文章Distilling the Knowledge in a Neural Network 首次提出了知识蒸馏(Knowledge Distillation)的学习学习,通过引入与教师网络(teacher network:复杂、但推理性能优越)相关的软目标(soft-target)作为total loss的一部分,以帮助学生网络(student network:精简、低复杂度)的训练,实现知识迁移(knowledge transfer)[参考 ]。蒸馏主要包含输出层蒸馏和中间层蒸馏。

DistilBERT

主要在输出层蒸馏teacher网络的知识。

TinyBert

Tinybert的创新点在于学习了Teacher Bert中更多的层数的特征表示,蒸馏的特征表示包括:词向量层的输出 , Transformer layer的输出以及注意力矩阵 , 预测层输出。

06

Conclusion

本文梳理了预训练模型在NLP中的发展历程,包括背景知识、预训练模型结构、任务设计。此外,本文对预训练模型的特征编码器transformer做一个基本的介绍,涉及transformer和CNN、RNN等其他特征编码器的对比,如何进行位置编码,如何降低attention的计算复杂度,如何压缩基于transformer的预训练模型等。

Reference :

代码语言:javascript复制
https://drive.google.com/file/d/1tAC5T1HLDPHPXY4BoIq5sM3iokQH3p7Z/view
https://www.jmlr.org/papers/volume3/tmp/bengio03a.pdf
https://arxiv.org/pdf/1310.4546.pdf
https://arxiv.org/pdf/1405.4053.pdf
https://arxiv.org/pdf/1506.06726.pdf
https://arxiv.org/pdf/1803.02893.pdf
https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.46.4046&rep=rep1&type=pdf
https://storage.googleapis.com/pub-tools-public-publication-data/pdf/37842.pdf
http://jalammar.github.io/illustrated-transformer/
https://arxiv.org/pdf/1904.09223.pdf
https://kexue.fm/archives/8130
https://arxiv.org/pdf/1503.02531.pdf
https://blog.csdn.net/nature553863/article/details/80568658
https://arxiv.org/pdf/2003.08271.pdf
https://arxiv.org/pdf/2009.06732.pdf
https://huggingface.co/transformers/
https://kexue.fm/category/Big-Data
https://zhuanlan.zhihu.com/p/50443871

0 人点赞