赣州市网站开发公司,网页制作开版费,网站关键词挖掘,软件公司开发简要描述下列概念在大语言模型中的作用
Transformer 架构Attention 机制预训练与微调过拟合和欠拟合
Transformer 架构
Transformer是一种基于自注意力机制的深度学习模型#xff0c;它在论文“Attention Is All You Need”中首次提出。与此前流行的循环神经网络#xff0…简要描述下列概念在大语言模型中的作用
Transformer 架构Attention 机制预训练与微调过拟合和欠拟合
Transformer 架构
Transformer是一种基于自注意力机制的深度学习模型它在论文“Attention Is All You Need”中首次提出。与此前流行的循环神经网络RNN和长短期记忆网络LSTM相比具有并行处理能力强和能够捕捉长距离依赖的优势。
Transformer在NLP领域的大多数任务中如语言模型、机器翻译、文本摘要等都取得了明显的性能提升。核心组件包括
自注意力Self-Attention机制使模型能够在序列的不同位置之间建立直接的依赖关系无论它们在序列中的距离有多远从而更好地捕捉远距离依赖。多头注意力Multi-Head Attention并行地学习序列中不同位置的信息使模型可以从多个子空间中同时提取不同的特征增强模型的学习能力。位置编码Positional Encoding由于Transformer模型缺乏循环结构无法自然地利用序列顺序信息位置编码通过添加到输入中来为每个元素提供位置信号。编码器-解码器Encoder-Decoder架构编码器负责处理输入序列解码器用于生成输出序列。在编码器和解码器中都有多个相同的层叠结构每个层中都有自注意力和全连接网络。
Transformer在大语言模型中的作用
Transformer架构通过其创新性的设计在大型语言模型中提供了高效的并行计算、强大的上下文捕捉能力以及灵活的架构选择在大型语言模型中Transformer架构已经成为一个范式其主要作用有
提升并行化能力由于Transformer不依赖于序列中的先前状态模型在训练时能够高效地利用硬件架构尤其是GPU来进行大规模并行计算这大幅度提高了训练效率。强化长距离依赖捕捉能力自注意力机制能够直接捕获序列中任意两点之间的关系对于理解和生成长文本尤为重要使得大语言模型能够更好地理解复杂的上下文和语义信息。提供灵活的架构选择Transformer的编码器和解码器模块可以根据任务需要灵活组合。例如BERT模型只使用了编码器部分来理解文本而GPT系列模型则使用解码器以自回归方式生成文本。改善上下文表达能力利用多头注意力机制模型能够综合理解和表达不同层面的上下文信息从而捕捉语言中的多样性和复杂性。
Attention 机制
Attention 机制是一种用于提高序列模型性能的技术它使模型能够动态地聚焦于序列中不同部分的信息。其核心原理是根据输入序列的每个元素与当前目标的相关性即attention score来加权输入序列的表示。这些权重决定了在生成输出时应该给予每个输入元素多少注意力。该机制通常涉及三个关键组成部分查询向量(Query, Q)、键向量(Key, K)和值向量(Value, V)。通过计算Q与各个K之间的相似度来生成权重(即attention scores)然后这些权重用于加权V以输出加权的和这反映了输入的不同部分的一种综合表示。在多头注意力(multi-head attention)的情况下这个过程会多次同时进行每次使用不同的QKV权重能够允许模型在不同的表示子空间中捕捉到输入的不同方面的信息。具体地QKV是通过对同一个输入向量进行不同的线性变换即乘以训练中学习的权重矩阵得到的这允许模型采用每个输入的不同表示形式来执行不同的任务。
Attention 机制在大语言模型中的作用
大语言模型中Attention 机制能够使得模型高效处理长距离上下文信息这意味着每个单词或词元可以与前文中的任意单词直接相互作用无论它们在序列中的距离有多远。由于这种能力Attention 机制在捕捉文本的上下文关系、语法结构和意义层次方面表现非常出色。Attention 机制有效地增强了模型的表示能力能够学习更细致、复杂的语言规则和模式。它也是实现并行化处理的关键因为不同的attention权重可以独立计算大大提高了训练效率。训练期间Attention 机制能够让信息在网络不同层之间流动这使得模型能够逐渐在更高层次上抽象和理解语言。在预测时模型能够考虑到与当前预测最相关的上下文从而生成更准确、连贯的文本。
预训练
1. 简要描述预训练
预训练pre-training是大语言模型如GPT (Generative Pre-trained Transformer)等的发展过程中的一项关键技术。它涉及在巨大的文本语料库上训练一个语言模型而不需要特定的任务标签。预训练的目标是让模型学习到语言的通用表征包括词汇、语法、句法结构和部分语义知识。预训练通常使用非监督或自监督的学习任务如掩码语言模型在BERT中或是下一个单词预测在GPT中通过这些任务模型捕捉到语言的统计规律。预训练的模型通常包含数以亿计的参数它们能够从文本中提取复杂的特征并建立长距离依赖关系。对于Transformer架构而言预训练同样包含学习自注意力self-attention机制的权重这使得模型能够在处理每个词时考虑到句子中的所有其他词。
2. 预训练在大语言模型中的作用
预训练在大语言模型中的作用是多方面的
基础语言理解预训练帮助模型学会理解语言的基本结构和语义构建起一种对自然语言普遍特性的表征Representation。这种表征能够捕捉词汇、语法、句法和语义等多方面的信息使模型能够对不同的语言输入进行有效的理解和处理。通过这种普遍性的表征模型能够在后续的下游任务中更好地适应和迁移学习到的知识。知识融合在从广泛的语料中学习时模型可以吸收丰富的常识、事实知识和领域信息这为后续特定任务提供了有力支撑。迁移学习通过预训练获得的语言表征可以迁移到不同的下游任务通过微调fine-tuning使得模型在小规模标记数据上表现优异。效率和经济性预训练一次多次利用的模式减少了对大量标记数据的需求相比从零开始训练模型更加高效且成本效益更高。模型泛化预训练使得模型在看到新任务或新数据时能够更好地泛化因为它已经在预训练阶段学习到了语言的广泛模式和结构。
微调
1. 简要描述微调Fine-Tuning
微调Fine-Tuning是对大型预训练语言模型训练过程的第二阶段目的是调整和优化模型的参数以适应特定的下游任务和数据分布以提高模型的表现。在这个过程中模型已经在海量数据集上进行了预训练通过这个预训练模型已经学会了语言的基本结构和模式也就是说模型已经具备广泛的语言理解和生成的能力。继预训练之后微调会针对具体任务对模型进行专门的调整典型的微调任务包括文本分类、情感分析、问题回答等。
微调在广泛的预训练阶段之后此时模型已经掌握了语言的基本语法、句法和一般知识。微调通常涉及以下几个步骤
选择一个或多个具体的下游任务如文本分类、命名实体识别、情感分析等。准备相关任务的标注数据集这个数据集一般相较于预训练数据集较小但更为专业或专门化。使用这个专门的数据集来继续训练模型调整模型参数。训练的过程中会使用如交叉熵损失函数等具体的优化目标。
大模型的微调分成两种
针对全量的参数--全量微调FFT(Full Fine Tuning)。只针对部分的参数进行训练PEFT(Parameter-Efficient Fine Tuning)。
【业界常用的PEFT方案Prompt Tuning、Prefix Tuning、LoRA、QLoRA】
2. 微调(Fine-Tuning)在大语言模型中的作用
微调在大语言模型中的核心作用是为了使通用预训练模型适应特定的应用或任务。在预训练阶段模型学习了大量的语言知识和通用能力但通常缺少对任务特定场景的优化。具体来说微调的主要作用包括
模型个性化通过微调模型可以学习到特定领域的词汇、术语及其语义例如医疗、法律或金融等领域的专业术语。性能提升在特定任务上继续训练能提高模型的精确度和召回率减少不相关的一般性知识对预测的干扰。快速适应新任务通过微调大型模型能够迅速适应新环境或任务这比重头训练一个新模型要经济和高效。使用少量数据就能取得较好的效果由于通用基础已经在预训练过程中建立微调使模型能在相对较少的标注数据上就实现较高的性能。
过拟合和欠拟合
1. 过拟合Overfitting
模型在训练数据上表现出色但在新的、未见过的数据上性能差。原因通常是模型复杂度过高学习到了训练数据中的噪声和特定特征。
2. 欠拟合Underfitting
模型在训练数据上表现不佳通常也会在测试数据上表现不佳。原因是模型过于简单不能捕捉数据中的基本结构。
3. 作用于大语言模型
过拟合会降低模型在实际应用中的泛化能力。欠拟合则表明模型没有足够的能力理解数据。适当的模型复杂度、数据正则化和其他技术如早停是保证模型性能的关键。 解释BERT模型中的MLM和NSP的工作原理 BERTBidirectional Encoder Representations from Transformers模型的结构、预训练任务以及微调Fine-tuning阶段 输入表示BERT模型的输入表示是通过以下三种类型的嵌入组合而成的 Token Embeddings词向量嵌入表示输入序列中的每个单词或标记。Segment Embeddings区分对话或文本中的不同片段例如两个句子的起始和结束位置。Position Embeddings表示单词在序列中的位置信息。 预训练任务BERT的预训练包括两个主要任务 Masked Language Model (MLM) 输入序列的处理 随机选择15%的token。80%的选中token被替换成[MASK]标记即[CLS]。10%的选中token被替换成随机token。剩余10%的选中token保持不变。构建预测目标即原始选中的token。Transformer的自注意力机制 利用周围未掩盖的token来理解上下文。整合来自双向上下文的信息。预测及优化 输出选中token的概率分布。与预测目标即token的真实值进行比较。使用交叉熵损失函数优化模型参数。 Next Sentence Prediction (NSP) 输入序列的构建 拼接两个句子A和B。有50%的概率B是A的下一句另外50%则随机选择。构建分类目标即句子是否连续IsNext或非连续NotNext。Transformer的自注意力机制 理解两个句子之间的关联。学习表示句子关系的嵌入。预测及优化 输出句子关系的分类结果。与分类目标进行比较。使用交叉熵损失函数优化模型参数。 Fine-tuning阶段下游任务适配 调整模型输出与任务对应根据具体任务调整BERT模型的输出层。继续优化模型参数微调模型参数以适应具体任务例如文本分类、命名实体识别等。 通过上述结构化的预训练和微调过程BERT模型能够在多种自然语言处理任务中取得显著的效果。 Masked Language Model (MLM)
1. 输入序列的处理
随机选择输入序列中的15%的token进行遮蔽。这些选中的token会有80%的概率被[MASK]替换10%的概率被随机token替换另外10%的概率保持不变。构建预测目标选择这些token的原始形态。
2. Transformer的自注意力机制
利用周围未被掩盖的token来理解每个[MASK]位置的上下文信息。通过自注意力机制模型可以综合左右两侧的上下文信息来预测[MASK]位置的token。
3. 预测及优化
模型输出每个[MASK]位置的token概率分布。将预测结果与真实token值(标签)进行比较。使用交叉熵损失函数进行优化。
Next Sentence Prediction (NSP)
1. 输入序列的构建
输入由两个句子A和B构成它们被拼接在一起模型需要预测B是否自然地跟随A。在预训练的数据准备阶段B有50%的概率是A的实际下一句另外50%的概率是从语料库中随机挑选的句子。设置分类目标如果B是A的下一句则标记为IsNext否则标记为NotNext。
2. Transformer的自注意力机制
通过自注意力机制BERT可以整合两个句子的信息以衡量其相互间的逻辑和连贯性。模型学习并理解句子关系得到两个句子间关系的表示。
3. 预测及优化
模型输出一个二分类结果预测句子B是否是句子A的下一句。将预测结果与真实分类标签进行比较。使用交叉熵损失函数对模型参数进行优化。
通过这两种预训练任务BERT不仅能够理解单词和句子的内部结构还能理解它们之间的关系。这些能力在完成Fine-tuning阶段时使得BERT在各种NLP下游任务如问答、情感分析、文本摘要等方面都有出色的表现。 描述 GPT 和 BERT 模型架构的主要区别及其优缺点
GPT和BERT是自然语言处理领域的两个重要的预训练语言模型它们有着不同的架构和优缺点。以下是对两者的详细比较
GPT
1. 架构
采用基于Transformer的解码器架构。使用无监督学习的方式进行预训练。从左到右依次生成文本。
2. 优点
生成能力由于其单向性的架构GPT特别擅长文本生成任务。细粒度上下文理解在生成文本时GPT能够连贯地从前到后保持上下文信息。直接Fine-tuningGPT可以直接在下游任务上进行Fine-tuning。
3. 缺点
缺乏双向上下文由于其单向的架构GPT不能像BERT那样在预训练阶段捕获双向上下文信息。生成时可能偏离主题因为模型只能利用之前的上下文。
BERT
1. 架构
采用基于Transformer的编码器架构。对输入文本中的随机单词进行遮蔽然后预测这些单词。使用Masked Language Model和Next Sentence Prediction的预训练任务。
2. 优点
双向上下文理解BERT通过其Masked Language Model (MLM) 从整个句子两端同时获取上下文能够更好地理解每个单词的意义。适用性强由于其深层次的双向理解BERT在诸多NLP任务如问答系统、情感分析等上表现出色。
3. 缺点
有限的文本生成能力BERT不像GPT那样适用于文本生成任务因为它是为在已存在的上下文中填空即预测Masked tokens设计的。预训练计算成本较高由于其双向特性和对输入的重复注意力计算BERT在预训练阶段通常需要更多计算资源。 让大模型处理更长的文本
在处理更长文本的问题上由于Transformer架构本身的限制长序列数据处理是稍微有挑战性的。这主要是因为Transformer模型的自注意力机制拥有O(n^2)的时间和空间复杂性这里的n是序列的长度。为了应对这一挑战在实践中我们可以采用以下策略来优化处理长文本的能力
策略
1. 优化自注意力机制
Longformer采用全局注意力到关键token和滑动窗口实现局部注意力。BigBird类似于Longformer通过稀疏注意力机制和随机全局注意力点增强处理长序列的能力。Reformer使用Locality-Sensitive HashingLSH来减少计算需求便于处理长序列。
2. 修改模型架构
Transformer-XL通过相对位置编码和记忆机制允许模型利用之前的隐藏状态信息有效地处理长文本。Adaptive Attention Span缩小注意力窗口的大小来减少参数的数量适用于文本中各个部分。
3. 采用分块策略
对输入序列进行分块处理并在模型中嵌入一种机制来维持区块间的联系如使用额外的代表性token和结合状态信息。
4. 压缩表示
预处理步骤中使用文本压缩如通过抽取和提炼来减少文本长度。模型内无损压缩技巧例如通过使用卷积或递归下采样来简化输入序列。
5. 层次化注意力
实施多层次的自注意力机制首先在局部区块内进行注意力计算然后在更高层次上处理区块间的关系。
实现细节
在实现上述策略时以下的细节需要考虑
计算和存储资源评估模型的可扩展性需要的资源优化内存管理同时保证效率和效果。分块策略确保分块过程不会损失重要的上下文信息设计有效的跨区块上下文融合机制。模型泛化能力在优化长文本处理的同时保持模型在短文本处理的性能。训练与推理速度采用的优化策略不应严重影响整体训练和推理的速度。兼容性和迁移学习确保新的长序列处理方法能够和现有模型架构以及先进的预训练方法相兼容。
结合这些策略和细节在设计和实现大型模型处理长文本的能力时我们可以有效地平衡性能和效率以达到实际应用需求。 Zeroshot和Fewshot具体做法的区别
在面对Zero-shot(零样本学习)和Few-shot(小样本学习)学习问题时两者的主要差异在于训练阶段可用的数据类型和数量。以下是两种方法的具体做法区别的详细分析
Zero-shot Learning
在Zero-shot学习中模型在没有看见任何类别特定样本的情况下对新类别进行推理。Zero-shot学习的关键之处在于将知识从已知类别泛化到未知类别。
1. 知识转移的关键
语义知识表达使用属性、类别描述或者词嵌入来建立类别与特征之间的联系。类别标签空间将看见和未看见的类别映射到共享标签空间如Word2Vec嵌入空间。
2. 模型设计
构建推断机制设计模型能够基于现有知识结构化地推断未知类别。充分利用训练数据即便不直接从目标类别中学习也要最大化从其他附加信息中学习。
Few-shot Learning
与零样本学习相对Few-shot学习提供了少量的目标类别样本来指导学习过程。
1. 训练方法
数据增强为了避免过拟合采用诸如旋转、剪切、噪声添加等技巧增加样本多样性。Meta-learning通过设计任务学习模型学习学习过程即“学会学习”。
2. 模型设计
匹配网络使用记忆增强组件和注意力机制来找到小样本和查询样本间的关系。基于模型的适应性利用如神经过程(Neural Processes)等模型快速适应新类别
零样本与小样本的做法对比
1. 数据使用
Zero-shot不使用任何目标类别样本。需利用类别描述或其他辅助信息。Few-shot使用少量目标类别样本进行微调或元学习。
2. 训练策略
Zero-shot侧重于推广和抽象层次的泛化能力。Few-shot集中在如何从极少的数据中快速学习。
3. 泛化能力
Zero-shot需在知识桥接未见类别上有强大的泛化能力。Few-shot侧重于从少量信息中迅速概括并泛化。
4. 评估方法
Zero-shot在完全未见过的类别上评估。Few-shot使用n-way k-shot设置进行评估其中n是类别数k是每类样本数。 为什么transformer要用Layer Norm为什么不用BN
当讨论Transformers模型相对于批量归一化Batch Normalization, BN而选择层归一化Layer Normalization, LN的原因时可以从几个核心角度来分析和说明这一设计决策。
1. 计算特性
批量归一化BN
依赖于批次大小BN依赖于一个批次中的所有数据计算每个特征的均值和方差。迷你批次效应小批量大小可能会导致估计的准确性下降这在小批量情况下尤为显著。序列长度变化影响在NLP任务中序列长度通常是可变的这会增加BN在处理不同序列长度时的复杂性。
层归一化LN
独立于批次大小LN对每个样本独立计算统计值因此其性能不会因批次大小而变化。计算稳定性由于它独立于其他样本LN提供了更稳定的行为尤其是对于小批量的情况。
2. 归一化方向
批量归一化BN
跨样本BN对同一特征的所有样本进行归一化可能导致批次间的差异被平滑掉对模型学习个体样本特性是不利的。
层归一化LN
跨特征LN在单个样本内部对所有特征进行归一化保持了批次间样本的独立性。
3. 适应性
批量归一化BN
对RNN不友好RNN及其变体常用于处理序列数据在不同时间步处理不同的数据BN因其跨批次特性并不适用。
层归一化LN
适合序列模型对于Transformers和RNN这类序列模型LN在保持序列内部依赖性的同时提供了较好的归一化效果。
4. 实例一致
批量归一化BN
- 对实例差异不敏感BN对所有输入样本执行相同的归一化操作不管它们的内部特征如何。
层归一化LN
-维护实例差异性LN通过在每个样本的所有特征上执行归一化保持了实例之间的差异性。
结构总结
计算特性
BN依赖批次大小LN独立于批次大小
归一化方向
BN纵向归一化横跨样本LN横向归一化内部特征
适应性
BN适合固定长度输入和大批量处理LN适合序列模型和变长输入
实例一致性
BN可能会减弱样本间差异LN保持样本间差异
Transformer为什么要用三个不一样的QKV 注意力层使用多头注意力(Multi-HeadAttention)机制整合上下文语义它使得序列中任意两个单词之间的依赖关系可以直接被建模而不基于传统的循环结构从而更好地解决文本的长程依赖。位置感知前馈层(Position-wiseFFN)通过全连接层对输入文本序列中的每个单词表示进行更复杂的变换。残差连接Add部分。它是一条分别作用在上述两个子层当中的直连通路被用于连接它们的输入与输出。从而使得信息流动更加高效有利于模型的优化。层归一化对应图中的Norm部分。作用于上述两个子层的输出表示序列中对表示序列进行层归一化操作同样起到稳定优化的作用。 Multi-Head Attention
Multi-Head Attention是由多个Self-Attention组成的以捕获单词之间多种维度上的相关系数 attention score。左图是Self-Attention右图是Multi-Head Attention如下所示 自注意力Self-Attention机制自然成了Transformer模型核心组件之一。该机制通过计算序列中各个元素之间的关系来捕捉序列的内部结构。在自注意力中将输入序列线性变换生成三个矩阵查询Query, Q、键Key, K和值Value, V是为了实现这一机制并优化其性能。
【self-Attention 接收的是输入(单词的表示向量组成的矩阵) 或者上一个 Encoder block 的输出。在计算的时候需要用到矩阵Q(查询)K(键值)V(值)】 ***为什么Transformer需要进行Multi-head Attention即多头注意力机制
假如翻译一个句子比如“The animal didn’t cross the street because it was too tired”我们会想知道“it”指的是哪个词这时模型的“多头”注意机制会起到作用。
它给出了注意力层的多个“表示子空间”representation subspaces。
可以类比CNN中同时使用多个滤波器的作用直观上讲多头的注意力有助于网络捕捉到更丰富的特征/信息。
Transformer的多头注意力借鉴了CNN中同一卷积层内使用多个卷积核的思想原文中使用了 8 个 scaled dot-product attention (缩放的点积注意力)在同一 multi-head attention 层中输入均为 KQV 同时进行注意力的计算彼此之前参数不共享最终将结果拼接起来这样可以允许模型在不同的表示子空间里学习到相关的信息在此之前的 A Structured Self-attentive Sentence Embedding 也有着类似的思想。
简而言之就是希望每个注意力头只关注最终输出序列中一个子空间互相独立。其核心思想在于抽取到更加丰富的特征信息。不过Multi-Head 的多个头并不一定就如我们所期望的那样去关注不同方面的信息。在 EMNLP 2018 的 Multi-Head Attention with Disagreement Regularization一文中采用正则化手段来保证每个头关注不同的子空间。
Self-Attention
Transformer模型中的注意力机制利用三个不同的负载矩阵查询Query, Q、键Key, K和值Value, V是为了以灵活、高效的方式捕捉序列内部的依赖关系。这种设计背后的原理可以从以下几个方面来深入理解
分解为不同Q, K, V的目的(简要回答版)
1). 提升表达能力通过使用不同的参数矩阵将输入变换为Q, K, V模型能够学习到更加丰富和多样的表示每个表示捕捉输入数据的不同方面。这些不同的表示可以被解释为不同的抽象概念比如“寻找什么”Q、“在什么上寻找”K、和“当找到之后要怎么处理”V。
2). 泛化能力对Q, K, V的不同处理方式允许注意力机制学习在不同上下文中复用相似的模式例如无论语境如何“问题”和“答案”的概念可能是类似的。这样的设计引入了一种泛化允许模型更好地适应新的、未见过的数据。
分解为不同Q, K, V的目的(详细回答版)
1). 提高泛化能力
更灵活的权重分配在计算注意力权重时Q 和 K 的线性变换产物进行点积操作决定了每个元素给到其他元素的关注程度。不同的Q和K表示允许模型动态调整注意力权重从而更好地适应数据中的模式和变化。
适应序列本质特征注意力得分即softmax(QKᵀ/√d_k)反映了输入序列各部分之间的相对相关性。通过调整Q、K的学习过程Transformer可以更好地捕捉长距离依赖和复杂的序列关系这对于处理自然语言等顺序相关性强的数据非常重要。
泛化关系模式通过独立的参数矩阵进行线性变换可以让模型学习到从数据中抽象和泛化出更加复杂的关系模式而不仅仅是简单的匹配和复制。
2). 增强模型的表达能力
定制化的信息抽取V代表了要提取的信息通过关联Q和K计算得出的权重可以从V中提取更为丰富且相关的上下文信息。这样一来模型不是简单地对原始输入进行编码而是能够根据不同的情况提取不同的信息这对于提高模型对输入数据的理解至关重要。
提供角色分离在自注意力机制中Q、K、V承担不同的角色。Q代表需要检索信息的部分K代表被检索的部分V则代表实际回传的信息内容。这种分离使得模型可以分开处理检索和传递信息的角色增加模型的灵活性和表达能力。 增加复杂性使用不同的变换矩阵可以使得Q、K、V在高维空间有着不同的表示强化了模型捕捉多样化关系的能力例如长距离依赖、语义关系等。
具体机制
具体来说注意力机制通过对每个输入单元的Q与所有输入单元的K进行比较并应用softmax函数来确定每个单元的V将如何被加权。计算注意力权重时使用的softmax函数确保了即使在不同序列长度和复杂性的情况下注意力分数也会被规范化normalized这样模型的泛化能力就会被提升。
Self-attention的公式为 其中根号d_k是缩放因子通常是K的维度开平方根用于调整点积的大小预防过大的点积导致softmax函数进入梯度很小的区域影响训练效率。
总结一下通过将输入序列分别映射到Q, K, V三种表示Transformer不仅增强了模型的表达能力还在注意力权重计算中引入泛化的可能性使模型能够有效处理各种序列数据并且对于自然语言的多样性和复杂性有着更强的适应性。这也是Transformer模型在自然语言处理任务中取得如此卓越表现的关键因素之一。 为了便于更好的理解Transformer的自注意力机制现以图文的形式简要介绍一下计算自注意力的步骤
计算自注意力的第一步就是从每个编码器的输入向量每个单词的词向量中生成三个向量。也就是说对于每个单词我们创造一个查询向量、一个键向量和一个值向量。
第一步是计算查询矩阵、键矩阵和值矩阵。为此我们将将输入句子的词嵌入装进矩阵X中将其乘以我们训练的权重矩阵(WQWKWV)。 x矩阵中的每一行对应于输入句子中的一个单词。 计算自注意力的第二步是计算得分。 第三步和第四步是将分数除以8(8是论文中使用的键向量的维数64的平方根这会让梯度更稳定。这里也可以使用其它值8只是默认值)然后通过softmax传递结果。softmax的作用是使所有单词的分数归一化得到的分数都是正值且和为1。 这个softmax分数决定了每个单词对编码当下位置“Thinking”的贡献。显然已经在这个位置上的单词将获得最高的softmax分数但有时关注另一个与当前单词相关的单词也会有帮助。
第五步是将每个值向量乘以softmax分数(这是为了准备之后将它们求和)。这里的直觉是希望关注语义上相关的单词并弱化不相关的单词(例如让它们乘以0.001这样的小数)。
第六步是对加权值向量求和译注自注意力的另一种解释就是在编码某个单词时就是将所有单词的表示值向量进行加权求和而权重是通过该词的表示键向量与被编码词表示查询向量的点积并通过softmax得到然后即得到自注意力层在该位置的输出。 这样自自注意力的计算就完成了。得到的向量就可以传给前馈神经网络。 我们可以将步骤2到步骤6合并为一个公式来计算自注意力层的输出。