《Large-scale Multi-modal Pre-trained Models: A Comprehensive Survey》中文校对版

文章汉化系列目录


文章目录

  • 文章汉化系列目录
  • 摘要
  • 引言
  • 2 背景
    • 2.1 传统深度学习
    • 2.2 自然语言处理中的预训练
    • 2.3 计算机视觉中的预训练
    • 2.4 音频与语音中的预训练
  • 3 多模态预训练
    • 3.1 任务定义与关键挑战
    • 3.2 MM-PTM的优势
    • 3.3 预训练数据
    • 3.4 预训练目标
    • 3.5 预训练网络架构
      • 3.5.1 自注意力和Transformer
      • 3.5.2 单流和多流架构
      • 3.5.3 模态交互学习
    • 3.6 基于知识的预训练
    • 3.7 不同预训练大模型的特性
  • 4 下游任务
    • 4.1 生成任务
    • 4.2 分类任务
    • 4.3 回归任务
    • 4.4 提示学习(Prompt Learning)
  • 5 实验分析
    • 5.1 模型参数与训练信息
    • 5.2 代表性下游任务的性能表现
  • 6 研究方向
  • 7 总结


摘要

随着对通用深度模型的迫切需求,许多预训练的大型模型应运而生,如双向编码器表示(BERT)、视觉变换器(ViT)、生成预训练变换器(GPT)等。受到这些模型在单一领域(如计算机视觉和自然语言处理)成功的启发,多模态预训练大模型近年来也引起了越来越多的关注。在本研究中,我们对这些模型进行了全面的综述,并希望本文能为新研究者提供新的见解,帮助他们跟踪最前沿的工作。具体来说,我们首先通过回顾自然语言处理、计算机视觉和语音中的常规深度学习和预训练工作,介绍多模态预训练的背景。然后,我们介绍多模态预训练模型(MM-PTM)的任务定义、关键挑战和优势,并重点讨论数据、目标、网络架构和知识增强预训练的MM-PTM。接下来,我们介绍用于验证大规模MM-PTM的下游任务,包括生成、分类和回归任务。我们还对代表性下游任务的模型参数和结果进行了可视化和分析。最后,我们指出了该主题可能的研究方向,这些方向可能对未来的工作有所帮助。此外,我们还维护了一个持续更新的大型预训练多模态大模型的论文列表:https://github.com/wangxiao5791509/MultiModal_BigModels_Survey。

关键词:多模态(MM)、预训练模型(PTM)、信息融合、表示学习、深度学习。

引言

 随着AlexNet在ImageNet竞赛中的突破性表现[1],人工智能领域得到了快速发展。许多具有代表性的深度神经网络相继被提出,如VGG[3]、ResNet[4]、Inception[5]和长短时记忆网络(LSTM)[6]。研究人员通常会收集并标注一些样本来完成特定任务,并基于大规模数据集(例如计算机视觉领域的ImageNet[2],自然语言处理领域的GloVe[7]和skip-thought向量[8])上的预训练骨干网络来训练他们的模型。与传统的手工特征提取方法相比,这种端到端的方式能很好地解决许多任务,如目标检测、图像分割和识别。然而,所获得深度模型的泛化能力仍然有限。尽管收集和标注更大规模的数据集可以在一定程度上解决这些问题,但这一过程既昂贵又繁琐。

 为了解决这一问题,Vaswani等人[9]提出了Transformer网络,在机器翻译任务上取得了新的最先进(SOTA)表现。此后,基于大规模语料库的自监督预训练,并在下游任务上进行微调的思路,吸引了越来越多研究者的关注。许多遵循这种范式的预训练大模型相继被提出,如双向编码器表示(BERT)[10]、生成预训练变换器(GPT)[11, 12]、T5[13]、XLNet[14],这些模型也为计算机视觉(CV)领域的预训练研究带来了新的研究亮点。越来越多的大规模自然语言处理(NLP)和计算机视觉(CV)模型展示了预训练-微调范式的强大效果,包括视觉变换器(ViT)[15]和Swin-transformer[16]。

 尽管这些进展为人工智能的发展注入了新的动力,但单一模态所带来的问题仍然难以解决。研究人员尝试融合更多模态来弥合深度模型的数据差距。许多基于多模态融合的任务也在传统的深度学习方法中得到探索,例如RGB图像、深度图、自然语言、点云、音频、事件流等。许多大规模预训练多模态模型[17−23]相继被提出,并在下游任务上接连创造了新的SOTA,如图1和表1所示。本文将对这些工作进行全面回顾,旨在帮助新研究者快速了解这一领域的历史与最新发展。
在这里插入图片描述

图1 多模态预训练大模型的时间轴里程碑,从2019年到2022年6月,涵盖了多模态数据集(由橙色箭头标示)和代表性模型(由蓝色箭头标示)。紫色字体表示数据集包含中文文本(其他数据集包含英文文本)。以酒红色高亮的模型表示这些模型是基于超过两种模态进行训练的。

在这里插入图片描述

表1 相关单模态和多模态预训练综述的总结。SC 和 DC 分别代表单列和双列。Pub. 是出版物的缩写。

我们综述的组织结构 在本文中,我们首先在第2节回顾了多模态预训练技术的背景,介绍了从传统深度学习范式到单模态任务中的预训练,包括自然语言处理、计算机视觉和自动语音处理。接着,我们在第3.1至3.2节中重点讨论了多模态预训练模型(MM-PTMs)的任务定义、关键挑战和优势。第3.3至3.6节回顾了该技术的关键组件,包括大规模数据、网络架构、优化目标和知识增强预训练。为了验证预训练模型的有效性,许多下游任务被用于定量评估。在第4节中,我们详细回顾了这些任务的任务定义和评估指标。在第5节中,我们回顾了用于训练的模型参数和硬件,并报告了几个代表性下游任务的实验结果。最后,在第6节中,我们总结了本综述并提出了多个需要研究的研究方向。本综述的架构如图2所示。

在这里插入图片描述

与现有综述的差异
尽管已有两篇综述[24, 25]针对多模态预训练模型(MM-PTMs)进行了研究,但我们的综述与现有综述之间的差异可以总结如下:

  • 范围:现有的多模态综述[24, 25]仅关注视觉-语言任务,而多模态信息问题是一个更广泛的研究主题。本文通过介绍更多的模态,如音频、视频、表格等,比上述综述更具综合性。
  • 时效性:本文介绍了最新的多模态预训练数据集和算法(从2019年到2022年6月),属于一篇较长的综述论文,而现有综述则属于较短的论文。
  • 新见解:通过从不同角度对现有的多模态预训练模型进行分类和分析,本文能够帮助读者从细节和高层次两个角度掌握前沿方法和技术。此外,我们提出的MM-PTM研究方向具有深思熟虑,并将为后续研究提供新的线索。

2 背景

2.1 传统深度学习

 随着AlexNet[1]的发布,一系列深度学习模型在人工智能领域得到了提出。这些深度模型在拟合复杂数据方面展现了比传统机器学习模型更好的能力。从其发展的角度(LeNet[50]、AlexNet[1]、VGG[3]、ResNet[4]、DenseNet[51])来看,我们可以发现它们的架构变得越来越深,相应的性能也得到了显著提升。这些方法的成功得益于大规模标注训练数据的支持,例如用于分类任务的ImageNet[2]。所使用的数据规模远大于传统方法,但仍然是有限的。机器学习模型的鲁棒性和泛化性能的追求从未停止。
 最近,基于大规模数据预训练得到的大规模预训练模型的结果不断刷新人们对人工智能的认知。与以往的小规模深度学习方法相比,预训练的大模型在自然语言处理(NLP)、计算机视觉(CV)和多模态领域展现了明显的优势。这种预训练方案充分利用了大规模未标注数据,从而避免了昂贵的标注成本。因此,研究大规模预训练模型是探索真实智能的可行且必要的途径。

2.2 自然语言处理中的预训练

 大规模预训练模型[26, 29, 32, 34, 42, 43, 52]首先出现在自然语言处理(NLP)领域。它们的成功主要归功于自监督学习和像Transformer[9]这样的网络结构,如图3所示。具体而言,基于自监督学习的双向编码器表示(BERT)[10]的出现,导致了在较少训练数据上微调后,广泛下游任务性能的革命性提升[53]。生成预训练变换器(GPT)[12, 54, 55]进一步扩展了参数数量和训练数据,从而获得了更好的性能。需要注意的是,GPT-3[12]的参数数量是TuringNLP[56]的十倍。它不仅能够更好地完成常规NLP任务,还具备一定的数学计算能力。GPT-3模型的成功使其在各种领域得到广泛应用,如搜索引擎、聊天机器人、音乐创作、图形设计和编程等。XLNet[14]是在广义排列语言建模目标的基础上发展起来的,它实现了无监督语言表示学习。PanGu- [57]是一个具有2000亿参数的大规模中文预训练模型,基于MindSpore自动并行实现。NEZHA是另一种基于BERT的中文预训练大模型,由魏等[58]提出。更多NLP领域的大规模预训练模型可以在综述文章中找到[27, 34]。

在这里插入图片描述

2.3 计算机视觉中的预训练

 受到Transformer在NLP任务中革命性进展的启发,近年来也提出了许多基于Transformer的大规模视觉模型。Chen等[59]尝试使用序列Transformer进行自回归地预测像素。该模型通过在低分辨率的ImageNet数据集上进行预训练,展示了强大的图像表示能力。视觉Transformer(ViT)模型[60]直接采用纯Transformer来处理图像块的序列进行分类。在多个下游计算机视觉任务上,ViT取得了许多新的SOTA(最先进的技术)性能,包括物体检测[61]、语义分割[62]、图像处理[63]、视频理解[63]等。Swin-transformer[16]是计算机视觉领域的另一个里程碑,它作为一个分层Transformer,采用了移动窗口进行表示学习。对于预训练方法,提出了掩码图像建模(MIM)[59, 60],通过条件化的可见上下文预测被掩码的部分,从而学习丰富的视觉表示。MIM为探索视觉大规模预训练模型提供了另一种方向。He等[64]提出了掩码自编码器(MAE),重新探讨了在MIM中进行像素回归,并在多个图像识别任务中展示了更具竞争力的表现。BEiT[65]通过掩码视觉标记预测大大提高了MIM的性能,PeCo[66]则发现通过在视觉代码本学习过程中注入感知相似性,可以促进MIM预训练表示的效果。

