NLP预训练语言模型(三):逐步解析Transformer结构

作者&投稿:博冰 (若有异议请与网页底部的电邮联系)
~ Transformer是近两三年非常火的一种适用于NLP领域的一种模型,本质上是Encoder-Decoder结构,所以多应用在机器翻译(输入一个句子输出一个句子)、语音识别(输入语音输出文字)、问答系统等领域。本文基于Attention is all you need这篇论文,讲解Transformer的结构,涉及到的图片均为论文中或经典图片,参数值均来自论文,具体问题可以具体调整超参数。

Transformer的组成模块分为: Attention (包括multi-head self-Attention & context-Attention), Normalization (使用的是layer Norm,区别于Batch Norm), mask (padding mask & sequence mask), positional encoding , feed forword network (FFN)。

Transformer的总架构如下图所示:

这是典型的Transformer结构,简单来说,Transformer = 预训练(input) + Encoder*N + 预训练(output) + Decoder*N+output。

模型的运行步骤为:

① 对Input做Embedding,可以使用Word2Vec等工具,维度为512维,Embedding过后结合positional encoding,它记录了输入单词的位置信息。

② 预处理后的输入向量经过多头Attention层处理,加入残差、规则化,数据给到FFN(全连接层),再加入残差、规则化。如此反复,经过6个这样的Encoder(即Nx=6x),编码部分结束。

③ 编码部分的第一个Decoder的第一个Attention接受的是来自Outputs的信息,其余的均接受来自Encoder和上一层Decoder的信息。最终的output的串行生成的,每生成一个,就放到Decoder最下面的outputs座位Decoder的输入。

④ Decoder也是6个,最终的输出要经过线性层和Softmax得到最终输出。

要注意的是,Encoder和Decoder的结构是相同的,但不共享权重;在Encoder部分,每个单词在Attention层的路径具有依赖关系,串行执行,在FFN层不具有依赖关系,并行执行。

在这个结构中,存在这样几个Attention,有:self-attention & context attention & scaled dot-product attention & multi-headed attention。要说明的是scaled dot-product attention和multi-headed attention是两种attention的计算方法,后面会介绍,前两个Attention均使用的是这两种计算方法。

这种Attention的计算公式为:

以第一个Encoder为例对流程解释如下:

① 为Encoder的每个单词创建如下的三个向量:Query vector , Key vector , Value vector。这三个向量由输入的Embedding乘以三个向量矩阵得到。要注意的是,Embedding向量维度为512,Q K V向量维度是64。

② 计算Score:对于每个词,计算它自身的 与所有的 的乘积。

③ 计算Attention:按上面Attention的公式,将Score除以一个定值(这个操作称为“scaled”),进行Softmax变换,使所有Score之和为1。最后乘以对应位置的 ,得到该单词的Attention。

这就是scaled dot-product attention这种机制的计算方法,Transformer架构中的两种Attention都使用的是这种计算方法,不同的是二者的Q K V的来源有些差异。

注 : 为什么Softmax中要除以一个根号? 论文中给出的原因 是本来 和 都是均值为0、方差为1的变量,假设二者分布相互独立,他们乘积的分布就是均值为0、方差为 ,除以根号使得Softmax内的值保持均值为0、方差为1利于梯度计算。如果不加根号会使得计算收敛很慢,因为Softmax中的值处于梯度消失区。

进一步思考: 为什么很多Attention中没有Scaled这一步? Attention分为两种,前面那种是乘法,还有加法的一种: 。实验表明,加法虽然看起来简单但计算起来并没有快多少(tanh相当于一个完整的隐层),在维度较高时确实更好,但如果加上Scaled也差不多。Transformer中选择乘法是为了计算更快,维度大的话就加上Scaled。

多头注意力机制也是一种处理的技巧,主要提高了Attention层的性能。因为上面介绍的self-attention虽然包含了其余位置的编码,但主导的还是自身位置的单词,而有时我们更需要关注其他位置,比如机器翻译中的代词具体指代哪个主语。

多头注意力机制是把Q K V三个矩阵通过h个线性变换投影,然后进行h次self-attention的计算,最后再把h个计算结果拼接起来。

在Encoder的self-attention中,Q K V均是上一层Encoder的输出,对于第一个Encoder来说,他们就是输入的Embedding与positional encoding之和。

在Decoder的self-attention中,Q K V也是上一层Decoder的输出,对于第一个Decoder来说,他们是输入的Embedding与positional encoding之和。要注意的是,这部分我们不希望获取到后面时刻的数据,只想考虑已经预测出来的信息,所以要进行sequence masking(后面讲到)。

在Encoder-Decoder attention(即context attention)中,Q是Decoder上一层的输出,K V是Encoder的输出。

Transformer中使用的是LN,并非BN(Batch Normalization)。什么是Norm规范化,一般地,可以用下面公式来表达:

公式一为规范化处理前,公式二为处理后。规范化是对数据分布的调整,比如本身数据是正态分布,调整后的数据分布就是标准正态分布,相当于调整了均值和方差。这样做的意义一是让激活值落入激活函数敏感区间,梯度更新变大,训练加快,二是消除极端值,提升训练稳定性。

