当前位置: 首页 > article >正文

8.扩散模型的未来---GPT及大模型(1)

        扩散模型的研究处于早期阶段,理论和实证方面都有很大的改进潜力。正如前面都分所讨论的,其主要的研究方向包括高效的采样和改进似然函数,以及探索扩散模如何处理特殊的数据结构,与其他类型的生成模型进行融合,并定制一系列应用等。本节我们先简要介绍扩散模型未来可能的研究方向,然后再详细介绍扩散模型与GPT及大模型进行交叉研究的可能性。
        我们需要重新审视和分析扩散模型中的许多典型假设。例如,在扩散模型前向过程中完全抹去数据中的信息,并将其等效于先验分布的假设,可能并不总是成立的。事实上,在有限时间内完全去除信息是不可能的。何时停止前向噪声过程以便在采样效率和样本质量之间取得平衡是非常有趣的问题。最近在薛定谔桥和最优传输方面取得的进展有希望为此提供替代解决方案,比如提出新的扩散模型公式,并在有限时间内收敛到指定的先验分布。
        我们还要提升对扩散模型的理论理解,扩散模型是一个强有力的模型,特别是作为唯一可以在大多数应用中与生成对抗网络(GAN)匹敌而不需要采用对抗训练的模型。因此,挖掘利用扩散模型潜力的关键在于理解为什么扩散模型对于特定任务比其他选择更有效。识别那些基本特征区别于其他类型的生成模型,如变分自编码器、基于能量的模型或自回归模型等,也是非常重要的。理解这些区别将有助于理解为什么扩散模型能够生成优质样本并有更高的似然值。同样重要的是,需要开发额外的理论去指导如何系统地选择和确定各种扩散模型的超参数。
        扩散模型的潜在表示也是值得研究的,与变分自编码器或生成对抗网络不同,扩散模型在提供良好的数据潜在空间表示方面效果较差。因此它不能轻松地用于基于语义表示操纵数据等任务。此外,由于扩散模型中的潜在空间通常具有与数据空间相同的维数,因此采样效率会受到负面影响,模型可能无法很好地学习表示方案。下面我们将重点介绍扩散模型与GPT及大模型进行交叉研究的可能性。首先介绍预训练(Pre-Training)技术,然后介绍GPT及大模型的发展历史和一些关键的研究论文,最后讨论扩散模型结合GPT及大模型的可能性与方式。

1.预训练技术简介
        无监督学习是从未经标记的数据中学习模式和结构的学习。相比有监督学习,无监督学习更加灵活,因为它不需要人工标注数据,就可以在大规模数据上自动学习并且可以发现新的知识和潜在的结构。预训练技术是一种无监督学习的方法,它利用大规模无标注数据集进行训练,以获得通用的表示和规律,从而在特定任务上进行微调,以提高模型的性能。预训练技术在自然语言处理领域的发展历程可以分为以下几个阶段:
        (1)词向量模型(2013年):最早的预训练技术是基于词向量的,例如,word2ve和 GloV。这些模型使用上下文信息来生成词向量表示,可以有效地解决语言表达的稀疏性和维度灾难问题。这些词向量模型的应用场景主要是文本分类信息检索和文本生成等。
        (2)语言模型(2018年):例如,ELMo和ULMFiT。这些模型使用单向或双向的语言模型来生成文本表示,可以捕捉输入序列中的上下文信息,并且可以适应不同的自然语言处理任务。
        (3)Transformer 模型(2018年):它使用自注意力机制来捕捉输入序列中不同位置之间的依赖关系,从而更好地处理长文本序列。Transformer模型在机器翻译和文本生成等任务中取得了非常好的效果,是预训练技术的一个重要里程碑

        (4)大规模预训练模型(2018年至今):例如,BERT、GPT和T5等。这些模型使用更大规模的数据集进行训练,并且使用更复杂的网络结构和训练策略来提高效果和泛化能力。这些大规模预训练模型在自然语言处理领域取得了非常显著的成果,并且成为当前自然语言处理研究的一个重要方向。预训练技术的发展经历了从词向量模型到语言模型,再到Transformer 模型和大规模预训练模型的演进。这些技术的发展不仅提高了自然语言处理的效果和泛化能力,而且促进了自然语言理解和生成等领域的研究。

