经典多模态模型

news2024/10/6 22:31:55

整点传统多模态学习

接下来看看经典模型,传统多模态任务是下游任务是图文检索(Image Text Retrieval),视觉问答(VQA),视觉推理(Visual Reasoning),视觉蕴含(Visual Entailment)

只用Transformer Encoder

ViLT

 ViLT: 移除预训练的目标检测器,换成可学习的Patch Embedding Layer

vit基于patch的视觉特征和之前基于bounding box的视觉特征区别不大,这样就可以把超大的预训练好的目标检测器换成patch embedding

缺点:

1. 性能不够高,简单而言视觉模型要大于文本模型效果才能好

2. 推理时间快,训练时间非常慢

因此,视觉模型要大于文本模型,同时模态之间的融合模型也要尽可能大 ,好的目标函数有ITM,ITM和MLM

Clip

Clip是典型的双塔模型,有两个model,一个对应文本一个对于视觉

clip采用了对比学习,因为这样可以有更小的计算量。其中正样本在对角线上,拿图片的特征和文本的特征去做cosin similarity,把和图像最相似的文本特征所对应的句子挑出来,从而完成分类任务。对于图像文本匹配和图像文本检索效果相当好。但是对VQA,VR,VE效果就不好了。

image encoder 可以是resnet和vit

clip的一大亮点是zeroshot,而few shot 可以用于一定的专业知识的领域

  1. Zero-shot(零样本)学习:在零样本学习中,模型可以在没有为特定任务进行显式训练的情况下进行推理和预测。它使用先前学到的知识和通用的背景信息来解决新任务。这意味着模型可以通过理解问题的语义或结构等特征,从而进行推理和预测。通常情况下,模型需要通过阅读说明或示例来理解新任务,并利用其先前的知识进行预测。零样本学习是一种在新领域中进行迁移学习的技术。

  2. Few-shot(少样本)学习:在少样本学习中,模型需要利用少量的训练样本来学习新任务。这个数量可以是几个样本到几十个样本,通常远远少于传统机器学习中需要的大量训练样本。在少样本学习中,模型需要能够从有限的样本中推理和泛化,以便在新任务中取得良好的性能。为了提高泛化能力,少样本学习通常使用技术如元学习(meta-learning)、模型参数共享和数据增强等。

linear prob

"Linear probing"(线性探测)是一种解决哈希冲突(hash collision)的方法,常用于开放寻址法(open addressing)的哈希表实现中。

q:prompt* template 转换句子所有句子的前缀都是一样的吗?

a: -是

clip优势:

1.摆脱 categorical label的限制

2.支持非常广的domain

"domain"(领域)通常指的是数据集或问题的特定领域或上下文。一个领域可以由具有共同特征、数据分布或任务定义的数据样本组成。

深度学习模型通常需要在特定领域中进行训练和应用,因为不同领域的数据具有不同的特征和分布。模型在一个领域中的性能可能会因为领域的变化而下降,这被称为领域间的"领域迁移"问题。因此,了解和理解特定领域的特征对于开发有效的深度学习模型非常重要。

在领域适应(domain adaptation)和迁移学习(transfer learning)中,"domain"用于描述不同数据集或任务之间的关系。通过在一个领域上进行训练,并将模型迁移到另一个相关领域,可以实现对新领域中的数据进行有效预测。

自监督

自监督学习(Self-Supervised Learning)是一种无需人工标注标签的训练方法,其中模型利用数据本身的自动生成目标进行学习。它为利用未标记数据进行无监督学习提供了一种有效的方法,并在提高模型性能和泛化能力方面展现了潜力。

在传统的监督学习中,我们需要为数据提供人工标签作为目标,例如将图像分类为不同的类别或为文本分配标签。但在自监督学习中,数据本身被用作生成目标,无需人工标签。

