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

多模态论文串讲-学习笔记(上)

入门参考:跟着chatgpt一起学|多模态入门-CSDN博客

学习参考:多模态论文串讲·上【论文精读·46】_哔哩哔哩_bilibili,强烈推荐这个博主啊,感觉比沐神讲的还要清楚,非常喜欢。

本文介绍只使用transformer encoder的方法,下中会介绍使用transformer encoder和decoder的方法。

目录

1.ViLT CLip回顾

(a) VSE

(b) CLIP

(c)ViLBERT/UNITER

(d) ViLT

一个好的模型结构:

2.ALBEF

摘要:

模型结构:

动量蒸馏

消融实验

 

​3.VLMO

摘要:

模型结构

MoME Transformer:

LOSS

分阶段预训练

模型效果


1.ViLT CLip回顾

图片部分对应4种类型的图文多模态模型,蓝色部分是从这个模型中学到的较好的部分,最右边的是融合这些好的部分的模型结构。

(a) VSE

visual embedding(VE)的大小远大于text embedding(TE),两者也都远大于最终的模态交互(MI),其中VE是来源于目标检测(OD)预训练算法中的,MI就是简单的点乘。

(b) CLIP

之前也有讲过:【经典论文】打通文本图像的里程碑--clip_clip论文-CSDN博客

双塔模型,通过对比学习,将已有的图片文本对在空间上拉的更近。

对图文匹配任务而言效果好,且高效。

缺点:在VQA,VR,VE这些任务上性能不够好(模态之间的交互不足)

(c)ViLBERT/UNITER

在VSE的基础上,使用transformer的encoder或者别的更复杂的模型结构来进行模态之间的交互

(d) ViLT

为了将目标检测从视觉端拿掉,有局限性。

使用基于patch的视觉特征来替代使用基于bounding box的视觉特征,visual embedding是基于patch的,所以VE的大小较小,大大降低了复杂度。而相应的MI,类似与上面的C类里的方法,复杂度较高。

缺点:

性能不够高,可能比不过c类中的方法。有可能是数据集的bias,也有可能是视觉部分不够强。(VE是随机初始化的)

推理快,但是训练慢。(4million的数据集,64张32G GPU训练3天)

一个好的模型结构:

ITC:Image Text Contrastive Loss,对比学习的loss

MLM:Mask Language Modeling Loss,bert中的loss,遮住一个词再去预判这个词

ITM:Image Text Matching Loss

更大的视觉特征

2.ALBEF

摘要:

1.ALBEF使用ITC(图像文本对比损失函数),在融合之前,将视觉特征和文本特征进行了对齐。

        之前的工作,使用Transformer来融合视觉特征和文本特征,而这个视觉特征是已经学习好的,后续并没有基于end-end继续学习,所以视觉特征和文本特征是没有对齐的。

2.使用momentum distillation这种自训练的方式去学习,提升模型在noisy数据集上的表现。

        使用momentum model来生成伪标签,再使用momentum distillation来提升表现。

模型结构:

  • 视觉特征:ViT,一个标准的ViT(什么是VIT?-CSDN博客)
    • 预训练参数:Data Efficient Vision Transformer(DEiT)
  • 文本特征:Bert,使用Bert模型进行初始化,但是只用了bert中的6层做文本特征,另外6层做模态之间的交互。
  • Momentum Model:也是一个ViT和Bert,参数是从上述的ViT和Bert通过moving average得到。阈值:0.995,Momentum Model会更稳定,产出更稳定的图像文本特征。(可参考MOCO)
  • ITM:判断VE和TE是否是同一个对。
    • 缺点:太简单了,负样本很容易学出来。
    • hard negative:每个batch内,每个图片基于ITC,找到和当前图片最相似的作为负样本。
  • MLM:类似于bert,也是对文本进行mask,但是会借助图像特征来帮助预测。

ALBEF每次做2次forward,一次使用原始的I和T(ITC,ITM),一次使用原始的I和mask之后的T’(MLM)

动量蒸馏