2.4 音频与语音中的预训练

 作为最受欢迎的模态之一,基于音频和语音的预训练也引起了研究者们的关注。例如,wav2vec[67]是第一个应用对比学习来通过学习基于过去音频的未来原始音频,改进监督语音识别的工作。vq-wav2vec[67]利用wav2vec中的上下文预测任务来学习音频片段的表示。Discrete-BERT[68]是BERT风格的模型,通过对预训练的BERT模型进行语音转录微调。HuBERT[69]采用自监督语音学习,其中使用离线聚类步骤生成掩码语音信号的离散标签。Wav2vec 2.0[70]解决了一个对比任务,通过预测掩码的潜在表示。W2v-BERT[71]同时使用对比学习和掩码语音建模,其中一个模型预测离散化的语音标记,另一个模型解决掩码预测任务。

3 多模态预训练

3.1 任务定义与关键挑战

任务定义 通常,深度神经网络在大规模数据集上进行训练,例如,广泛使用的残差网络[4]是通过在ImageNet数据集[2]上进行分类任务的预训练来实现的。相比之下,多模态预训练大模型通常在庞大的训练数据集上进行训练。这些数据通常没有经过标注,因为数据规模过大,无法进行标注。另一方面,模型的参数需要达到一定的规模。如图4所示,多模态数据、大模型和计算能力是紧密相关的。总的来说,在计算能力的支持下,多模态预训练通常指的是在海量的多模态数据上以无监督的方式预训练的、具有巨大参数的多模态模型。

在这里插入图片描述

关键挑战 根据上述过程,获得一个优秀的多模态预训练大模型是具有挑战性的。具体而言,我们总结了以下几个关键挑战因素:

获取和清理大规模多模态数据 多模态数据是MM-PTM中的关键要素之一。由于多模态成像设备稀缺,多模态数据的收集比单一模态数据更为困难。常用的多模态相机通常只能覆盖两种模态,例如RGB-深度、RGB-热成像、RGB-雷达、RGB-事件摄像机等。目前大多数MM-PTM是视觉-语言模型,因为可以轻松从互联网获取图像和文本数据。然而,由于数据中包含噪声样本,因此这些数据的额外清理也是必要的。

大规模多模态预训练网络架构设计 网络架构是多模态预训练的另一个关键组成部分。用于多种输入模态特征编码的网络需要精心设计,因为不同模态可能有其自身的特征,因此需要特定的网络。例如,图像和文本模态建议使用transformer或CNN,而事件流可以使用脉冲神经网络。另一个问题是多模态融合或跨模态匹配模块的设计。针对小规模多模态任务设计的类似模块是否适用于大规模预训练模型,仍然有待验证。

预训练目标设计 由于大规模的无标签多模态数据,预训练任务通常需要以无监督学习方式进行。许多当前的工作采用为每个模态进行掩码区域预测作为学习目标。显然,多模态任务的目标可以直接借用单模态预训练的目标,然而,为多模态任务设计的预训练目标同样是必要的,且应具有直观性和有效性。广泛使用的对比学习、基于模态匹配和模态转换都是有效且有意义的尝试。如何设计新的多模态预训练目标是MM-PTM面临的最大挑战之一。

大规模计算力支持 传统深度神经网络的训练可以在有限数量的GPU服务器上执行。相比之下,由于大规模多模态数据和超大规模模型参数,MM-PTM需要更多的计算能力。因此,首先需要准备超级计算设备,随后的模型训练也需要大量的计算能力支持。

参数调优技巧 考虑到上述挑战,训练一个有效的大模型从来不是一件简单的事情。训练神经网络时使用的技巧也非常重要。尽管小规模预训练的研究和技术相对更加成熟,但在大规模预训练技术上的经验积累较少。

3.2 MM-PTM的优势

 与单一模态预训练大模型相比,MM-PTM更适合实际应用场景。具体来说,多模态协同生成、模态补全、跨领域检索等问题都可以通过MM-PTM得到有效解决。此外,多模态数据包含更多的信息,可以弥补单一模态的不足。因此,MM-PTM可以帮助提取多模态的共同特征。许多近期的研究表明,利用MM-PTM确实带来了额外的先验知识[72−74]。
 与小规模的多模态模型相比,通过自监督/无监督学习获得的MM-PTM的泛化能力可以显著提高。由于一些先验知识仅存在于大规模数据中,而少量人工选择的标注数据具有偏差,因此,小规模模型难以掌握这些知识。

3.3 预训练数据

如表2所示,许多大规模多模态数据集已被提出用于预训练任务。本小节将简要介绍这些数据集,帮助读者快速掌握预训练所需的数据。

  • SBU Captions[75]:最初通过查询Flickr网站并使用大量查询词收集的数据。然后,过滤掉了获得的大规模但噪声较多的样本,最终得到了一个包含超过100万张高质量图片及其描述的数据集。
  • Flickr30k[76]:通过扩展Hodosh等人[77]的语料库获得,包含从Flickr收集的31,783张照片。这些图像涵盖了日常活动、事件和场景。每张图片通过众包方式标注了五个句子,最终Flickr30k包含158,915个描述。
  • COCO[78]:基于MS-COCO数据集[79]开发,包含123,000张图片。作者招募了亚马逊机械土耳其人来为每张图片标注五个句子。
  • Visual Genome[80]:为帮助开发能够理解图像的机器学习模型而提出,通过挖掘物体之间的互动和关系来进行描述。因此,它在图像描述、视觉问答等认知任务上表现优秀。统计显示,Visual Genome数据集包含超过108K张图像,每张图像约包含35个物体、26个属性和21对关系。
  • VQA v2.0[81]:为减少以前VQA数据集中存在的语言偏差而提出,包含约1.1M个图像-问题样本和1300万个相关答案,基于来自COCO数据集的20万张视觉图像。
  • FashionGen[82]:包含325,536张高分辨率图像(1360×1360),每张图片附有专家撰写的段落长度描述。每个时尚物品拍摄了六个不同的角度。
  • CC3M[83]:2018年提出的概念性描述标注数据集。图像-文本样本主要来自网络,经过提取、过滤和转换等必要操作后,最终留下了大约330万个图像-描述对。
  • GQA[84]:主要用于视觉推理和组合性问题回答。通过精心设计的问题引擎,考虑了内容和结构信息,并采用相关语义表示大大减少了数据集中的偏差,最终获得了一个包含170万个样本的平衡数据集。
  • LAIT[85]:一个从互联网以弱监督方式收集的大规模图像-文本数据集,包含约1000万张图像,每张图像都有一个对应的自然语言描述,描述大约有13个单词。
  • CC12M[86]:由于MM-PTM对大规模数据的急需,CC3M数据集未能满足需求,作者进一步放宽了CC3M在图像和文本清洗中的过滤标准,得到四倍大的CC12M数据集,虽然精度略有损失,但数据集更大。
  • AltText[21]:通过遵循构建概念性描述数据集[83]的规则收集,最终获得了约18亿个图像-文本对。尽管该数据集较为噪声,但通过在该数据集上预训练的大型模型仍然在许多下游任务中超越了许多现有的SOTA工作。
  • TVQA[87]:基于六个长寿命电视节目(包括情景喜剧、医学剧和犯罪剧)构建。然后使用亚马逊机械土耳其人进行视频片段的视觉问答收集。最终,该数据集包含来自21,793个视频片段的约152,545个问答对。
  • HT100M[88]:包含约1.36亿个视频片段,收集自122万部讲解型教学视频。视频内容主要关注人类,共涉及23,000种不同的任务。每个视频片段的语言描述是自动转录的旁白,因此视频和文本的配对较为弱化。
  • WebVid2M[89]:一个视频-文本配对数据集,包含超过200万个视频alt-text对。这些数据集来自于网络,遵循与CC3M数据集相似的收集程序。作者发现,CC3M中的大部分图像是视频缩略图,因此他们抓取这些视频来源(共计250万个文本-视频配对),并创建了WebVid2M数据集。
  • YFCC-100M[90]:包含1亿个媒体对象(9920万张照片,80万段视频),数据来源于2004到2014年间的Flickr。该数据集正在不断更新,且扩展包不定期发布。
  • LAION-400M[91]:包含4亿对图像-文本对,主要用于视觉-语言的预训练。值得注意的是,该数据集使用了CLIP模型进行过滤,这是一个非常流行的预训练视觉-语言模型。
  • RedCaps[92]:一个大型数据集,包含1200万个图像-文本对,数据来源于350个子Reddit社区。作者首先定义了社区范围,然后对图像帖子进行过滤并清理描述,考虑了隐私和有害刻板印象等伦理问题。
  • Wukong[93]:目前互联网上收集的最大数据集,包含1亿对图像-文本对。它基于20万个查询,通过百度图片搜索引擎获取图像及其对应的描述。每个查询最多获取1000个样本,以确保不同查询之间的平衡,且采用了一系列过滤策略。
  • CxC[94]:这是一个基于MS-COCO数据集扩展而来的数据集,通过对现有和新对图像-文本进行连续(0-5)语义相似度评分。CxC包含267,095对图像-文本,是在规模和细节上重要的扩展,可用于图像-文本、文本-文本和图像-图像的检索任务。
  • Product1M[95]:包含118万图像-描述对,涵盖458个类别,92,200个实例。与常规物体检测基准数据集不同,该数据集采用了一种粘贴方式获取实例位置。首先对目标物体进行分割,然后将其粘贴到其他图像中。它可用于多种任务,包括弱监督、多模态和实例级检索。
  • WIT[96]:由Wikipedia爬取并经过严格的过滤操作,最终得到超过3750万对图像-文本对。WIT数据集是多语言的,而其他数据集通常仅包含单一语言(例如英语或中文)。
  • JFT-300M[97]:包含约3亿张图像和3.75亿个标签,每张图像大约有1.26个标签。该数据集有18,291个类别,包括1,165种动物和5,720种车辆等。值得注意的是,这个数据集不能在线获取。
  • JFT-3B[98]:也是一个内部使用的Google数据集,包含约30亿张图像。样本通过半自动化方式进行标注,拥有30,000个标签的类层次结构。由于包含大量噪声样本,这个数据集同样不可在线访问。
  • IG-3.5B-17k[99]:为了弱监督预训练,收集了来自Instagram的图像。与JFT-300M和JFT-3B类似,该数据集仅在Facebook内部可用,无法公开获取。
  • M6-Corpus[100]:专门为预训练视觉-中文大模型M6构建的数据集。该数据集包含6,050万张图像和1118亿个令牌,数据来自各种来源,如产品描述、社区问答和论坛等。
  • M5Product[101]:这是一个专门为电子商务提出的基准数据集,包含600万个多模态样本,涵盖6,000个类别、5,000个属性和五种模态,包括图像、表格、视频、语言描述和音频。与标准的多模态数据集不同,M5Product数据集中的每个样本可能只包含部分模态,并且存在长尾分布问题。
  • Localized Narratives[102]:由Pont-Tuset等人在2020年提出的数据集,提供了一种新的多模态图像注释形式,将图像与相应的语音描述、文本描述和鼠标轨迹相结合,从而提供了语言和视觉之间的密集对接。该数据集包含849K张图像,覆盖了COCO、Flickr30k、ADE20K和Open Images数据集。
  • RUC-CAS-WenLan[103]:通过多源图像-文本数据爬取获得,包含约3000万对图像-文本对。这些样本涵盖体育、娱乐、新闻、艺术、文化等广泛主题,为WenLan项目提供支持,并用于训练BriVL模型。
  • WuDaoMM[104]:一个大规模的多模态数据集,包含超过6.5亿对图像和中文文本样本。该数据集包括超过6亿和5千万弱相关和强相关的图像-文本对,另外还发布了500万强相关的图像-文本对,用于支持中文跨模态预训练任务。
  • MEP-3M[105]:这是一个从多个中国大型电子商务平台收集的大规模图像-文本数据集,包含300万对产品图像-文本对和599个类别。该数据集的一个关键特点是层次分类,涵盖了14个大类、599个子类,和13个子类的进一步子类。
  • WSCD[106](弱语义关联数据集):这是一个多源数据集,包含6.5亿对图像-文本数据样本。所有英文文本都被翻译成中文,用于支持BriVL的预训练。