自监督学习的核心思想是通过利用数据中的内在结构或模式来设计自动生成的任务。例如,在图像领域中,可以通过对图像进行随机的遮挡、旋转、颜色变换等操作,将原始图像作为输入,并要求模型重建或预测被修改的图像部分。模型在学习过程中尝试重构或预测修改后的部分,从而通过自我生成的目标进行训练。

自监督学习的优势在于无需人工标签,因此可以在大规模未标记的数据上进行训练。这对于许多领域来说非常有价值,因为标记大量数据的成本往往很高。通过自监督学习,可以在未标记数据上训练模型,然后将其迁移到标记有限的数据集上,以提高模型性能。

其中自训练中很重要的一个概念便是伪标签↓

伪标签

在伪标签的方法中,首先使用已标记的少量数据对模型进行初始训练。然后,使用这个初始训练好的模型对未标记的数据进行预测,并将这些预测结果作为伪标签(或伪目标)。将未标记数据与其伪标签一起作为扩展的训练集,再次对模型进行训练,以进一步改进模型的性能。

伪标签的思想基于一个假设:对于给定的未标记数据,模型的预测结果可能是正确的。通过利用这些伪标签进行训练,可以让模型尽可能地适应未标记数据的分布和特征,从而提高模型的泛化能力。

伪标签的优点包括:

  1. 利用未标记数据:伪标签允许利用大量未标记的数据,这有助于提高模型的训练样本规模,从而更好地捕捉数据的分布和特征。

  2. 自我生成目标:伪标签使用模型自身的预测结果作为训练目标,避免了人工标注数据的成本和主观性。

  3. 提高模型性能:通过迭代地使用伪标签进行训练,模型可以逐渐改进,并在未标记数据上获得更好的性能。

然而,伪标签也有一些限制和风险:

  1. 错误传播:由于伪标签是由模型的预测结果生成的,如果模型的预测出现错误,这些错误可能会被传播到后续的训练中,导致模型性能的下降。

  2. 标签噪声:未标记数据的伪标签并不一定都是准确的,可能存在一定程度的标签噪声。这可能对模型的学习造成一定的负面影响。

如之前所言,clip是对比任务,那什么是对比任务和预测任务呢

对比和预测任务

"对比任务"(contrastive task)是一种用于学习表示或特征的任务形式。它的目标是通过将相似的样本彼此靠近,将不相似的样本彼此分开,以便在学习过程中构建有意义的表示空间。

对比任务通常涉及两个关键的步骤:

  1. 正样本对比:选择一对相似的样本(正样本),并鼓励模型将它们在表示空间中彼此靠近。这意味着模型应该能够捕捉到这些样本之间的共同特征和相似性。

  2. 负样本对比:选择一对不相似的样本(负样本),并鼓励模型将它们在表示空间中彼此分开。这意味着模型应该能够区分不同类别或不同特征的样本。

通过正样本对比和负样本对比的训练,模型可以学习到更具区分性的特征表示。这些特征表示可以在许多机器学习任务中使用,如相似性搜索、聚类、分类等。

其中,clip中对比学习的loss叫ITC loss(Image Text Contrastive Loss)

图像文本对比损失(Image Text Contrastive Loss)是一种用于学习图像和文本之间的相似性关系的损失函数。它广泛应用于图像和文本之间的多模态检索、对齐和关联任务中。

该损失函数的目标是通过最大化正样本对的相似性,同时最小化负样本对的相似性,来推动图像和文本之间的对应关系的学习。在训练过程中,每个正样本对由一个图像和一个与其相关的文本组成,而每个负样本对则由一个图像和一个与其不相关的文本组成。

具体而言,对于正样本对,目标是使图像和文本之间的特征表示在嵌入空间中更加接近。而对于负样本对,目标是使图像和文本之间的特征表示在嵌入空间中更加远离。

通常,图像和文本的特征表示通过卷积神经网络(CNN)和循环神经网络(RNN)等深度学习模型提取得到。然后,使用欧氏距离或余弦相似度等度量方法来衡量图像和文本特征之间的相似性。