Transformer使用的是LN,而不是BN。首先看二者的区别如图:

LN是对每个样本自身进行规范化,BN是对一个批次的数据在同一维度上规范化,是跨样本的。在CNN任务中,BatchSize较大,并且训练时全局记录了样本均值和方差,适用于BN。而时序问题中,对每个神经元进行统计是不现实的。LN的限制相对来说就小很多,即时BatchSize=1也无妨。

mask分为两种,一是padding mask,二是sequence mask,这两种在Transformer中出现的位置不同:padding mask在所有scaled dot-product attention中均出现,sequence mask仅在decoder的self-attention中出现。

由于每个batch的输入序列的长度不同,padding mask被用来对齐序列长度,简单来说就是短序列向长序列对齐,对齐的方法就是补0。补充上的地方是没有意义的,那么Attention就不应该给以关注。实际上,我们并不是直接在相应位置上补充0,而是补充-inf(负无穷),这样在Softmax之后,这些位置的概率就接近0了。

在处理过程中,padding mask是一个bool张量,false的地方就是补0的地方。

前面提到,sequence mask的作用是不让decoder看到当前时刻以后的信息,所以要把后面那部分信息完全遮盖住。具体的做法是,产生一个上三角矩阵,上三角的值均为1,下三角和对角线均为0。

在decoder的self-attention部分,sequence mask 和 padding mask同时作用,二者相加作为mask。

RNN处理序列问题是天然有序的,而Transformer消除了这种时序上的依赖。以机器翻译为例,输出要是一个完整的合理的句子,就需要对输入数据处理时加入位置信息,否则可能输出结果的每个字是对的,但组成不了一句话。positional encoding是对输入信息的位置进行编码,再和输入的Embedding相加。

positional encoding使用的是正余弦编码:

在偶数位置,使用公式一正弦编码,奇数位置使用公式二余弦编码。由于正余弦函数的特性,这种编码既是绝对位置编码,也包含了相对位置编码的信息。

相对位置编码信息主要依赖于三角函数和角公式:

FFN 是一个全连接网络,顺序上先线性变换,再ReLU非线性变换,再线性变换,公式如下:

参考文献:

[整理] 聊聊 Transformer

碎碎念:Transformer的细枝末节

图解什么是 Transformer

文本分类实战(八)—— Transformer模型

深度学习:transformer模型


ai中的llm是什么
ai中的llm是大语言模型,相关内容如下: 大语言模型(GPT,Generative Pre-trained Transformer)是一种基于深度学习的自然语言处理技术,用于生成和理解文本。 1.大语言模型的定义: 大语言模型是指基于深度神经网络的自然语言处理模型,通过对大规模文本数据进行预训练,并利用预训练模型来生成、理解和处理自然语言文本。它通...

中科创大有那些预训练模型
语言模型、机械模型。根据2023年中科创大公司官网发布的公告得知,该公司在2023年共有两种预训练的模型,分别为语言模型、机械模型,预计训练时间在2023年6月14日。中科创大教育科技有限公司,成立于2020年,位于福建省厦门市,是一家以从事教育为主的企业。

Prompt-NLP新范式
另一方面也给样本量极度缺乏的 少样本领域(zero\/few-shot) 带来了福音。这种依靠 提示信息(Prompt) 来激发模型的内在潜能,挖掘模型在大规模预训练阶段学到的知识的做法引领了NLP领域的第四范式。人们逐渐开始思考如何更加 高效地利用 预训练语言模型的大量参数,如何将各种下游任务都统一到一个 通用框架 ...

语言模型
深度学习的飞跃:ELMo与BERT ELMo(2018)由AllenAI提出,通过深度上下文化解决了多义词的困扰,通过双向语言模型和动态适应性,捕捉语法和语义的细微差别。BERT(2018)和GPT(2018)同样采用Transformer架构,但BERT的预训练和微调策略使其在NLU任务中表现出色,与GPT-2和ERNIE系列模型的对比引人关注。这些...

05-ELMo\/BERT\/GPT-NLP预训练模型
它是基于RNN的预训练模型,它只需要搜集大量语料(句子)且不需要做任何标注,就可以训练这个基于RNN的语言模型,预测下一个token是什么,学习完了之后就得到了上下文的embedding。因为我们可以将RNN的隐藏层中的某一节点拿出来(图中橙蓝色节点),它就是输入当前结点的词汇的word embedding。 从当计算识别到<BOS>,模型训练...

清华大学通用预训练模型:GLM
也为推动语言模型的进一步发展奠定了坚实的基础。深入探索与未来趋势 进一步的研究将继续探讨GLM的组件如何影响模型在SuperGLUE等基准上的表现,以及如何通过优化设计来提升其在特定任务中的性能。GLM的潜力和创新预示着一个更加开放和高效的预训练语言模型新时代的来临。