3.4 预训练目标

如何设计学习目标是多模态预训练中一个非常重要的步骤。目前,提出了多种学习目标,包括对比损失、生成损失等,如图5所示。
在这里插入图片描述

● 对比损失(Contrastive Loss,CS)函数通常构建正负训练样本,广泛应用于双模态。例如,CLIP[73]、ALIGN[21] 都是通过对比学习损失进行训练的。VinVL[108] 的作者采用了三路对比损失来替代Oscar模型[17]中使用的二元对比损失函数。ALIGN中的对比损失定义如下:

L i 2 t = − 1 N ∑ i = 1 N log ⁡ exp ⁡ ( x i T y i / σ ) ∑ j = 1 N exp ⁡ ( x i T y j / σ ) L_{i2t} = - \frac{1}{N} \sum_{i=1}^{N} \log \frac{\exp(x_i^T y_i / \sigma)}{\sum_{j=1}^{N} \exp(x_i^T y_j / \sigma)} Li2t=N1i=1Nlogj=1Nexp(xiTyj/σ)exp(xiTyi/σ)
L t 2 i = − 1 N ∑ i = 1 N log ⁡ exp ⁡ ( y i T x i / σ ) ∑ j = 1 N exp ⁡ ( y i T x j / σ ) L_{t2i} = - \frac{1}{N} \sum_{i=1}^{N} \log \frac{\exp(y_i^T x_i / \sigma)}{\sum_{j=1}^{N} \exp(y_i^T x_j / \sigma)} Lt2i=N1i=1Nlogj=1Nexp(yiTxj/σ)exp(yiTxi/σ)
L C L = L i 2 t + L t 2 i (1) L_{CL} = L_{i2t} + L_{t2i} \tag{1} LCL=Li2t+Lt2i(1)

其中, L i 2 t L_{i2t} Li2t L t 2 i L_{t2i} Lt2i L C L L_{CL} LCL 分别是图像到文本的分类损失、文本到图像的分类损失和总对比损失。 x i x_i xi 表示第 i i i 对的归一化图像嵌入, y i y_i yi 表示第 i i i 对的归一化文本嵌入。 N N N 是批次大小, σ \sigma σ 是温度参数。

● 模态匹配损失(Modality Matching Loss,MML)由于各种模态之间显式或隐式的对齐关系,广泛应用于多模态预训练的大型模型中。例如,Unicoder-VL[109] 利用视觉-语言匹配(Visual-Linguistic Matching,VLM)进行视觉-语言预训练。他们提取正负图像-句子对,并训练模型预测给定的样本对是否对齐(换句话说,预测匹配得分)。与常规的负图像-文本样本不同,InterBERT[110] 的作者通过选择最高的TF-IDF相似度,设计了带有困难负样本的图像-文本匹配(即ITM-hn)。

● 掩码语言模型(Masked Language Modeling,MLM)是另一种广泛使用的预训练目标。通常,研究人员会随机掩盖并使用特殊标记填充输入词。周围的词和对应的图像区域可以作为参考,用于预测被掩盖的词。Wang 等人[111] 训练了 SIMVLM,使用前缀语言建模(PrefixLM),它对前缀序列执行双向注意力,而对其余的词执行自回归因子分解。词用 x x x 表示,图像区域用 v v v 表示。对于MLM,输入的词通过掩码索引 m m m 随机生成,掩盖的概率为 p p p。优化目标是基于所有图像区域和剩余的词 x ¬ m x_{\neg m} x¬m 来预测被掩盖的词 x m x_m xm,通过最小化负对数似然:
L M L M ( θ ) = − E ( x , v ) log ⁡ P θ ( x m ∣ x ¬ m , v ) L_{MLM}(\theta) = -E(x, v) \log P_{\theta}(x_m | x_{\neg m}, v) LMLM(θ)=E(x,v)logPθ(xmx¬m,v)
其中, θ \theta θ 是可训练的参数。除了MLM外,SIMVLM中的PrefixLM也可以用来预训练视觉-语言表示:
L P r e f i x L M ( θ ) = − E x ∼ D log ⁡ P θ ( x ≥ T p ∣ x < T p ) L_{PrefixLM}(\theta) = -E_{x \sim D} \log P_{\theta}(x_{\geq T_p} | x_{< T_p}) LPrefixLM(θ)=ExDlogPθ(xTpx<Tp)
其中, x x x 是给定的文本序列, D D D 是预训练数据集, T p T_p Tp 是前缀序列的长度。
● 掩码片段建模(Masked Segment Modeling,MSM)通过特殊标记掩盖给定文本的连续片段,同时,掩码语言建模(MLM)则是掩盖随机的单词。
● 图像问答(Image Question Answering,QA)在 LXMERT[112] 中被用来进一步扩展预训练数据,因为许多图像-句子对实际上是图像和问题。作者训练他们的模型,作为预训练目标之一来预测答案。
掩码物体分类(Masked Object Classification,MOC) 主要关注通过将视觉图像掩盖为零值来实现。然后,通常通过物体检测器预测标签作为真实标签。这种预训练目标被广泛使用,如 Unicoder-VL[109]。与 MLM 类似,图像区域可以通过以一定概率 p p p 掩盖它们的视觉特征来进行掩盖。目标是预测被掩盖图像区域的物体类别。掩盖图像区域的编码器输出被送入一个全连接(FC)层,预测物体类别的分数,这些分数随后通过 softmax 函数转化为归一化的分布。最终目标是:
L M O C ( θ ) = − E ( w , v ) ∑ i = 1 M C E ( c ( v i m ) , g θ ( v i m ) ) L_{MOC}(\theta) = -E(w, v) \sum_{i=1}^{M} CE(c(v_i^m), g_{\theta}(v_i^m)) LMOC(θ)=E(w,v)i=1MCE(c(vim),gθ(vim))
其中, c ( v i m ) c(v_i^m) c(vim) 是真实标签, g θ ( v i m ) g_{\theta}(v_i^m) gθ(vim) 是由模型预测的标签。

掩码物体回归(Masked Object Regression,MOR) 用于回归被掩盖的特征或图像区域。例如,LXMERT[112]考虑了 MOC 和 MOR 两种方法作为预训练的目标。
y ( v , t ) \mathbf{y(v, t)} y(v,t)

图像-文本匹配(Image-Text Matching,ITM) 旨在对齐图像和文本数据。负向训练数据通过随机采样生成,包括每张图像的负文本和每个句子的负图像。真实标签 y \mathbf{y} y 表示每个图像-文本对的标签。使用二分类损失函数进行优化:
L I T M ( θ ) = − E ( v , t ) [ y log ⁡ s θ ( v , t ) + ( 1 − y ) log ⁡ ( 1 − s θ ( v , t ) ) ] L_{ITM}(\theta) = -E(v, t) \left[y \log s_{\theta}(v, t) + (1 - y) \log(1 - s_{\theta}(v, t))\right] LITM(θ)=E(v,t)[ylogsθ(v,t)+(1y)log(1sθ(v,t))]
其中, s θ s_{\theta} sθ 表示图像-文本相似度分数。

单向语言模型(Unidirectional LM,UiDT) 仅使用单一方向的历史信息进行掩码词预测,例如左到右和右到左的语言模型目标。成功的例子包括 ELMo[113] 和 UNILM[114]。

双向语言模型(Bidirectional LM,BiDT) 与单向语言模型不同,双向语言模型考虑来自两个方向的上下文信息。因此,文本的上下文表示可以更准确地编码。BERT[10]、UNIML[114] 和 VLP[24] 都采用 BiDT 作为预训练目标之一。

序列到序列语言模型(Sequence-to-sequence LM,Seq2seq) 是 VLP[24] 等中使用的预训练目标。它将输入视为不同部分,每部分可以关注不同的上下文。

词-区域对齐(Word-Region Alignment,WRA) 在 UNITER[18] 中使用,旨在通过最优传输(Optimal Transport,OT)明确实现多模态输入之间的精细对齐。具体来说,作者学习一个传输计划,即一个二维矩阵,来优化对齐,并使用 IPOT 算法[116]估计近似 OT 距离。然后,作者将此距离作为 WRA 损失来优化其网络。

动作预测(Action Prediction,AP) 用于评估为视觉-语言导航(VLN)开发的代理是否能够根据当前图像和指令准确地选择正确的动作[117]。