论文中clip模型采用了混精度训练以减少计算量

混精度训练

混合精度训练(Mixed Precision Training)是一种通过同时使用低精度(例如半精度)和高精度(例如单精度)数据类型来进行深度学习模型训练的技术。

在混合精度训练中,通常会将模型的参数和梯度存储为低精度的数据类型,如半精度浮点数(FP16),而输入数据和中间激活值则使用高精度的数据类型,如单精度浮点数(FP32)。这样可以减少模型中参数所占用的内存空间,同时加快模型的计算速度。

混合精度训练的优点包括:

  1. 节省内存:使用低精度的参数可以大幅减少模型所占用的内存空间,尤其是对于大型模型和大规模数据集来说,这一点尤为重要。这使得可以在更大的批次大小下进行训练,从而加速训练过程。

  2. 提高计算效率:低精度的计算可以在硬件加速器(如GPU)上更快地执行。由于低精度操作所需的计算量较小,可以在相同的时间内执行更多的计算,从而加快模型训练的速度。

  3. 加速模型部署:使用混合精度训练可以减小模型的尺寸,使得模型在推理阶段的内存占用和计算时间都得到显著减少。这对于在嵌入式设备或边缘设备上部署深度学习模型非常有益。

需要注意的是,混合精度训练也会引入一定的数值精度损失。由于参数和梯度存储为低精度,可能会导致数值计算上的一些不确定性和误差累积。因此,在应用混合精度训练时,需要小心处理数值不稳定性,并进行合适的数值调整和梯度缩放。

多GPU运算可以参考↓

How to Train Really Large Models on Many GPUs? | Lil'Log

ALBEF

模型结构:

图像:12层Transformer base Model

文本:12层bert model劈成两部分,前六层作为文本编码器,后六层用作多模态融合编码器

Loss:ITC ,ITM, MLM

贡献:

1)在Mutli-Model Encoder之前将把图像和文本的特征align起来:提出loss(其实就是ITC),在fusing之前align上

2)momentum distillation:为了从noisy的数据有效学习文本图像特征,以自训练的方式进行学习,也是用伪标签(pseudo label)。用momentum model去生成pseudo target,从而达到自训练。

作用:为同一个图像文本对生成不同视角,变相做data argumentation,从而让训练出来的模型具有Semantic Preserving的功能

成就:图文检索效果拔群,训练亲民

VLMo

Transformer Encoder 和 Decoder 一起的方法

BLIP

CoCa

BEIT

PaLI

DaLL.E

DALL·E是一种基于Transformer架构的神经网络模型,专门用于根据文本描述生成图像。它在图像生成方面展现出令人瞩目的能力,为将自然语言和图像生成结合起来提供了新的可能性。

DALL·E的特点是它可以根据给定的文本描述生成对应的图像。与传统的图像生成模型不同,DALL·E能够根据自然语言的描述生成与描述相匹配的图像,而不仅仅是通过对图像的像素进行重建或合成。

DALL·E使用了一种称为自回归生成的方法。它将文本描述编码为向量表示,并使用Transformer架构来学习文本和图像之间的关系。然后,根据这个学习到的关系,DALL·E可以生成与描述相一致的图像。

这使得DALL·E在生成与描述相关的图像方面非常出色,并且在一些视觉推理任务上表现出令人印象深刻的能力。然而,值得注意的是,DALL·E是在大规模数据集上进行训练的,并且其生成结果可能受到一些限制,例如对于复杂场景的细节捕捉可能有限。

参考视频:

多模态论文串讲·上【论文精读·46】_哔哩哔哩_bilibili

多模态论文串讲·下【论文精读·49】_哔哩哔哩_bilibili

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

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

相关文章

总结897