gpts语言模型什么意思?
gpts是OpenAI推出的自定义GPT。GPT-S(Generative Pre-trained Transformer)是一种基于Transformer架构的预训练语言模型。它是OpenAI公司开发的,以生成自然语言文本为目的。GPT-S模型在训练时使用了大量的文本数据,这使得它能够理解和生成复杂的语言结构,包括长句子和段落。GPT-S模型具有很强的生成能力和...

现在很多做AI语音的厂商都在说NLP,NLP和传统关键词的区别究竟是什么...
此次发布的NLP2.0系统,最核心的亮点,一知智能在杭州人工智能计算中心与升腾生态软硬件进行调优,结合浙大·一知人工智能联合研究中心,共同提出了在泛消费领域的专用大规模预训练语言模型“EAZI”。在基于数百G级别涵盖消费领域信息的互联网网‌页、论坛、微博、新闻等形式的高质‌量‌语料...

AI干货分享:PaddlePaddle官方九大NLP模型盘点
Paddle提供了基于PennTreeBank(PTB)数据集的经典循环神经网络LSTM语言模型实现,通过学习训练数据中的序列关系,可以预测一个句子出现的的概率。Paddle也提供了基于PennTreeBank(PTB)数据集的经典循环神经网络GRU语言模型实现,在LSTM模型基础上做了一些简化,保持效果基本持平的前提下,模型参数更少、速度更快。Github链接:...

目前国内使用频率比较高的大语言模型
目前国内使用频率较高的大语言模型主要有几款,其中包括百度开发的文心一言,这款模型基于GLM-130B模型,针对中文的预训练语言模型,具备跨模态、跨语言的深度语义理解与生成能力,适用于搜索问答、内容创作生成、智能办公等众多领域。此外,天工AI搜索,由昆仑万维与奇点智源联合研发,作为中国版本的New Bing...

莲花县15015547308: NLP检定语言模式中的3大类怎样化解,目的是什么?
百毅环磷: 12语式都是些局限信念,思维死角或者表达很模糊的东东.1、扭曲类.化解:还原真实.2、归纳类.化解:找出例外.3、删减类.明确思考,还原具体

莲花县15015547308: NLP思维逻辑层次的“理解层次”是什么 -
百毅环磷: 理解层次早期被称为Neuro-Logical Levels,最初由格雷戈里·贝特森发展出来,后由罗伯特·迪尔茨(Robert Dilts)整理,在1991年推出.理解层次(见图6一1)是一套模式(Pattern),因为它可以用来解释社会上出现的很多事情.理解层次...

莲花县15015547308: 词性标注(关于词性标注的基本详情介绍)
百毅环磷: 1、词性标注(Part-Of-Speech tagging, POS tagging)也被称为语法标注(grammatical tagging)或词类消疑(word-category disambiguation),是语料库语言学(corpus...

莲花县15015547308: NLP技巧是什么东西 -
百毅环磷: 检定语言模式,是NLP的重要技巧之一.也是一套训练人对语言的分析能力和对思维的引导能力的方法和技巧.一般来说,我喜欢叫它“澄清法”.很多人看书学习这个技巧,看了好久,仍然不得要领,就算是学习NLP执行师班,也要花上大...

莲花县15015547308: 如何学习NLP? -
百毅环磷: 先学习NLP前提预设吧!这是NLP的精神所在.你每天去运用去思考这些预设,用不了3~5年你就会成为NLP大师,所有NLP都是有此发展而来的.理解层次和检定语言也要反复练习.其实NLP就是用语言改变信念的技巧.换框法作用就很明显了

莲花县15015547308: 黑茶的功效? -
百毅环磷: 黑茶属于后发酵茶,是我国特有的茶类,生产历史悠久,以制成紧压茶边销为主,主要产于湖南的安化县、湖北、四川、云南、广西等地.主要品种有安化黑茶、湖北佬扁茶、四川边茶、广西六堡散茶,云南普洱茶等.其中云南普洱茶古今中外...

莲花县15015547308: nlp在沟通方面的解释?上推下切平移具体怎么应用? -
百毅环磷: 在语言沟通中,我们经常会把交谈的方向引导向三个方面:一是弄清楚对方话语的意思,或者在说过的内容里面把焦点调细,把其中的部分放大,就像用小钳把内容的一些资料捡出来,这样的技巧叫做“下切”(chunk---down),NLP的检定语言模...

莲花县15015547308: nlp是什么东西? -
百毅环磷: NLP是“神经语言程式学“的英文缩写,即“NEURO LINGUISTIC PROGRAMMING” Neuro意为神经,指我们的神经系统.人类的所有行为都是神经的反应过程.因为人类是以五种感官-----视、听、触、味、嗅与世界建立联系,进行信息沟通...

莲花县15015547308: 毒辣NLP中有哪种语言模式和技巧? -
百毅环磷: 同步引导,反面指令,含义装置,隐晦命令,毒辣版心锚,亲和力,价值观引出,言谈模仿,催眠故事, 普遍经验,假设布局成交,电眼神功,超级影响话题方程式,时间扭曲,观察力,ABCD求证法,思想形态认证,解读线索.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网