图像条件去噪自编码(Image-Conditioned Denoising Autoencoding,IDA) 在 XGPT[11] 中使用,通过注意力矩阵对齐底层的图像-文本对。即使没有事先知道被掩盖片段的长度,IDA 仍然能够成功地重构整个句子。

属性预测(Attribute Prediction,AttP) 用于恢复掩盖的属性对,如 ERNIE-ViL[118] 中所述。

关系预测(Relation Prediction,RelP) 在 ERNIE-ViL[118] 中用于预测每个被掩盖关系词的概率,以恢复被掩盖的关系词。

对齐 Kaleido 补丁建模(Aligned Kaleido Patch Modeling,AKPM) 是 Kaleido-BERT[119] 为了预训练提出的一种方法,其中包含五个 Kaleido 子任务:旋转识别(RR)、拼图解谜(JPS)、伪装预测(CP)、灰度到彩色建模(G2CM)和空白到彩色建模(B2CM):
L R R = C E ( y r , F ( T , K , θ ) K 1 hidden ) L_{RR} = CE(y_r, F(T, K, \theta) K1_{\text{hidden}}) LRR=CE(yr,F(T,K,θ)K1hidden)
L J P S = C E ( y j , F ( T , K , θ ) K 2 hidden ) L_{JPS} = CE(y_j, F(T, K, \theta) K2_{\text{hidden}}) LJPS=CE(yj,F(T,K,θ)K2hidden)
L C P = C E ( y c , F ( T , K , θ ) K 3 hidden ) L_{CP} = CE(y_c, F(T, K, \theta) K3_{\text{hidden}}) LCP=CE(yc,F(T,K,θ)K3hidden)
L G 2 C M = ∑ K L D ( k 4 i , F ( T , K , θ ) K 4 hidden ) L_{G2CM} = \sum KLD(k4_i, F(T, K, \theta) K4_{\text{hidden}}) LG2CM=KLD(k4i,F(T,K,θ)K4hidden)
L B 2 C M = ∑ K L D ( k 5 i , F ( T , K , θ ) K 5 hidden ) L_{B2CM} = \sum KLD(k5_i, F(T, K, \theta) K5_{\text{hidden}}) LB2CM=KLD(k5i,F(T,K,θ)K5hidden)
其中, C E CE CE 表示交叉熵损失函数, y r y_r yr y j y_j yj y c y_c yc 分别表示旋转角度、拼图、伪装的标签, K L D KLD KLD 表示 KL 散度, K 1 K_1 K1 K 2 K_2 K2 K 3 K_3 K3 K 4 K_4 K4 K 5 K_5 K5 分别是 Kaleido 补丁的隐藏输出, K p K_p Kp 是掩盖的补丁。

物体检测(Object Detection,OBD) 在[120]中作为一种直接集预测方法引入,以增强预训练效果。此外,作者还考虑了物体属性预测,以学习精细的语义信息。为 OBD 定义的负对数似然损失如下:
σ ^ = arg ⁡ min ⁡ σ ∈ φ N ∑ i = 1 N L match ( y i , y ^ σ ( i ) ) \hat{\sigma} = \arg \min_{\sigma \in \varphi_N} \sum_{i=1}^{N} L_{\text{match}}(y_i, \hat{y}_{\sigma(i)}) σ^=argσφNmini=1NLmatch(yi,y^σ(i))
L OBD ( y , y ^ ) = ∑ i = 1 N [ − log ⁡ p ^ σ ^ ( i ) ( a i ) − log ⁡ p ^ σ ^ ( i ) ( c i ) + L box ( b i , b ^ σ ^ ( i ) ( i ) ) ] L_{\text{OBD}}(y, \hat{y}) = \sum_{i=1}^{N} \left[ -\log \hat{p}_{\hat{\sigma}(i)}(a_i) - \log \hat{p}_{\hat{\sigma}(i)}(c_i) + L_{\text{box}}(b_i, \hat{b}_{\hat{\sigma}(i)}(i)) \right] LOBD(y,y^)=i=1N[logp^σ^(i)(ai)logp^σ^(i)(ci)+Lbox(bi,b^σ^(i)(i))]
其中, y y y 表示物体的真实集合, y ^ = { y ^ i } i = 1 N \hat{y} = \{\hat{y}_i\}_{i=1}^N y^={y^i}i=1N 表示预测的物体集合,元素的数量为 N N N σ \sigma σ 表示 N N N 个元素排列的代价, L match ( y i , y ^ σ ( i ) ) \mathcal{L}_{\text{match}}(y_i, \hat{y}_{\sigma(i)}) Lmatch(yi,y^σ(i)) 表示索引为 σ ( i ) \sigma(i) σ(i) 的预测值与真实值 y i y_i yi 之间的两两匹配损失。 p ^ σ ( i ) ( a i ) \hat{p}_{\sigma(i)}(a_i) p^σ(i)(ai) p ^ σ ( i ) ( c i ) \hat{p}_{\sigma(i)}(c_i) p^σ(i)(ci) 分别表示属性和类别的概率, L box ( b i , b ^ σ ( i ) ( i ) ) L_{\text{box}}(b_i, \hat{b}_{\sigma(i)}(i)) Lbox(bi,b^σ(i)(i)) 是边界框回归的归一化损失。

图像-文本生成(Image-Text Generation,ITG) 在视觉-语言相关的预训练任务中也扮演了重要角色。对齐的图像和文本可以用来训练基于给定图像生成文本的模型。例如,Xu 等人[120]训练了 E2E-VLP,采用 ITG 目标进行训练:
L ITG = − ∑ ( x , y ) ∈ ( X , Y ) log ⁡ ∏ t = 1 n P ( y t ∣ y < t , x ) L_{\text{ITG}} = - \sum_{(x,y) \in (X, Y)} \log \prod_{t=1}^{n} P(y_t | y_{<t}, x) LITG=(x,y)(X,Y)logt=1nP(yty<t,x)
其中, X \mathcal{X} X 表示带有上下文的视觉序列, Y \mathcal{Y} Y 表示生成的文本集合,文本 Y \mathcal{Y} Y 中的 token 长度为 n n n

视频-字幕匹配(Video-Subtitle Matching, VSM) 为视频-文本预训练任务考虑了两个目标:1)局部对齐;2)全局对齐,正如 HERO[121] 所使用的。得分函数和对应的损失函数定义如下:

局部对齐得分:
S local ( s q , v ) = V temp q ∈ R N v S_{\text{local}}(s_q, \mathbf{v}) = \mathbf{V}^{\text{temp}} \mathbf{q} \quad \in \mathbb{R}^{N_v} Slocal(sq,v)=VtempqRNv

全局对齐得分:
S global ( s q , v ) = max ⁡ ( V temp ∥ V temp ∥ ⋅ q ∥ q ∥ ) S_{\text{global}}(s_q, \mathbf{v}) = \max \left( \frac{\mathbf{V}^{\text{temp}}}{\|\mathbf{V}^{\text{temp}}\|} \cdot \frac{\mathbf{q}}{\|\mathbf{q}\|} \right) Sglobal(sq,v)=max(VtempVtempqq)

合并的 Hinge 损失:
L h ( S pos , S neg ) = max ⁡ ( 0 , δ + S pos − S neg ) \mathcal{L}_h(S_{\text{pos}}, S_{\text{neg}}) = \max(0, \delta + S_{\text{pos}} - S_{\text{neg}}) Lh(Spos,Sneg)=max(0,δ+SposSneg)

局部对齐损失:
L local = − E D [ log ⁡ p st [ y st ] + log ⁡ p ed [ y ed ] ] \mathcal{L}_{\text{local}} = -E_D \left[ \log p_{\text{st}}[y_{\text{st}}] + \log p_{\text{ed}}[y_{\text{ed}}] \right] Llocal=ED[logpst[yst]+logped[yed]]

全局对齐损失:
L global = − E D [ L h ( S global ( s q , v ) , S global ( s ^ q , v ) ) ] + L h ( S global ( s q , v ) , S global ( s q , v ^ ) ) \mathcal{L}_{\text{global}} = -E_D \left[ \mathcal{L}_h(S_{\text{global}}(s_q, \mathbf{v}), S_{\text{global}}(\hat{s}_q, \mathbf{v})) \right] + \mathcal{L}_h(S_{\text{global}}(s_q, \mathbf{v}), S_{\text{global}}(s_q, \hat{\mathbf{v}})) Lglobal=ED[Lh(Sglobal(sq,v),Sglobal(s^q,v))]+Lh(Sglobal(sq,v),Sglobal(sq,v^))

总损失函数:
L VSM = λ 1 L local + λ 2 L global \mathcal{L}_{\text{VSM}} = \lambda_1 \mathcal{L}_{\text{local}} + \lambda_2 \mathcal{L}_{\text{global}} LVSM=λ1Llocal+λ2Lglobal

其中:

  • s q s_q sq 表示从所有字幕句子中采样的查询;
  • v \mathbf{v} v 是完整的视频片段;
  • V temp ∈ R N v × d \mathbf{V}^{\text{temp}} \in \mathbb{R}^{N_v \times d} VtempRNv×d 是通过时序 Transformer 生成的最终视觉帧表示;
  • q ∈ R d \mathbf{q} \in \mathbb{R}^d qRd 是最终的查询向量;
  • y st , y ed ∈ { 1 , … , N v } y_{\text{st}}, y_{\text{ed}} \in \{1, \dots, N_v\} yst,yed{1,,Nv} 分别表示起始和结束的索引;
  • p st , p ed ∈ R N v p_{\text{st}}, p_{\text{ed}} \in \mathbb{R}^{N_v} pst,pedRNv 是从得分生成的概率向量;
  • p [ y ] p[y] p[y] 表示向量 p p p 中第 y y y 个元素;
  • L h \mathcal{L}_h Lh 表示正负查询-视频对的合并 Hinge 损失;
  • ( s q , v ) (s_q, \mathbf{v}) (sq,v) 是正样本对,而 ( s ^ q , v ) (\hat{s}_q, \mathbf{v}) (s^q,v) ( s q , v ^ ) (s_q, \hat{\mathbf{v}}) (sq,v^) 是负样本对;
  • δ \delta δ 是边界超参数;
  • λ 1 \lambda_1 λ1 λ 2 \lambda_2 λ2 是平衡因子。