1.1 生成式预训练和对比式预训练
        预训练模型可以分为Encoder-Only、Decoder-Only和 Encoder-Decoder3 种结构。其中,Encoder-Only和Encoder-Decoder 结构常见于图像和多模态预训练研究,而Decoder-Only 结构常见于自然语言模型预训练研究。Eneoder 负责将输入进行语义抽取和匹配对齐,Decoder负责将特征进行解码生成。Encoder-only和Encoder-Decode结构在训练时依赖特定的标注数据,当模型变大时,微调起来比较困难。相比之下,Decoder-Only 结构更加高效,特征抽取和解码同时进行,省去了Encoder 阶段的计算量和参数,能更快地训练推理,有更好的可扩展性,能扩展到更大的规模。此外,Decoder-Only 结构在没有任何数据微调的情况下,Zero-shot的表现最好。下面介绍两种预训练--生成式(Generative)预训练和对比式(Contrastive)预训练。生成式预训练采用重构损失(ReconstructionLoss)函数,对比式预训练采用对比损失(Contrastive Loss)函数。
        生成式预训练用一个 Encoder 将输入x编码成显式的特征向量z,同时使用一个Decoder 将x从z中重构回来,基于重构损失函数对Encoder/Decoder 进行训练,当生成式预训练是Decoder-Only结构时,只需要训练Decoder。常见的生成式预训练目标函数有掩码式语言建模(MaskedLanguage Modeling,MLM)和掩码式图像建模(Masked Image Modeling,MIM)等预训练范式。掩码式语言建模通过最大化被掩码的单词的预测正确率来训练模型。通过最大化被掩码的图像patch重建保真度来训练“encoder”和“decoder”。除上述单模态生成式预训练外,还有很多多模态生成式预训练工作,如UNITER、VinVL等。
        对比式预训练是指训练一个Encoder 将输入的x和y同时编码得到显式向量zx和zy使得正样本对应的zx和zy互信息(相似度)最大化,负样本对应的互信息最小化。单模态对比学习(Contrastive Leamming)通过输入x,然后进行数据增强将样本转化为“positive pair”,在进行特征抽取后,最大化它们之间的共性特征互信息。
        该范式可以泛化到多模态对比预训练学习中,比如图像文本匹配(mage-TexMatching,ITM)、图像文本对比(Image-TextContrastive,ITC)学习,以及视频文本对比(Video-TextContrastive,VTC)学习等预训练范式。在图像文本对比学习中,在文本(Text)和图像(mage)分别经过 Encoder 抽取成对的特征后,在批样本中以“afinity matix”的形式计算对比损失。

1.2 并行训练技术
        预训练-微调范式已经被广泛运用在自然语言处理、计算机视觉、多模态语言模型等多种场景中,越来越多的预训练模型取得了优异的效果。为了提高预训练模型的泛化能力,研究者们开始逐步增大数据和模型参数的规模来提升模型性能,尤其是预训练模型参数量在快速增大,至023年已经达到万亿参数的规模。但如此大的参数量会使得模型训练变得十分困难,研究者们使用不同的并行训练技术来对大模型进行高效训练。并行训练技术使用多块显卡并行训练模型,主要分为3种并行方式:数据并行(Data Parallel)、张量并行(Tensor Parallel)和流水线并行(Pipeline Parallel)。
数据并行
        数据并行(DataParalel)是最常用和最基础的并行训练方法。该方法的核心思想是,沿着batch维度将输入数据分割成不同的部分,并将它们分配给不同的 GPU进行计算。在数据并行中,每个GPU存储的模型和优化器状态是完全相同的。在每个GPU上完成前向传播和后向传播后,需要将计算出的模型梯度进行合并和平均,以得到整个batch 的模型梯度。数据被分成4份送到4个同样的模型中进行训练,在计算损失时会将不同模型的梯度进行平均,然后反向传播。
