人工智能的三个层次:计算功能:数据存储和计算能力,机器远胜于人类。知觉功能:视觉、听觉等能力。机器在语音识别和图像识别领域已经可以与人类相媲美。认知智能:自然语言处理、常识建模和推理等任务,机器还有很长的路要走。自然语言处理属于认知智能范畴。由于自然语言具有抽象性、组合性、歧义性、知识性、演化性等特点,给机器处理带来了巨大的挑战。有人将自然语言处理称为人工智能。皇冠上的宝石。近年来,以BERT为代表的预训练语言模型应运而生,将自然语言处理带入了一个新时代:预训练语言模型+针对特定任务的微调。本文试图对自然语言预训练技术的演进进行梳理,以期与大家交流学习,希望批评指正不足和谬误。1.远古时代-词表示1.1One-hotEncoding使用词汇表大小的向量来表示一个词,其中词对应位置的值为1,其余位置为0。缺点:高维稀疏性不能表示语义相似度:两个同义词的One-hot向量相似度为01.2分布式表示分布式语义假设:相似的词有相似的上下文,词的语义可以用上下文表示。基于这个思想,可以用每个词的上下文分布来表示词。1.2.1词频表示基于语料库,利用词的上下文构建共现频率表。词表的每一行代表一个词的向量表示。通过不同的语境选择可以捕捉到不同的语言信息。例如,使用句子中单词周围的固定窗口中的单词作为上下文,将捕获单词的更多局部信息:词汇和句法信息。如果将文档用作上下文,More将捕获由单词表示的主题信息。缺点:高频词问题。无法反映高阶关系:(A,B)(B,C)(C,D)!=>(A,D)。仍然存在稀疏性问题。1.2.2TF-IDF是指将词频表示中的值替换为TF-IDF,主要缓解词频表示中高频词的问题。1.2.3点互信息表示也是为了缓解词频表示的高频词问题,将词频表示中的值替换为词的点互信息:1.2.4LSA进行奇异值分解(SVD)在词频矩阵上),可以得到每个词的低维、连续、稠密的向量表示,可以认为代表了词的潜在语义。这种方法也称为潜在语义分析(LSA)。LSA缓解了高频词、高阶关系、稀疏性等问题。它在传统的机器学习算法中效果很好,但也存在一些缺点:当词汇量很大时,SVD的速度相对较慢。追赶新人是不可能的。当语料发生变化或增加新的语料时,需要重新训练。2.现代——静态词向量文本的有序性和词间的共现关系为自然语言处理提供了自然的自监督学习信号,使系统无需额外的人工标注即可从文本中学习知识。2.1Word2Vec2.1.1CBOWCBOW(ContinousBag-of-Words)利用上下文(窗口)预测目标词,对上下文词的词向量取算术平均,进而预测目标词的概率。2.1.2Skip-gramSkip-gram通过单词预测上下文。2.2GloVeGloVe(GlobalVectorsforWordRepresentation)利用词向量预测词的共现矩阵,实现隐式矩阵分解。先根据词的上下文窗口构造一个距离加权的共现矩阵X,然后用词的向量和上下文去拟合共现矩阵X:损失函数为:2.3小结的学习词向量利用了语料库中词与词的共现信息,底层思想仍然是分布式语义假设。无论是基于局部上下文的Word2Vec,还是基于显式全局共现信息的GloVe,本质都是将一个词在整个语料库中的共现上下文信息聚合成词的向量表示,都取得了不错的效果.,训练速度也很快,但是劣势词的向量是静态的,即不具备随上下文变化的能力。3.现代-预训练语言模型自回归语言模型:根据序列历史计算单词在当前时刻的条件概率。自编码语言模型:从上下文中重建掩码词。表示掩码序列3.1Cornerstone-Transformer3.1.1注意力模型注意力模型可以理解为一种对向量序列进行加权的机制,以及权重的计算。3.1.2Multi-headself-attentionTransformer中使用的attention模型可以表示为:当Q、K、V来自同一个向量序列时,就成为self-attention模型。Multi-headself-attention:设置多组self-attention模型,将它们的输出向量拼接起来,通过线性映射映射到Transformer隐藏层的维度。多头自注意力模型可以理解为多个自注意力模型的集合。3.1.3位置编码由于self-attention模型不考虑输入向量的位置信息,但是位置信息对于序列建模至关重要。位置信息可以通过positionembedding或者positionencoding来引入,这在Transformer中使用。3.1.4其他此外,Transformer块中还使用了残差连接、LayerNormalization等技术。3.1.5优缺点优点:相对于RNN可??以建模更长距离的依赖关系,attention机制将词与词之间的距离降为1,使其对长序列数据的建模能力更强。与RNN相比,它可以更好地利用GPU的并行计算能力。表达能力强。缺点:与RNN参数相比,增加了训练难度,需要更多的训练数据。3.2自回归语言模型3.2.1ELMoELMo:EmbeddingsfromLanguageModels输入层可以直接对词使用wordembedding,也可以通过CNN或其他模型对词中的字符序列进行嵌入。模型结构ELMo通过LSTM独立建模前向和后向语言模型,前向语言模型:后向语言模型:优化目标最大化:下游应用ELMo训练完成后,可以得到以下向量用于下游任务。它是输入层得到的wordembedding,是将前后的输出拼接给LSTM的结果。在下游任务中使用时,可以对每一层向量进行加权,得到ELMo的向量表示,用一个权重对ELMo向量进行缩放。不同层级的隐层向量包含不同层次或粒度的文本信息:顶层编码更多的语义信息,底层编码更多的词汇和句法信息3.2.2GPT系列GPT-1模型结构GenerativePre-Training)是一种-way语言模型,使用12个transformer块结构作为解码器。每个transformerblock都是一个multi-headself-attention机制,然后通过全连接得到输出概率分布。U:wordone-hotvectorWe:wordvectormatrixWp:positionvectormatrixOptimizationobjectivemaximization:downstreamapplications在下游任务中,对于一个带标签的数据集,每个实例都有一个输入token:,由标签组成。首先,将这些token输入到训练好的预训练模型中,得到最终的特征向量。然后通过一个全连接层得到预测结果:下游监督任务的目标是最大化:为了防止灾难性遗忘问题,可以在微调损失中加入一定权重的预训练损失,通常是预训练损失。GPT-2GPT-2的核心思想总结如下:任何有监督任务都是语言模型的一个子集。当模型容量很大,数据量足够丰富时,其他有监督任务只需要训练语言模型就可以完成。学习任务。因此,GPT-2并没有在GPT-1网络上进行过多的结构创新和设计,只是使用了更多的网络参数和更大的数据集。目标是训练一个泛化能力更强的词向量模型。在8个语言模型任务中,仅仅通过零样本学习,GPT-2就有7个方法超越了当时的state-of-the-art(当然,有些任务仍然不如监督模型有效)。GPT-2最大的贡献在于验证了海量数据和大量参数训练的词向量模型无需额外训练即可迁移到其他类别的任务中。同时,GPT-2表明,随着模型容量和训练数据量(质量)的提升,其潜力仍有进一步发挥的空间。基于这个想法,GPT-3诞生了。GPT-3在模型结构上依然没有变化,但是增加了模型容量、训练数据量和质量,号称巨无霸,效果也非常好。总结从GPT-1到GPT-3,随着模型容量和训练数据量的增加,模型学到的语言知识越来越丰富,自然语言处理的范式逐渐从“预训练模型+微调”转变到“预训练模型+微调”。Trainingmodel+zero-shot/few-shotlearning”转换。GPT的缺点是使用了单向语言模型。BERT已经证明双向语言模型可以提高模型效果。3.2.3XLNetXLNet引入双向上下文通过PermutationLanguageModel获取信息,无需引入特殊标签,避免了预训练和微调阶段token分布不一致的问题。同时,使用Transformer-XL作为模型主体结构具有更好的PermutationLanguageModel置换语言模型的目标是:它是文本序列所有可能排列的集合。目的实现:通过Transformer的改造,在输入正常文本序列的情况下,实现排列语言模型:内容表示:信息查询表示包括:InformationContainedOnly方法使用预测词的位置信息。应用下游应用下游任务时,不需要queryrepresentation,也不需要mask。3.3自编码语言模型3.3.1BERT掩码语言模型掩码语言模型(maskedlanguagemodel,MLM)随机掩码一些词,然后利用上下文信息进行预测。MLM有一个问题,预训练和微调之间存在不匹配,因为[MASK]令牌在微调期间从未出现过。为了解决这个问题,BERT并不总是用实际的[MASK]令牌替换“掩码”词块令牌。训练数据生成器随机选择15%的标记,然后:80%的时间:用[MASK]标记替换它们。10%的概率:替换为词汇表中的随机标记。10%概率:token保持不变。在原生BERT中,token被屏蔽了,可以屏蔽整个单词或短语(N-Gram)。下一个句子预测下一个句子预测(NSP):选择句子A和B作为预训练样本时,B有50%的机会是B是A的下一个句子,并且有50%的机会是从该句子中随机句子语料库。输入层模型结构是经典的“预训练模型+微调”范式,主体结构是堆叠的多层Transformer。3.3.2RoBERTaRoBERTa(RobustlyOptimizedBERTPretrainingApproach)并没有对BERT进行大幅度的改进,只是对BERT的每一个设计细节进行了详细的实验,以寻找BERT的改进空间。动态掩码:原来的方法是在构建数据集时设置掩码并固定。改进后的方法是在每轮训练中将数据输入模型时进行随机masking,增加了数据的多样性。放弃NSP任务:实验表明,不使用NSP任务可以提高大多数任务的性能。更多的训练数据、更大的批次、更长的预训练步骤。更大的词汇量:使用SentencePiece的字节级BPE词汇表代替WordPiece的字符级BPE词汇表,几乎没有未注册的词。3.3.3ALBERTALBERT的参数数量比较多,ALBERT(ALiteBERT)的主要目标是减少参数:BERT的词向量维度与隐藏层相同,词向量是context-independent,而BERT的Transformer层需要并且能够学习到足够的Context信息,所以隐含层向量维数应该远大于词向量维数。增加性能时,不需要增加,因为词向量空间可能足以满足需要嵌入的信息量。解决方案:通过全连接层将词向量转化为H维。分解嵌入参数化。跨层参数共享:不同层的Transformer块共享参数。句序预测(SOP),学习细微的语义差异和语篇连贯性。3.4生成对抗-ELECTRAELECTRA(EfficientlyLearninganEncoderthatClassifiesTokenReplacementsAccurately)引入生成器和判别器模型,将生成式Maskedlanguagemodel(MLM)预训练任务改为判别式Replacedtokendetection(RTD)任务,进行判断当前的token是否已经被语言模型替换,这和GAN的思想类似。生成器预测输入文本中mask位置的token:判别器的输入是生成器的输出,判别器预测每个位置的词是否被替换:另外,做了一些优化:generator和discriminator分别是一个BERT,对generatorBERT参数进行缩放。词向量参数分解。Generatoranddiscriminatorparametersharing:输入层参数共享,包括词向量矩阵和位置向量矩阵。下游任务只用到了判别器,没有用到生成器。3.5长文本处理——Transformer-XLTransformer处理长文本的常用策略是将文本分成固定长度的块,每个块独立编码,块与块之间没有信息交互。为了优化长文本的建模,Transformer-XL使用了两种技术:Segment-LevelRecurrencewithStateReuse和RelativePositionalEncodings。3.5.1状态复用的块级循环Transformer-XL在训练时也是以定长片段的形式输入。不同的是,Transformer-XL前一个分片的状态会被缓存起来,然后在当前分片计算时重用上一个时间分片的隐藏层状态,从而赋予Transformer-XL建模更长期依赖关系的能力。长度为L的两个连续片段之和。隐藏层节点的状态表示为,其中d是隐藏层节点的维数。隐藏层节点状态的计算过程如下:片段递归的另一个好处是推理速度的提高。与Transformer的自回归架构一次只能推进一个时间片相比,Transformer-XL的推理过程直接复杂了。使用前一个片段的表示而不是从头开始计算,将推理过程提升为以片段为单位的推理。3.5.2相对位置编码在Transformer中,self-attention模型可以表示为:完整的表达是:Transformer的问题是无论有多少个片段,它们的位置编码都是一样的,也就是说位置Transformer的编码是相对于segment的绝对位置编码(absulatepositionencoding),与当前内容在原句中的相对位置无关。Transformer-XL在上述公式的基础上做了几处改动,得到了如下的计算方式:改动1:中间拆分成一个和,也就是说输入序列和位置码不再分享权重。Change2:In,absolutepositionencoding被relativepositionencoding代替Change3:引入两个新的可学习参数来替换Transformer中的查询向量。表示所有查询位置对应的查询位置向量相同。也就是说,无论查询位置如何,不同词的注意力偏差保持一致。改进后各部分含义:Content-basedcorrelation():计算query内容与key的关联信息Content-relatedpositionoffset():计算query内容与position的关联信息codeofthekeyGlobalcontentoffset():计算querypositioncode和keycontent的关联信息Globalpositionoffset():计算query和keypositioncodes的关联信息3.6蒸馏与压缩——DistillBert知识蒸馏技术(KnowledgeDistillation,KD):通常由教师模型和学生模型组成,将知识从教师模型迁移到学生模型,使学生模型尽可能接近教师模型。在实际应用中,往往要求学生模型比教师模型小,并基本保持原模型的效果。DistillBert的学生模型:六层BERT,同时去除了令牌类型向量(Token-typeEmbedding,或SegmentEmbedding)。使用教师模型的前六层进行初始化。仅使用掩码语言模型进行训练,不使用NSP任务。Teachermodel:BERT-base:Lossfunction:SupervisedMLMLoss:maskedlanguagemodel训练得到的cross-entropyloss:表示第th类的标签,表示student模型输出第th类的概率。DistilledMLMloss:以教师模型的概率作为引导信号,与学生模型的概率计算交叉熵损失:表示教师模型第th类的标签。词向量余弦损失:对齐教师模型和学生模型的隐层向量的方向,从隐层维度上缩短教师模型和学生模型的距离:并表示最后一层的隐层输出分别是教师模型和学生模型。最终loss:4.参考文献https://luweikxy.gitbook.io/machine-learning-notes/self-attention-and-transformerhttps://arxiv.org/pdf/1706.03762.pdfhttps://zhuanlan.zhihu.com/p/38130339https://zhuanlan.zhihu.com/p/184970999https://zhuanlan.zhihu.com/p/466841781https:///blog.csdn.net/Dream_Poem/article/details/122768058https://aclanthology.org/N18-1202.pdfhttps://zhuanlan.zhihu.com/p/350017443https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdfhttps://life-extension.github.io/2020/05/27/GPT技术初探/language-models.pdfhttps://arxiv.org/pdf/2005.14165.pdfhttp://www.4k8k.xyz/article/abc50319/108544357https://arxiv.org/pdf/1906.08237.pdfhttps://zhuanlan.zhihu.com/p/103201307https://arxiv.org/pdf/1810.04805.pdfhttps://zhuanlan.zhihu.com/p/51413773https://arxiv.org/pdf/1907.11692.pdfhttps://zhuanlan.zhihu.com/p/103205929https://arxiv.org/pdf/1909.11942.pdfhttps://arxiv.org/pdf/2003.10555.pdfhttps://segmentfault.com/a/1190000041107202https://arxiv.org/pdf/1910.01108.pdfhttps://zhuanlan.zhihu.com/p/271984518https://aclanthology.org/P19-1285.pdfhttps://github.com/ZenMoore/zenmoore.github.io/blob/master/_pdfs/%E3%80%8A%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86-%E5%9F%BA%E4%BA%8E%E9%A2%84%E8%AE%AD%E7%BB%83%E6%A8%A1%E5%9E%8B%E7%9A%84%E6%96%B9%E6%B3%95%E3%80%8B%E7%AC%94%E8%AE%B0.pdf