帧顺序建模(Frame Order Modeling,FOM) 在 HERO[121] 中被视为一个分类问题,其目标是重建选定视频帧的时间戳。FOM 的目标函数定义如下:
L FOM = − E D ∑ i = 1 R log ⁡ P [ r i , t i ] L_{\text{FOM}} = -E_D \sum_{i=1}^{R} \log P[r_i, t_i] LFOM=EDi=1RlogP[ri,ti]
其中, R R R 是重新排序的帧数, i ∈ [ 1 , R ] i \in [1, R] i[1,R] t i ∈ { 1 , ⋯ , N v } t_i \in \{1, \cdots, N_v\} ti{1,,Nv} 是重新排序的索引, P ∈ R N v × N v P \in \mathbb{R}^{N_v \times N_v} PRNv×Nv 是概率矩阵。

文本方面-观点提取(Aspect-Opinion Extraction,AOE) 的目标是从文本中提取方面和观点词,如文献[122] 所述。为了解决监督学习中所需标签信息的缺失,作者依赖其他模型进行方面提取和观点提取。获得的方面和观点词被视为 AOE 任务的标签。

视觉方面-观点生成(Aspect-Opinion Generation,AOG) 旨在生成从输入图像中检测到的方面-观点对[122]。

多模态情感预测(Multi-modal Sentiment Prediction,MSP) 通过捕获视觉-语言输入中的主观信息来增强预训练模型[122]。

模态级别掩码(Modality-Level Masking,MoLM) 在文献[22] 中用于学习文本、视觉和音频之间的对齐。作者以一定概率分别掩盖每种模态。

结构知识掩码(Structural Knowledge Masking,SKM) 在文献[123] 中被提出,尝试基于知识条目提供的线索选择性地掩盖标记。掩码概率用于计算掩码索引 M w M_w Mw M r M_r Mr,分别表示需要掩盖的句子中的单词和图像的视觉区域。SKM语言模型的损失函数可以表述为:
L SKMLM ( θ ) = − E ( W , R ) ∼ D log ⁡ P θ ( W M w ∣ W ∖ M w , R ∖ M r ) L_{\text{SKMLM}}(\theta) = -E_{(W, R) \sim D} \log P_{\theta}(W_{M_w} | W_{\setminus M_w}, R_{\setminus M_r}) LSKMLM(θ)=E(W,R)DlogPθ(WMwWMw,RMr)
其中, θ \theta θ 是模型参数, W ∖ M w W_{\setminus M_w} WMw R ∖ M r R_{\setminus M_r} RMr 分别表示序列中未掩盖的单词和图像中剩余的区域。

3.5 预训练网络架构

现有的多模态预训练模型(MM-PTMs)采用了多种网络架构,如表3所示。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.5.1 自注意力和Transformer

 在大规模预训练时代,大多数当前的预训练模型都受到Transformer的启发(主要由自注意力层组成)。Transformer最初于2017年为自然语言处理任务开发[9],在许多下游任务上显著提升了性能,成为新的SOTA(最先进技术)。这一框架随后被引入计算机视觉领域,因此,为各种任务和输入设计统一的网络架构成为当前的研究热点。

给定输入 x x x,一个注意力模块被用来生成注意力权重 A ( x ) A(x) A(x),然后基于输入 x x x A ( x ) A(x) A(x)执行一些处理得到关注后的输入 x ′ = f ( A ( x ) , x ) x' = f(A(x), x) x=f(A(x),x)。许多注意力模型基于这一思想设计,例如通道注意力、空间注意力、时间注意力、分支注意力[124]。自注意力机制是注意力机制的一种特殊形式,如图6所示。
在这里插入图片描述

具体来说,自注意力的计算如下:
MultiHead ( Q , K , V ) = [ head 1 , ⋯ , head h ] W O \text{MultiHead}(Q, K, V) = [\text{head}_1, \cdots, \text{head}_h] W_O MultiHead(Q,K,V)=[head1,,headh]WO
head i = Attention ( Q W Q i , K W K i , V W V i ) \text{head}_i = \text{Attention}(QW_Q^i, KW_K^i, VW_V^i) headi=Attention(QWQi,KWKi,VWVi)
其中, [ ⋅ , ⋅ ] [\cdot, \cdot] [,]表示拼接操作, W Q i W_Q^i WQi W K i W_K^i WKi W V i W_V^i WVi W O W_O WO是参数矩阵。

3.5.2 单流和多流架构

多层Transformer被广泛应用于许多当前的MM-PTMs。每种模态的输入首先通过独立编码器提取为特征嵌入,然后与其他模态交互。根据多模态信息融合的方式,MM-PTMs可以分为两类:单流(Single-stream)和交叉流(Cross-stream)。在本小节中,将分别介绍这两种架构。

  • 单流架构
    多模态输入(如图像和文本)被平等对待,并在一个统一的模型中融合。每种模态提取的单模态特征被分块并通过分隔符拼接作为多模态Transformer的输入进行融合,如图7(a)所示。在Transformer中,通常采用多头自注意力(MHSA)机制交互式地融合单模态特征,随后从Transformer的分类token中输出多模态融合特征。基于单流结构的大规模MM-PTMs包括视觉-语言预训练模型(如Oscar[17]和ALBEF[125])以及视觉-语言-音频预训练模型OPT[22]。单流预训练模型基于强语义相关性进行token级匹配,例如图像的物体特征与物体标签的语义特征匹配。该架构提供了单模态特征之间的真实交互,多模态融合特征包含来自不同模态的信息,具备更好的表征能力。

在这里插入图片描述

  • 交叉流架构(Cross-stream)
    在交叉流架构中,不同模态的特征通过独立模型并行提取,并通过自监督对比学习进行对齐。预训练模型获取的是对齐的单模态特征,而不是融合的多模态特征。如图7(b)所示,多模态融合特征是通过拼接单模态特征获得的,然后输入到多层感知机(MLP)中以实现预训练目标学习。

在这里插入图片描述

基于交叉流架构的代表性大规模MM-PTMs包括BriVL[103]和CLIP[73]等。与基于单流架构的预训练模型相比,交叉流模型将不同模态的特征对齐到一致的高维特征空间,例如文本语义和视觉图像表示。交叉流预训练模型通常包含对比学习(CS)预训练目标,并基于“弱语义相关性”[103]实现嵌入级别的匹配。

交叉流模型的结构更具灵活性,修改模型某一模态的分支结构不会影响其他模态,这使其更容易在实际场景中部署。然而,交叉流模型提取的是对齐的多模态通用特征,如何有效利用多模态数据之间的信息差异和互补性仍是需要研究的问题。

此外,根据预训练目标的需要,预训练模型的结构可以分为带解码器和不带解码器两种。如果预训练目标包含生成任务(如掩码图像重构、根据文本描述生成匹配图像等),预训练模型会在编码器之后添加解码器,将多模态融合特征转换为对应的输出。

在这里插入图片描述

图8 MM-PTM广泛使用的模态交互式学习模块:(a)合并注意[127];(B)共同注意[127];(c)交叉注意[126];(d)缠结转换器[128];(e)对比学习[73]。

3.5.3 模态交互学习

当前大多数大规模预训练多模态模型采用拼接(concatenate)、相加(add)、合并注意力(merge-attention)、协同注意力(co-attention)和交叉注意力(cross-attention)[126] 实现模态之间的交互学习。以下对这些模块进行介绍:

合并注意力(Merge-attention)
如图8(a)所示,通过拼接输入模态来获得统一的特征表示。然后将该特征输入到融合网络中。例如,i-Code[127] 沿时间和空间维度展平视觉输入。需要注意的是,该注意力模型的参数在这些输入模态之间共享。

协同注意力(Co-attention)
对于协同注意力模块(如图8所示),每个输入模态都有自己的自注意力层,用于模态特定特征嵌入。然后,使用交叉注意力层将多个嵌入融合。

交叉注意力(Cross-attention)
在多模态任务中,关键步骤是如何设计一个融合模块以有效连接多模态输入。例如,Suo等人[126] 提出了交叉注意力层,用于在视觉问答中巧妙地集成图像和语言。具体而言,他们将一种模态的输入放入另一种模态的自注意力网络的 Q Q Q 分支中。然后,将两种模态的输出拼接为一个统一的表示用于最终预测。
Tangled-transformer
Tangled Transformer (TNT)[128] 提出了一种方法,可以同时处理动作特征、区域物体特征和语言特征,使用三个Transformer模块。如图8(d)所示,作者将一种模态注入到专为其他模态设计的Transformer网络中,以增强模态之间的交互。

模态间对比学习(Inter-modality Contrastive Learning)
对比学习被广泛用于模态间关系建模,例如CLIP[73]及其后续研究[19, 101, 129−133]。代表性工作SCALE[101]使用了自和谐模态间对比学习(SIMCL),其损失函数可表示为:
L CL ( d i ( 0 ) , d i ( 1 ) ) = − log ⁡ exp ⁡ ( Sim ( f i ( 0 ) , f i ( 1 ) ) / τ ) ∑ m = 0 1 ∑ k = 1 N 1 [ k ≠ i ] exp ⁡ ( Sim ( f i ( m ) , f k ( 1 − m ) ) / τ ) L_{\text{CL}}(d_i^{(0)}, d_i^{(1)}) = - \log \frac{\exp(\text{Sim}(f_i^{(0)}, f_i^{(1)}) / \tau)}{\sum_{m=0}^{1} \sum_{k=1}^{N} 1_{[k \neq i]} \exp(\text{Sim}(f_i^{(m)}, f_k^{(1-m)}) / \tau)} LCL(di(0),di(1))=logm=01k=1N1[k=i]exp(Sim(fi(m),fk(1m))/τ)exp(Sim(fi(0),fi(1))/τ)
其中, ( d i ( 0 ) , d i ( 1 ) ) (d_i^{(0)}, d_i^{(1)}) (di(0),di(1)) 是正样本对, d i ( 0 ) d_i^{(0)} di(0) 和其他样本的配对将生成负训练数据。 f i ( 0 ) f_i^{(0)} fi(0) f i ( 1 ) f_i^{(1)} fi(1) 分别表示 d i ( 0 ) d_i^{(0)} di(0) d i ( 1 ) d_i^{(1)} di(1) 的特征嵌入, Sim \text{Sim} Sim 表示余弦相似度, 1 [ k ≠ i ] 1[k \neq i] 1[k=i] 是二元指示函数, τ \tau τ 是温度参数。

3.6 基于知识的预训练