张量并行
        通常在训练大型模型时,单个GPU无法容纳完整的模型。为此,可以使用张量并行(TensorParallel)技术将模型拆分并存储在多个GPU上。与数据并行不同,张量并行是指将模型中的张量拆分并放置在不同的GPU上进行计算。例如,对于模型中的线性变换Y=AX,可以按列或行拆分矩阵A,并将其分别放置在两个不同的GPU上进行计算,然后在两个GPU之间进行通信以获得最终结果,这种方法可以扩展到更多的GPU和其他可拆分的操作符上。在整个多层感知机(MLP)中,输入X首先会被复制到两个GPU上。然后,对矩阵A采用上述列分割方式,在两个GPU上分别计算出第一部分输出的Y1和Y2。接下来,对于 Dropout 部分的输入,采用按行划分的方式处理矩阵B,并在两个GPU上分别计算出Z1和Z2。最后,在两个 GPU上进行 All-Reduce 操作All-Reduce是一种常用的通信操作,它涉及到在多个计算节点,例如GPU或CPU之间汇总数据,以获得最终的输出 Z。在 MLP 和SelfAnention上实现张量并行。与MLP的张量并行类似,SelfAtention 的张量并行可以将“attention heads”中的Q、K、V进行张量分解并行。
流水线并行
        流水线并行(Pipeline Parael)也是将模型分解并放置到不同的 GPU 上,以解决单块 GPU无法存储整个模型的问题。但与张量并行不同的是,流水线并行按层将模型存储在不同的 GPU上。以 Transfommer 为例,流水线并行将若干连续的层放置在同一块GPU上,然后在前向传播过程中按照顺序依次计算隐状态( hidden state )。

微调技术

        微调(Fine-Tuning)技术是指在预训练模型的基础上,针对特定任务进行少量的训练调整,以达到更好的性能表现。该技术可以在不重新训练模型的情况下,快速地适应新的任务,并提高模型的准确性。微调技术通常用于深度学习模型在具体应用中的迁移学习(Transfer Learing)。在迁移学习中,预训练模型在大规模数据上进行训练,学习到了通用的特征表示,而这些特征表示可以用于多个任务。在微调时,通常是在一个较小的、与预训练模型类似的数据集上对模型进行微调,以适应特定的任务微调技术的具体实现方式是将预训练模型的所有或部分层参数作为初始参数,然后通过训练过程更新这些参数,使其适应特定的任务。在微调过程中,通常只需要在少量的任务特定数据集上进行训练,并且训练时采用较小的学习率,以避免过拟合。微调技术在各种深度学习应用中得到了广泛应用,如自然语言处理、计算机视觉和语音识别等。以自然语言处理为例,常见的微调预训练模型包括BERT、GPT、XLNet 等,在微调后可用于诸如文本分类、命名实体识别、情感分析等各种具体任务,极大地提升了模型性能。


http://www.kler.cn/news/359253.html

相关文章:

  • Linux文件与fd
  • BERT的中文问答系统(羲和1.0)
  • 论文翻译 | OpenICL: An Open-Source Framework for In-context Learning
  • 鸿蒙NEXT开发-网络管理(基于最新api12稳定版)
  • 对BSV区块链下一代节点Teranode的答疑解惑(下篇)
  • 提升SQL技能,掌握数据分析
  • “敌人”追击状态的转换
  • 蒙特卡洛法面波频散曲线反演(matlab)
  • 【机器学习基础】全连接层
  • 【HarmonyOS NEXT】实现保存base64图片到图库
  • wordcloud 字体报错
  • 使用Java发送邮件的多种方案实现
  • 富格林:正规思路实现安全交易
  • 汽车管理系统——查询车辆厂商信息
  • 【学术会议论文投稿】ECMAScript标准:塑造现代Web开发的基石
  • jmeter中用csv data set config做参数化2
  • 读书笔记:《Redis设计与实现》之集群
  • 数据结构实验十一 图的创建与存储
  • 第 5 章 Kafka 消费者
  • 【Linux 从基础到进阶】使用Fail2Ban防止暴力破解