每周小结: 这周将线代强化进行到第3讲,做杨超三大计算 英语每天早上巩固之前背诵的文章,每日一个长难句分析,背单词,做题目,准备六级 专业课,刚开始复习 每日必复习(5分钟&#x…

【C/C++数据结构与算法】华为C/C++编程规范

目录 一、文件结构 二、程序版式 三、命名规则 四、表达式与基本语句 五、常量 六、函数设计 七、内存管理 八、C高级特性 一、文件结构 避免头文件被重复引用&#xff0c;用 #pragma once 进行预处理用 <> 引用标注库头文件&#xff0c;用 "" 引用自…

Servlet图书管理系统测试报告

密级 中级 (供内部测试完毕后使用) Servlet图书管理系统 测试报告 报告编号: ServletBMS-TR-1 &#xff08;Servlet Book Management System-Testing Report&#xff09; 部门经理______项目经理______ 开发经理______测试经理______ 研发公司: 第六科技有限公司 用户单…

【Web服用应用】LVS+Keepalived群集

LVSKeepaLived群集 一、Keepalived及其工作原理1.1Keepalived体系主要模块及其作用1.2健康检查的方式&#xff08;探针&#xff09; 二、LVSKeepalived 高可用群集部署2.1LVS部署<font colorred>1.配置负载调度器&#xff08;主、备相同&#xff09;2配置节点服务器 三、…

JS逆向吐环境

这里调用时机是webpack加载器加载完成后的吐出 1.定位加载器 2.断下目标模块 1.加载完成后&#xff0c;sfu(t), 可以看到明显的加载器&#xff0c;手扣太费劲&#xff0c;直接输出吧 可以看到明显的模块函数&#xff0c;随便测试一个 把函数转为字符串&#xff0c;调用的函数环…

chatgpt赋能python:Python中的矩阵合并方法:介绍和使用方法

Python中的矩阵合并方法: 介绍和使用方法 矩阵合并是Python编程中常用的操作之一&#xff0c;特别是针对数据分析、机器学习和深度学习等领域。Python提供了多种方法来合并矩阵&#xff0c;本文将介绍这些方法并分享如何在实际应用中使用它们。 普通矩阵合并 最基础的矩阵合…

前端vue入门(纯代码)06

【04.mixin混入】 功能&#xff1a;可以把多个组件共用的配置提取成一个混入对象 使用方式&#xff1a; 第一步&#xff1a;定义混合并暴露。 export const mixin {data(){....},methods:{....}.... }第二步&#xff1a;导入mixin.js【混入】文件&#xff0c;并使用混入。 全局…

动态规划dp —— 20.环形子数组的最大和

因为数组是环形的&#xff0c;所以子数组最大和有两种情况&#xff1a; 一个数组内所以数的和是固定的&#xff0c;如果阴影部分是最大子数组和&#xff0c;那么空白部分就是最小子数组和&#xff0c;因此&#xff1a;第二种情况下&#xff0c;只需要求得最小子数组和&#xff…

Java虚拟机——垃圾收集算法

垃圾收集算法的实现涉及大量的程序细节。这里只重点介绍 分代收集理论 和 几种算法思想及发展过程 3.3.1 分代收集理论 分代收集建立在两个 分代假说之上 弱分代假说 &#xff1a; 绝大多数对象都是朝生夕灭的强分代假说&#xff1a; 熬过越多次垃圾收集过程的对象就越难以…

chatgpt赋能python:Python与数据库连接的完整指南

Python与数据库连接的完整指南 作为全球最受欢迎的编程语言之一&#xff0c;Python已经被广泛应用于各种领域&#xff0c;特别是与数据库的交互。 Python拥有用于连接各种数据库的强大库和API&#xff0c;其中包括MySQL&#xff0c;Oracle&#xff0c;PostgreSQL等。在这里&am…

远程控制和原理和实践

按理来说&#xff0c;本人不该发表此类专业的文章&#xff0c;但是从鄙人的开发经历出发&#xff0c;让本人斗胆在此对远控软件做一些论述&#xff0c;谈论一点自己的认识。 程序工程代码地址&#xff1a;点击此处下载。 程序分为两个部分&#xff0c;控制端和被控端&#xf…

【Note7】uboot,

文章目录 1.uboot1.U-Boot命令之常用命令&#xff1a;7.U-Boot命令之EMMC和SD卡操作命令&#xff1a;一般EMMC和SD卡是同一个东西&#xff0c;没特殊说明&#xff0c;统一MMC来代指EMMC和SD卡8.U-Boot命令之内存操作命令&#xff1a;直接对DRAM进行读写操作&#xff0c;uboot命…

CMake学习(7): CMake的嵌套

博客参考自&#xff1a;爱编程的大丙: https://subingwen.cn/cmake/CMake-primer/ ,仅供学习分享使用 如果项目很大&#xff0c;或者项目中有很多的源码目录&#xff0c;在通过 CMake 管理项目的时候如果只使用一个 CMakeLists.txt&#xff0c;那么这个文件相对会比较复杂&…

【嵌入式环境下linux内核及驱动学习笔记-(16)linux总线、设备、驱动模型之input框架】

目录 1、Linux内核输入子系统概念导入1.1 输入设备工作机制1.2 运行框架1.3 分层思想 2、驱动开发步骤2.1 在init()或probe()函数中2.2 在exit&#xff08;&#xff09;或remove&#xff08;&#xff09;函数中&#xff1a;2.3 上报事件2.4 input驱动要素导图2.5 input驱动的总…

代码生成器实现

代码生成器实现 实现封装元数据的工具类实现代码生成器的代码编写掌握模板创建的 构造数据模型 需求分析 借助Freemarker机制可以方便的根据模板生成文件&#xff0c;同时也是组成代码生成器的核心部分。对于Freemarker而 言&#xff0c;其强调 数据模型 模板 文件 的思…

chatgpt赋能python:Python与硬件结合的现实价值

Python与硬件结合的现实价值 Python是当今最受欢迎和广泛使用的编程语言之一&#xff0c;因其易学易用、开放源代码和灵活性而备受欢迎。但是当我们将它与硬件相结合&#xff0c;它能做到什么&#xff1f; 在这篇文章中&#xff0c;我们将向您介绍如何将Python与硬件结合&…

戴尔外星人m16r1国行中文原厂Windows11系统自带Support Assist OS Recovery恢复出厂设置

戴尔外星人m16r1国行中文原厂系统自带Support Assist OS Recovery恢复出厂设置 文件地址https://pan.baidu.com/s/1Pq09oDzmFI6hXVdf8Vqjqw?pwd3fs8 提取码:3fs8 支持Support Assist OS recovery型号: 戴尔外星人m18r1国行中文版Windows11系统 戴尔外星人x16r1国行中文版…

2023/6/9总结

CSS Less嵌套 子元素的选择器可以直接写在父元素里面。 如果不是它的后代元素&#xff0c;比如你想写伪类选择器、交集选择器&#xff0c;需要在前面加&号。 Less运算&#xff1a; 加减乘除都可以&#xff0c;运算符必须用空格隔开。如果俩个元素都有单位&#xff0…

【SpringBoot 3.x】使用starter整合Druid

Druid介绍 Druid是阿里巴巴的一个开源项目&#xff0c;号称为监控而生的数据库连接池&#xff0c;在功能、性能、扩展性方面都超过其他例如DBCP、C3P0、BoneCP、Proxool、JBoss DataSource等连接池,而且Druid已经在阿里巴巴部署了超过600个应用&#xff0c;通过了极为严格的考…

网络作业9【计算机网络】

网络作业9【计算机网络】 前言推荐网络作业9一. 单选题&#xff08;共12题&#xff0c;36分&#xff09;二. 多选题&#xff08;共1题&#xff0c;3分&#xff09;三. 填空题&#xff08;共2题&#xff0c;10分&#xff09;四. 阅读理解&#xff08;共1题&#xff0c;17分&…