传统的预训练模型存在逻辑推理能力不足和缺乏可解释性的问题。为了解决这些问题,可以在预训练模型中引入知识,即对数据的深入理解,这种方法称为基于知识的预训练,也称为知识增强预训练模型(KEPTMs),如图9所示。
在这里插入图片描述

知识表示学习 通过学习表示符号化知识(通常以实体和关系的形式),知识表示学习使基于神经网络的模型能够融合知识并提高其推理能力。相似性模型和图神经网络(GNN)模型是知识表示学习的两种主要方法。

相似性模型 基于相似性的评分函数,相似性模型衡量两个实体之间潜在语义的相似性。基于翻译的模型是相似性模型的代表,因为向量空间中的距离通常用于描述相似性。例如: TransE最早通过翻译建模关系,在低维空间上对实体嵌入进行操作[192]。 TransH为了在复杂模型中高效处理关系的映射属性(如反身、一对多、多对一和多对多),将关系建模为超平面上的翻译操作[193]。 TransR提出了在独立空间中嵌入实体和关系,以捕捉不同关系上的实体特性[194]。 TransD相较于TransR,不仅考虑了关系的多样性,还考虑了实体的多样性[195]。 TranSparse针对知识图谱带来的异质性和不平衡性问题,将转移矩阵替换为自适应稀疏矩阵,因为关系连接的实体数量决定了稀疏程度[196]。 除了基于翻译的模型外,张量或矩阵分解方法也被提出用于多关系数据,通过引入评分或排序函数来衡量语义匹配的正确性。例如: RESCAL具有集体学习能力,并能为三向张量分解提供高效算法[197]。 NTN引入了一种强大的神经张量网络,用于推理两个实体之间的关系[198]。 DistMult提出了一个多关系学习的通用框架,并展示了简单双线性公式的有效性[199]。 SME设计了一种新的神经网络架构,将多关系图或张量编码到灵活的连续向量空间中,从而可以学习多关系语义[200]。 HolE通过利用关联记忆的全息模型和循环相关性,创建组合表示,从而学习整个知识图的组合向量空间表示[201]。

图神经网络模型为了进一步利用图的结构而不仅仅是三元组集合,图神经网络(GNN)模型被用来嵌入实体和关系。由于卷积神经网络(CNNs)在不同领域的识别任务中表现出极高的效率,因此在文献[202]中,CNN被推广到图中,通过基于领域的层次聚类和图拉普拉斯谱进行图卷积。受这一开创性工作的启发,图卷积网络(GCNs)得到了进一步研究,例如: 半监督分类[203],基于变分自编码器(VAE)的无监督学习[204],通过采样和聚合节点局部邻域特征的归纳表示学习[205],利用掩码自注意力层的注意力机制[206]。
超越传统的GCNs,关系图卷积网络(R-GCNs) 被开发出来,用于处理真实知识库中高度多关系数据的特性[207]。结构感知卷积网络(SACN)结合了GCN和ConvE[208]的优势,其中GCN作为编码器利用知识图节点结构,而ConvE作为解码器实现了翻译特征[209]。此外,为了进一步增强图注意力网络(GATs)并捕捉任何实体邻域中的实体和关系特征,提出了一种基于注意力的特征嵌入模型[210]。为了在知识图谱(KGs)中嵌入实体和关系时利用多种组合操作,并适应关系数量不断增加的情况,提出了一种基于组合的GCN(CompGCN),用于联合嵌入节点和关系[211]。

知识融合方法在知识表示学习之后,如何将知识融合到预训练模型中,并提升其对数据的逻辑理解能力,仍然是研究者面临的一项挑战。根据知识的类型,知识增强预训练模型(KEPTMs)大致分为两类:非结构化知识增强模型结构化知识增强模型

非结构化知识增强模型(Unstructured KEPTMs) 非结构化知识通常指没有结构的信息,如纯文本形式的单词或短语。尽管一些文献中引入了实体作为监督数据并取得了令人满意的性能,但这些方法仅使用实体来使预训练模型学习语义或获取额外的关键特征,却忽略了结构化信息。例如: 字符对齐注意力 将字符级注意力对齐到单词级,以利用中文中的显式单词信息[212]。SentiLARE 引入词性标注和情感极性,以构建单词级语言知识[213]。由于通过非结构化文本训练的神经语言模型能够隐式存储知识,预训练模型可以通过进一步微调,在无需访问外部知识或上下文的情况下显式检索知识[214]。
结构化知识增强预训练模型(Structured KEPTMs) 与非结构化知识增强模型相反,结构化知识增强模型考虑了多种结构化信息,包括句法树、规则和知识图谱。 Syntax-BERT 有效地将句法树整合到预训练Transformer中[215]。 LIMIT-BERT 学习了跨多种语言学任务(包括成分句法和依赖句法解析)的语言表示[216]。 Syntax-GNN 使用依存树学习句法表示,并将这些嵌入融合到Transformer中[215]。知识图谱(KGs)提供了以实体及其之间关系为形式的结构化知识。增强型语言表示模型 ERNIE 通过利用大规模文本语料库和知识图谱进行训练,从而能够同时利用词汇、句法和知识[217]。类似的工作 KnowBert 被提出,用于大规模模型嵌入多个知识库,结合实体链接器,检索相关实体嵌入并通过单词到实体注意力更新上下文单词表示[218]。此外,基于大规模外部知识库寻找支持性事实,还可以发展模型的推理能力[219, 220]。 规则,以约束或逻辑表达式的形式,由于其可解释性和问责性,受到青睐。HEX图 被提出以捕获应用于同一对象的标签之间的语义关系,从而增强现有模型[221]。

知识评估任务 除了传统的性能指标外,还需要更多以知识为导向的任务来评估KEPTMs的能力,并检查外部知识是否真正有助于模型从语义上理解数据。知识评估任务充当测试平台,确保知识融合方法的有效性。目前,知识评估任务主要集中于自然语言处理任务,并可根据所需知识的类型分为两类:事实性知识评估任务常识性知识评估任务

事实性知识评估任务 事实性知识是关于客观事实的知识,包括描述客观事实的具体细节和元素[28]。事实性知识评估任务关注测试模型在不同领域中对事实知识的推理能力,例如通过提供事实回答问题或判断给定事实的正确性。 Natural Questions 是第一个公开可用的大型数据集,还引入了稳健的指标来评估问答(QA)系统的性能[222]。 HotpotQA 是另一个问答数据集,提供句子级的支持性事实用于推理,并包含新型的事实比较问题[223]。 与上述两个开放域问答任务不同,BoolQ 仅涉及是/否类型的自然生成问题,即在无提示和无限制的环境下验证生成的事实。这些查询涉及复杂和非事实性信息,因此具有意外的挑战性[224]。 另一项任务 FEVER 专注于事实提取和验证,引入了“信息不足”(NotEnoughInfo)这一新类别,补充了现有的“支持”(Supported)和“驳斥”(Refuted)类别[225]。 实体链接(Entity Linking) 通过将知识库中的实体链接到语料库中的相应文本提及,也可用于评估模型对事实性知识的理解[226]。
常识性知识评估任务 常识性知识 是指大多数人普遍接受的关于日常生活的信息,即关于世界如何运作的实际知识[29]。与事实性知识评估任务类似,常识性问答(QA)也关注问答任务,但这类问答需要利用给定文档或上下文之外的先验知识[227]。为了扩展问答任务,还提出了溯因自然语言推理(Abductive NLI)溯因自然语言生成(Abductive NLG) 等条件生成任务,用于以自然语言解释给定的观察[228]。CommonGen 明确测试了模型的常识生成推理能力,其测试严格要求包括关系推理和组合泛化[229]。除了评估模型对日常场景理解的通用常识评估任务,还设计了针对不同场景的特定常识知识任务:SocialIQA是一个用于社会常识推理的大规模基准任务,即使对于预训练模型(PTMs)也充满挑战[230]。除了人类交互,物理交互也是常识知识的重要组成部分,因此引入了PIQA 任务,用于物理常识推理[231]。时间常识 对于理解事件的时间安排(例如持续时间、频率和顺序)至关重要,从而实现正确的推理。McTaco 定义了五类时间常识[232],而TRACIE 用于评估模型对隐含事件的时间理解能力[233]。

3.7 不同预训练大模型的特性

在前面提到的段落中,我们对多模态预训练模型的主要流派进行了回顾,并在表3中突出了每个模型的特点。在本小节中,我们对这些模型的特性进行比较和分析。具体来说,早期的多模态预训练大模型通常设计了一个交互学习模块,例如 ViLBERT[135] 和 LXMERT[112]。这些模型将协同注意力或交叉注意力机制集成到它们的框架中,以增强多个输入之间的特征表示。实际上,这些模型遵循了传统小模型交互融合的理念。这种方法允许与众多下游任务无缝结合,并提供了很高的灵活性。

相比之下,许多当前的大模型直接使用投影层来处理输入,并将它们输入像Transformer这样的统一网络中,例如 Unicoder-VL[109]、VideoBERT[153] 和 UniVL[155]。越来越多的研究表明,强大的Transformer网络可以实现与传统方法相当甚至更优的性能。还有一些工作利用现有的大模型并进一步开发,以实现更高的性能[176, 185]。

为了解决多模态数据配对不足引起的问题,一些研究者提出使用非配对数据来训练他们的模型[168]。这些模型展现了处理海量多模态数据的巨大潜力。与通用大模型不同的是,一些模型是专门为特定任务或领域设计的,例如电子商务或室内导航。这种专门化的设计为深入挖掘领域知识并辅助预训练过程提供了条件和便利。

4 下游任务

在预训练阶段完成后,研究人员通常会在许多下游任务上测试模型,以验证其强大的能力。具体而言,为了验证模型的性能,采用了生成任务、分类任务和回归任务,以下将对这些任务进行讨论。作为一种新的学习范式,提示学习(Prompt Learning) 通过修改下游任务以适配预训练大模型,正受到越来越多的关注。在本部分中,还对几种具有代表性的提示学习算法进行了回顾。这些下游任务的概览如图10所示。

在这里插入图片描述

4.1 生成任务

图像/视频描述 试图用几句话来描述输入图像或视频的内容。通常,首先使用一个视觉编码器对输入图像/视频进行编码,然后使用一个语言解码器以逐词生成的方式进行句子预测。2019年,Agrawal等人[234]提出了NoCaps,这也是一个图像描述任务,但其重点在于开发通用的描述模型。