原因:网上爬下来的数据是noisy data,里面的正样本对中的文本可能和图片没什么关系,而负样本反而能很好地描述这个图像,可能比ground_truth还好。这种one-hot的label对于ITC和MLM而言是不友好的,使得模型学习困难。

构建:在已有的模型之上,使用EMA(exponential moving average),生成伪标签。

LOSS:在已有的基础上,添加基于伪标签的loss,因为伪标签是softmax score,所以使用KL散度来计算loss

ITC loss 公式:

MLM loss公式

伪标签示例,可以看到,伪标签描述的可能比ground_truth结果更好。

消融实验

在4M的数据集上,Momentum Modeling的提升可能比其他几种方式的提升要小一些,但是方向是不错的。在14M的数据集上,可能会更好。

3.VLMO

论文地址:https://arxiv.org/abs/2111.02358v2

摘要:

之前模型的弊端:

        双塔模型,clip和align,速度快,但是在其他下游任务中的表现不好。

       单塔模型:fusion-encoder,效果好,但是下游任务推理速度特别慢。

贡献:

  1. 提出了Mixture-of-Modality-Expert,后续推理时,根据任务的不同,选择不同的Expert网络。
  2. 提出了stage-wise pretraining strategy,利用单模态领域丰富的数据集,分阶段进行训练。

模型结构

MoME Transformer:

在Transformer的结构基础上,针对不同的输入,用3个FFN替代原先的FFN,分别代表了三个专家网络。

self-attention层是完全share weights的。

LOSS

和ALBEF一致

ITC:计算时类似一个clip模型,双塔输入

ITM/MLM:Fusion Encoder,单塔输入,图像和文本一起输入,

64张V100的卡训练2天。

分阶段预训练

  1. 使用图像数据进行预训练,V-FFN和self-attention层都可以进行训练,没有需要冻住的。
  2. 使用文本数据进行预训练,此时V-FFN和self-attention层都被冻住,仅训练L-FFN。
    1. 比较有意思的一点是,仅在图像数据上预训练好的self-attention在文本数据中也工作的很好,也在很多工作上验证过。但是反过来不行,推测可能图像数据蕴含的内容更丰富?
  3. 都可以进行训练

模型效果


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

相关文章:

  • docker配置镜像加速器
  • 亚马逊IP关联揭秘:发生ip关联如何处理
  • 【BEV 视图变换】Ray-based(2): 代码复现+画图解释 基于深度估计、bev_pool
  • MoveIt控制机械臂的运动实现——机器人抓取系统基础系列(二)
  • 带你0到1之QT编程:十七、Http协议实战,实现一个简单服务器和一个客户端进行http协议通信
  • 校园美食发现:Spring Boot技术的美食社交平台
  • Flyway 版本迁移文件
  • 【Kubernetes】常见面试题汇总(三十二)
  • Docker 系列完结
  • SparkSQL和Spark常用语句
  • Go语言并发编程:从理论到实践
  • QT widgets 窗口缩放,自适应窗口大小进行布局
  • 【鸿蒙OH-v5.0源码分析之 Linux Kernel 部分】003 - vmlinux.lds 链接脚本文件源码分析
  • 第k个排列 - 华为OD统一考试(E卷)
  • 跟着问题学12——GRU详解
  • Lucene详解介绍以及底层原理说明
  • 如何在Linux Centos7系统中挂载群晖共享文件夹
  • 心理辅导平台的构建:Spring Boot技术解析
  • 深度学习-从零基础快速入门到项目实践,这本书上市了!!!
  • 828华为云征文|部署知识库问答系统 MaxKB
  • 【文献阅读】基于原型的自适应方法增强未见到的构音障碍者的语音识别
  • 分布式消息中间件kafka
  • Google深度学习的图像生成大模型Imagen
  • Java接口和抽象类的区别
  • calibre-web报错:File type isn‘t allowed to be uploaded to this server
  • Ubuntu20.04配置NVIDIA+CUDA12.2+CUDNN【附所有下载资源】【亲测有效】【非常详细】
  • 设计模式-依赖注入
  • Mac剪贴板历史全记录!
  • 单片机的信号线都需要差分布放吗?
  • turtle实现贪吃蛇小游戏