视觉对话(VD) 的目标是让AI代理通过对视觉内容进行有意义的对话与人类互动[235]。

多模态机器翻译(MMT) 是一个关注通过利用配对图像将源句子翻译为不同语言的任务[236]。

4.2 分类任务

视觉问答(Visual Question Answering, VQA) 模型接收一张图像和一个问题,并需要生成一个答案[237]。GQA[84] 和 VQA 的关系类似于 NoCaps 和标准图像描述任务。GQA 是为了解决以往 VQA 数据集的关键缺陷而提出的,它通过一个强大的问题生成引擎生成新颖且多样的问题,同时充分考虑了内容和结构。

视频-语言推理(Video-Language Inference, VLI) 由 Liu 等人[238] 于 2020 年提出,旨在理解视频和文本多模态数据。

视觉推理的自然语言(Natural Language for Visual Reasoning, NLVR) 可视为一个二分类问题[239],模型需要判断语句对图像的真实性。

视觉蕴含(Visual Entailment, VE) 是从文本蕴含(Textual Entailment, TE)任务[241] 派生出的一个三标签分类问题[240]。VE 模型需要预测给定图像是否在语义上蕴含文本,标签包括“蕴含(Entailment)”、“中性(Neutral)”或“矛盾(Contradiction)”。

视觉常识推理(Visual Commonsense Reasoning, VCR) 是 VQA 的一种变体,要求机器不仅要正确回答给定的问题,还需要提供合理的推理解释[242]。

类别识别(Category Recognition, CR) 是一个分类问题,试图预测给定图像的类别。许多计算机视觉任务属于此类下游任务,例如行人属性识别[243] 和动作识别[129]。

多模态情感分析(Multi-modal Sentiment Analysis, MSA) 是为情感分析提出的一种多模态融合任务[244],试图融合各种同质或异质模态以获得更准确的结果。这些模态可以是文本、视觉和声学等。

视觉-语言检索(Vision-Language Retrieval, VLR) 可用于许多应用场景,例如基于文本的行人搜索[245],或基于语言的通用物体检索[246]。

视觉-语言导航(Vision-Language Navigation, VLN) 是一个让智能体根据给定的自然语言指令,在三维室内环境中学习导航的任务[247, 248]。流行的 VLN 任务的基准测试可以在以下网址找到:https://eval.ai/web/challenges/challenge-page/97/leaderboard/270。

光学字符识别(Optical Character Recognition, OCR) 的目标是将包含多种文本信息的图像转换为机器编码的文本。通常,OCR 系统包含文本检测和文本识别两个模块。

4.3 回归任务

参考表达式定位(Grounding Referring Expressions, GRE) 将视觉图像和语言描述作为输入,并输出语言描述的目标对象的位置[249−251]。定义在视频上的类似任务被称为时空视频定位(Spatio-Temporal Video Grounding, STVG)[252],或者基于自然语言的跟踪(Tracking by Natural Language)[253−255]。

4.4 提示学习(Prompt Learning)

为了充分利用预训练大模型,提示学习(也称为提示调优)被提出,用于重新表述下游任务以适配预训练模型的目标,包括 CPT[256] 和 CPL[257]。同时,一些提示调优方案设计用于固定大模型的参数,并尽可能少地调整参数以获得良好效果,例如 VPT[258]、CoOp[259] 和 CoCoOp[260]。

具体来说:

  • VPT(Visual Prompt Tuning, VPT)[258] 固定 ViT 模型的参数,并将提示向量集成为附加输入。仅通过调整分类头和提示的参数,就能获得令人印象深刻的性能。
  • CoOp(Context Optimization, CoOp)[259] 通过将上下文词调整为一组可学习的提示向量,获得了巨大的性能提升。
  • 条件上下文优化(Conditional Context Optimization, CoCoOp)[260] 基于 CoOp 开发,学习一个外部网络为每个图像生成输入条件的 token。通过这种动态提示方法,有效解决了类别偏移的问题。

5 实验分析

鉴于多模态预训练模型(MMPTMs)的复杂性和数量,在短时间内几乎无法重现预训练任务。因此,本文忽略了预训练任务的实验和相关分析。然而,为了向读者提供更完整的综述文章,我们从相关论文中提取了对应下游任务的实验结果,并将其与共享基准数据集进行比较。更详细的结果可参见表3。

5.1 模型参数与训练信息

在这里插入图片描述

图 11 最近几年发布的论文数量、GPU数量及所选多模态预训练模型(MM-PTMs)的参数:(a) 从2019年到2022年发布的MM-PTMs论文数量。(b) 所选模型预训练中使用的GPU数量。(c) 所选MM-PTMs的参数规模。

如图11(a)所示,大规模多模态预训练模型(MM-PTMs)从2019年开始涌现,并且每年的相关论文数量呈现增长趋势。从图11(b)可以发现,当前的大规模预训练模型通常在配置超过8个GPU的服务器上优化训练。此外,许多模型使用了超过100个GPU进行训练,例如:

  • BriVL(128个GPU)[103],
  • VLC(128个GPU)[160],
  • M6(128个GPU)[100],
  • SimVLM(512个GPU)[111],
  • MURAL(512个GPU)[150],
  • CLIP(256个GPU)[19],
  • VATT(256个GPU)[162],
  • Florence(512个GPU)[163],
  • FILIP(192个GPU)[181]。

一些MM-PTMs使用了大量芯片的TPUs进行训练,例如,Flamingo[169] 的最大模型在1 536个芯片上训练了15天。通过这些案例,可以看到预训练大规模MM-PTMs对计算能力的巨大需求。

从图11(c)可以看出,许多大规模MM-PTMs的参数规模仍然有限,但也有一些模型达到了新的高度。例如:

  • DALLE-E[159](12 000 MB),
  • BriVL[103](10 000 MB),
  • M6[100](100 000 MB),
  • CogView[161](4 000 MB)。

造成这种现象的原因可能包括以下几点:

  1. 许多MM-PTMs基于多个公共数据集进行训练。相较于传统模型,参数规模大幅提升,但并未达到震撼的程度。
  2. 大模型的发展受限于对大规模计算能力的需求,而只有少数大型企业或研究机构拥有这样的计算平台。

5.2 代表性下游任务的性能表现

在此,我们报告了零样本图像检索图像描述视觉问答任务的实验结果。从图12(a)可以看出,不同MM-PTMs在零样本图像检索任务上的表现差异较大。蓝色和红色的垂直柱分别表示 Rank-1 和 Rank-5 的结果。一些模型在此任务中表现出色,展示了大规模预训练的有效性。例如,ALBEF[125] 和 METER[152] 在两个评价指标上的结果分别达到 82.80, 96.3079.60, 94.96。在图像描述任务中,根据图12(b),可以发现所比较的模型在COCO数据集上的表现接近。具体而言:OSCAR[17] 的结果为 41.7, 30.6, 140, 24.5VinVL[108] 的结果为 41, 31.1, 140.9, 25.2SimVLM[111] 的结果为 40.6, 33.7, 143.3, 25.4。这些结果显著优于通过ImageNet[2]分类任务以监督方式预训练的传统图像描述模型。类似的结论也可以从图12©中得出,不同MM-PTMs在视觉问答任务上的性能表现进一步验证了大规模预训练模型的优越性。
#

图 12 所选多模态预训练模型(MM-PTMs)在以下任务中的实验结果:零样本图像检索(Rank-1, Rank-5);图像描述(BLEU、METEOR、CIDEr、SPICE);视觉问答(Test-std)。

6 研究方向

尽管多模态预训练大模型已经取得了巨大的发展,但这一领域仍然是一个较新的研究方向。许多问题和机会仍有待研究人员去解决。在本节中,我们总结了几个值得尝试的研究点。

● 在更多模态上的预训练
现有的大规模预训练模型通常在两种模态上进行预训练,例如视觉和语言。缺乏大量对齐的多模态数据可能是一个关键原因。俗话说得好,“磨刀不误砍柴工”。如图13所示,获取真正的多模态数据是实现大规模预训练最重要的事情,这些数据可能包括视觉图像、文本、音频、雷达、事件流、深度图像、热成像等。据我们所知,目前没有任何成像设备能够同时捕获如此多的模态。因此,制造多模态成像设备可能是一件非常重要的事情。基于这些数据的预训练大模型可能在应用中拥有更广阔的潜力。

在这里插入图片描述

● 基于增量学习的预训练
目前,现有的大规模预训练方法通常通过特征微调或提示学习[32]用于下游任务。这种标准的深度学习流程在短期内表现良好,但预训练本身是一个昂贵的过程。具体来说,数据的收集与清洗、预训练所需的电力成本以及硬件设备都消耗了大量的人力和物力。当我们收集到另一组新数据时,在混合数据上重新进行预训练是昂贵的、冗余的,而且不环保。然而,很少有研究考虑将增量学习应用于大模型,目前尚不清楚传统深度学习中开发的增量学习算法是否适用于大模型。

除了上述数据增量学习外,多模态预训练大模型还有许多方面可以开发。例如,类别(或类别)增量学习是一个经典的机器学习问题。另一个有趣的问题是模态增量学习,换句话说,如何将新的模态引入到已经预训练好的多模态模型中。由于未来某些时间可能会出现新的传感器(模态),设计的多模态大模型应该足够灵活,以应对这种情况。

● 知识增强的多模态预训练
基于前述对多模态预训练模型(MM-PTMs)的回顾,可以发现知识辅助预训练的研究仍处于初期阶段。目前的工作通常在预训练阶段简单地采用外部知识图谱或知识库,但这些知识库通常是单模态的,与多模态数据无关,仅限于提升模型对数据的理解。尽管常识性知识更为普遍,但它也更抽象,并引入了歧义,这在应用到具体数据时带来了挑战。因此,我们认为进一步探索知识增强的多模态预训练是值得研究的:

  1. 需要通过自监督学习收集或提取适用于多模态数据的特定知识。
  2. 需要设计更通用的知识融合方法,不仅局限于视觉和语言模态。
  3. 需要为预训练阶段设计专门的知识评估任务,以在早期阶段检测知识的增强效果,因为预训练是整个训练流程的第一阶段,而下游任务尚未确定。

● 细粒度多模态预训练
现有的大多数MM-PTMs从全局视角进行预训练,例如,研究人员通常采用整个图像和语言之间的匹配作为预训练的监督信号。代表性工作包括 CLIP[73] 和 ALIGN[21]。需要注意的是,细粒度的局部信息挖掘或实例级预训练可能进一步提升多模态预训练的整体性能。一些研究已经探索了细粒度预训练策略的可能性[95],我们希望更多的研究人员关注这一方向以进一步提高最终结果。

● 基于多模态预训练模型的提示学习
当前的预训练大模型通常以“预训练-微调”的方式使用,具体而言,用户需要用预训练权重初始化模型,然后在下游任务上进行微调。尽管这种方式在许多任务中表现良好,但微调可能并不是最直接的方式。因为当前的多模态大模型通常通过模态匹配和掩码标记预测进行预训练,而下游任务通常是分类和回归任务,这导致预训练和微调之间存在差距。

最近,一个新的框架(称为提示学习)被开发用于基于大模型的下游任务,它巧妙地将下游任务的设置转化为与预训练一致的形式[32]。许多工作已经证明了它在计算机视觉和自然语言处理任务中的有效性[75, 130, 256, 259, 260]。这一方向的研究非常有趣并具有巨大潜力。

● 小规模模型技术的迁移
小规模多模态模型已经被研究多年,许多代表性模型被提出用于深度多模态任务[261−263]。在这些工作中,扩散(diffusion)、交叉注意力(cross-attention)和动态神经网络(dynamic neural networks)对特定多模态任务非常有用。部分技术已被应用于视觉语言预训练模型(VL-PTMs),例如基于交叉注意力的 ViLBERT[135]。然而,还有许多算法或技巧尚未在大模型任务中探索。从小规模到大规模预训练模型的迁移是值得研究的。

● 跨模态预训练模型中的耦合与解耦问题
耦合涉及建立不同模态之间的相关性,“跨模态”只有通过这种相关性才能实现。解耦则可以进一步动态扩展模态。从框架设计的角度研究如何为这两个问题提供可行的解决方案是一个值得研究的方向。

7 总结

 本文对大规模多模态预训练模型(MM-PTMs)进行了全面的综述。首先,我们介绍了MM-PTMs的背景,重点讨论了传统深度学习以及在自然语言处理(NLP)、计算机视觉(CV)和语音领域的预训练。随后,讨论了MM-PTMs的任务定义、关键挑战和优势。接着,我们深入回顾了MM-PTMs的研究,包括预训练数据、目标、网络结构以及知识增强预训练等方面。我们还回顾了生成、分类和回归任务等下游任务,并概述了MM-PTMs的模型参数和预训练所需的硬件设备。此外,我们讨论并可视化了若干代表性任务的实验结果。最后,我们提出了一些值得关注的研究方向。希望本文的综述能够为MM-PTMs的研究提供一些有价值的见解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/18721.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

从源码角度分析JDK动态代理

文章目录 前言一、JDK动态代理二、动态代理的生成三、invoke的运行时调用总结 前言 本篇从源码的角度&#xff0c;对JDK动态代理的实现&#xff0c;工作原理做简要分析。 一、JDK动态代理 JDK动态代理是运行时动态代理的一种实现&#xff0c;相比较于CGLIB &#xff0c;目标对象…

操作系统——计算机系统概述——1.5操作系统引导(开机过程)

操作系统引导&#xff1a; A.CPU从一个特定主存地址开始&#xff0c;取指令&#xff0c;执行ROM中的引导程序&#xff08;先进行硬件自检&#xff0c;再开机&#xff09; B.将磁盘的第一块——主引导记录读入内存&#xff0c;执行磁盘引导程序&#xff0c;扫描分区表 C.从活动分…

推荐一本python学习书:《编程不难》

推荐理由 全面&#xff1a;把零基础Python编程、可视化、数学、数据、机器学习&#xff0c;融合在一起&#xff0c;循循渐进。 开源&#xff1a;PDF、Python代码、Jupyter文档&#xff0c;在github直接免费下&#xff01; 真实&#xff1a;提供大量真实场景下的数据&#xff…

数据结构与算法分析模拟试题及答案5

模拟试题&#xff08;五&#xff09; 一、单项选择题&#xff08;每小题 2 分&#xff0c;共20分&#xff09; &#xff08;1&#xff09;队列的特点是&#xff08;   &#xff09;。 A&#xff09;先进后出 B&#xff09;先进先出 C&#xff09;任意位置进出 D&#xff0…

集群聊天服务器(9)一对一聊天功能

目录 一对一聊天离线消息服务器异常处理 一对一聊天 先新添一个消息码 在业务层增加该业务 没有绑定事件处理器的话消息会派发不出去 聊天其实是服务器做一个中转 现在同时登录两个账号 收到了聊天信息 再回复一下 离线消息 声明中提供接口和方法 张三对离线的李…

jedis基础入门

jedis采用key&#xff0c;value的形式保存数据&#xff0c;使用nosql sql和nosql的区别 一&#xff1a;入门案例 导入依赖 <dependencies><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>…

QWen2.5学习

配置环境 pip install transformers 记得更新一下&#xff1a;typing_extensions pip install --upgrade typing_extensions 安装modelscope modelscope/modelscope: ModelScope: bring the notion of Model-as-a-Service to life. 下载这个仓库的代码上传到服务器解压 推…

足球青训俱乐部管理后台系统(程序+数据库+报告)

基于SpringBoot的足球青训俱乐部管理后台系统&#xff0c;系统包含两种角色&#xff1a;管理员、用户,系统分为前台和后台两大模块 编程语言&#xff1a;Java 数据库&#xff1a;MySQL 项目管理工具&#xff1a;Maven 前端技术&#xff1a;Vue 后端技术&#xff1a;SpringBoot…

MoneyPrinterTurbo - AI自动生成高清短视频

MoneyPrinterTurbo是一款基于AI大模型的开源软件&#xff0c;旨在通过一键操作帮助用户自动生成高清短视频。只需提供一个视频 主题或 **关键词** &#xff0c;就可以全自动生成视频文案、视频素材、视频字幕、视频背景音乐&#xff0c;然后合成一个高清的短视频。 ​ ​ 主要…

Cross-Inlining Binary Function Similarity Detection

注&#xff1a;在阅读该论文时顺便参考了作者团队的分享视频&#xff1a;【ICSE 2024论文预讲会-第二期-下午-哔哩哔哩】 https://b23.tv/XUVAPy3 在这个视频的末尾最后一个 一.introducion 计算下面两个函数的相似度&#xff1a; 查询函数&#xff1a;脆弱函数&#xff0c;重…

C++:哈希拓展-位图

目录 一.问题导入 二.什么是位图? 2.1如何确定目标数在哪个比特位? 2.2如何存放高低位 2.3位图模拟代码实现 2.3.1如何标记一个数 2.3.2如何重置标记 2.3.3如何检查一个数是否被标记 整体代码实现 标准库的Bitset 库中的bitset的缺陷 简单应用 一.问题导入 这道…

GCP : Memcache backed by Cloud Datastore

Memcache backed by Cloud Datastore 的用途主要体现在以下几个方面&#xff1a; 提高性能和可扩展性&#xff1a; Memcache 是一个高性能的分布式内存对象缓存系统&#xff0c;通常用于缓存数据库查询等操作&#xff0c;以减轻数据库负载&#xff0c;加快动态Web应用的响应速度…

【Python】问题解决:yaml文件加载得到字符串而不是字典

问题描述 最近需要使用python处理yaml文件&#xff0c;但使用过程中发现只能输出字符串的格式&#xff0c;而不是想要的字典格式。 基本使用 在python中想要读写yaml文件&#xff0c;可以安装使用第三方包pyyaml来实现&#xff0c;首先安装一下&#xff1a; pip install pyya…

时钟之Canvas+JS版

写在前面 上一篇介绍使用CSSJS方式实现&#xff0c;但元素太过单一。此篇将以HTML5的canvas标签结合JS来实现。 HTML代码 <canvas id"clock" width"300" height"300"></canvas> JS代码 var canvas null; var ctx null; var int…

shell脚本_创建执行与变量的定义与使用

PS:前言本章节讲解使用的系统为linux2024.1&#xff0c;基于Debian的Linux发行版。 一、什么是shell脚本&#xff1f; 1. 定义&#xff1a; 2. 主要特点&#xff1a; 3. shell脚本的基本结构 4. Shebang 二、创建执行 1.脚本的创建 2. 脚本的执行 2.1.chmod 2.2. 使用…

CSP/信奥赛C++语法基础刷题训练(11):洛谷P5743:猴子吃桃

CSP/信奥赛C语法基础刷题训练&#xff08;11&#xff09;&#xff1a;洛谷P5743&#xff1a;猴子吃桃 题目描述 一只小猴买了若干个桃子。第一天他刚好吃了这些桃子的一半&#xff0c;又贪嘴多吃了一个&#xff1b;接下来的每一天它都会吃剩余的桃子的一半外加一个。第 n n n…

C++11(四)---可变参数模板

文章目录 可变参数模板 可变参数模板 参数包代表多个类型和参数 // Args是一个模板参数包&#xff0c;args是一个函数形参参数包 // 声明一个参数包Args...args&#xff0c;这个参数包中可以包含0到任意个模板参数。 template <class ...Args> void ShowList(Args... arg…

【qt】控件1

1.控件使能&#xff08;enabled&#xff09; QPushbutton*stnew QPushbutton(this);//定义一个按钮 st->setEnabled(false);//按钮设置不能使用当设置该控件不能使用的话&#xff0c;对应控件的子控件也不能使用 通过isEnabled()函数可以查看对应控件状态 演示&#xff1…

昇思MindSpore第二课---Transformer

1. Transformer的概念 Transformer是一种基于注意力机制结构的神经网络&#xff0c;其主要的作用就是用于处理机器翻译、语言建模以及文本生成等自然语言的处理。 比如人类在做一篇阅读理解的时候&#xff0c;我们的注意力可能主要集中在我们所阅读的这一行内容。而机器也是如此…

【Go】-bufio库解读

目录 Reader和Writer接口 bufio.Reader/Writer 小结 其他函数-Peek、fill Reader小结 Writer Scanner结构体 缓冲区对于网络数据读写的重要性 Reader和Writer接口 在net/http包生成的Conn 接口的实例中有两个方法叫做Read和Write接口 type Conn interface {Read(b []b…