LIMoE:使用MoE学习多个模态

文章链接:Multimodal Contrastive Learning with LIMoE: the Language-Image Mixture of Experts

发表期刊(会议): NeurIPS 2022

目录

  • 1.背景介绍
    • 稀疏模型
  • 2.内容摘要
    • Sparse Mixture-of-Experts Models
    • Contrastive Learning
    • Experiment Analysis
  • 3.文章总结

1.背景介绍

在实际应用中,多模态数据通常是高维度的,处理这样的数据可能会导致计算和存储开销巨大。稀疏模型可以帮助缓解这种问题,因为它们具有较少的参数,可以有效地处理高维数据。因此,将稀疏性考虑到多模态学习中,可以在减少计算和存储成本的同时,提高模型的性能和效率。
一些研究工作和实际应用尝试将多模态数据与稀疏模型相结合,以更好地处理来自不同传感器或数据源的信息。这种结合可能涉及将多模态数据转换为稀疏表示形式,或者在多模态模型的构建中引入稀疏性,以提高处理效率和性能。这种融合可以帮助解决处理大规模多模态数据时的挑战,并提供更高效的解决方案。稀疏模型可以作为处理多模态数据的一种方式,以降低计算和存储开销,并提高模型的效率和性能。在多模态学习的背景下,引入稀疏性可以是处理复杂数据的有效策略之一。

同时(多任务)或顺序(持续学习)学习许多不同任务的密集模型(dense model)通常会受到负面干扰过多的任务多样性意味着最好为每个任务训练一个模型,灾难性遗忘意味着模型在早期任务中会随着新任务的添加而变得更差。

稀疏模型

稀疏模型(Sparse models)在深度学习未来最有前途的方法中脱颖而出。 采用条件计算的 Sparse models 不是模型的每个部分都处理每个输入(“dense” modeling),而是学习将各个输入 “route” 到潜在庞大网络中的不同 “experts” 。这有很多好处。

  • 模型大小可以增加,同时保持计算成本不变。这是一种有效且更环保的模型缩放方式,也是高性能的关键。
  • 稀疏性也自然地划分了神经网络。 稀疏模型有助于避免这两种现象通过不将整个模型应用于所有输入,模型中的“专家”可以专注于不同的任务或数据类型,同时仍然利用模型的共享部分。

Google Reaserch团队长期以来一直致力于稀疏性的研究。 今天的人工智能模型通常只接受训练做一件事。 Pathways 将使人们能够训练单个模型来完成数千或数百万件事情。Pathways 总结了构建一个大型模型的研究愿景,该模型可以勤奋地处理数千个任务和众多数据模式。
在这里插入图片描述
到目前为止,语言(Switch、Task-MoE、GLaM)和计算机视觉(Vision MoE)的稀疏单峰模型已经取得了相当大的进展。目前,谷歌团队通过研究大型稀疏模型,通过与模态无关的 “Router” 同时处理图像和文本,朝着 Pathways 愿景迈出了重要一步。 他们提出了多模态对比学习,它需要对图像和文本都有深入的理解,以便将图片与其正确的文本描述对齐。 迄今为止,解决此任务的最强大模型依赖于每种模式的独立网络(“two-tower”方法)。

2.内容摘要

本文提出了第一个使用MoE组合的大规模多模式架构 LIMoE。 它同时处理图像和文本,但使用稀疏激活的自然专业专家。 在零样本图像分类方面,LIMoE 的性能优于可比较的密集多模态模型和双塔方法。 最大的 LIMoE 零样本 ImageNet 准确率达到 84.1%,与更昂贵的 state-of-the-art 模型相当。 稀疏性使 LIMoE 能够优雅地扩展规模,并学会处理截然不同的输入,从而解决多面手和专才之间的紧张关系。

在这里插入图片描述

LIMoE 架构包含许多“专家”,“Router” 决定将哪些 token(图像或句子的一部分)发送给哪些专家。 经过专家层(灰色)和共享dense layer(棕色)处理后,最终输出层计算图像或文本的单个向量表示。

Sparse Mixture-of-Experts Models

Transformers 将数据表示为向量(或标记)序列。 虽然最初是为文本开发的,但它们可以应用于大多数可表示为标记序列的事物,例如图像、视频和音频。 最近的大规模 MoE 模型在 Transformer 架构中添加了专家层(例如自然语言处理中的 gShard 和 ST-MoE,以及用于视觉任务的 Vision MoE)。

标准 Transformer 由许多“块”组成,每个“块”包含各种不同的层。 其中一层是前馈网络 (FFN)。 对于 LIMoE 和上面引用的作品,这个单个 FFN 被包含许多并行 FFN 的专家层取代,每个 FFN 都是一个专家。 给定要处理的 token 序列,简单的 Router 会学习预测哪些专家应该处理哪些 token 。 每个 token 仅激活少量专家,这意味着虽然模型容量由于拥有如此多的专家而显着增加,但实际的计算成本是通过稀疏使用它们来控制的。 如果只激活一名专家,该模型的成本大致相当于标准Transformer 模型。

LIMoE 正是这样做的,每个示例激活一名专家,从而匹配密集基线的计算成本。 不同的是LIMoE Router 可能会看到图像或文本数据的标记。

当 MoE 模型尝试将所有 token 发送给同一位专家时,会出现一种独特的 failure。 通常,这是通过辅助损失和鼓励平衡专家使用的额外培训目标来解决的。 处理多种模式与稀疏性相互作用会导致现有辅助损失无法解决的新故障。 为了克服这个问题,本文开发了新的辅助损失(更多详细信息见论文)并在训练期间使用 Router 优先级(BPR),这两项创新产生了稳定且高性能的多模态模型。

在这里插入图片描述

新的辅助损失(LIMoE aux)Router 优先级(BPR) 稳定并提高了整体性能(左)并提高了路由行为的成功率(中和右)。 成功率低意味着路由器不会使用所有可用的专家,并且由于达到了单个专家的容量而丢弃了许多令牌,这通常表明稀疏模型学习得不好。 LIMoE 引入的组合可确保图像和文本的高路由成功率,从而显着提高性能。

Contrastive Learning

在多模态对比学习(Contrastive Learning)中,模型是根据成对的图像文本数据(例如照片及其标题)进行训练的。 通常,图像模型提取图像的表示,不同的文本模型提取文本的表示。 对比学习目标鼓励图像和文本表示对于相同的图像-文本对接近,而对于不同对的内容则远离。 这种具有对齐表示的模型可以适应新任务,无需额外的训练数据(“零样本”),例如,如果图像的表示比单词更接近单词“dog”的表示,则图像将被分类为狗 “猫”。 这个想法可以扩展到数千个类别,被称为零样本图像分类。

CLIP 和 ALIGN(都是双塔模型)扩展了这个过程,在流行的 ImageNet 数据集上实现了 76.2% 和 76.4% 的零样本分类精度。 本文研究计算图像和文本表示的单塔模型,发现这会降低 dense 模型的性能,可能是由于负面干扰或容量不足。 然而,计算匹配的 LIMoE 不仅比单塔密集模型有所改进,而且还优于双塔密集模型。 本文使用与 CLIP 类似的训练方案训练了一系列模型。 我们的密集 L/16 模型实现了 73.5% 的零射击精度,而 LIMoE-L/16 达到了 78.6%,甚至优于 CLIP 更昂贵的两塔 L/14 模型 (76.2%)。 如下所示,与同等成本的密集模型相比,LIMoE 对稀疏性的使用提供了显着的性能提升。

在这里插入图片描述对于给定的计算成本(x 轴),LIMoE 模型(圆圈、实线)明显优于其密集基线(三角形、虚线)。 该架构指示底层Transformer的大小,从左 (S/32) 到右 (L/16) 增加。 S(小)、B(基本)和 L(大)指的是模型比例。 该数字指的是补丁大小,较小的补丁意味着较大的架构。

在这里插入图片描述

LiT 和 BASIC 将 dense two-tower model 的零样本精度分别提高到了 84.5% 和 85.6%。 除了缩放之外,这些方法还利用了专门的预训练方法,重新利用了已经具有极高质量的图像模型。 LIMoE-H/14 没有受益于任何预训练或特定于模态的组件,但仍然从头开始实现了可比的 84.1% 零样本精度训练。 这些模型的规模比较也很有趣:LiT 和 BASIC 分别是 2.1B 和 3B 参数模型。 LIMoE-H/14 总共有 5.6B 个参数,但通过稀疏性,每个 token 仅应用 675M 个参数,使其更加轻量级。

Experiment Analysis

LIMoE 的动机是稀疏条件计算使通用多模态模型仍然能够发展擅长理解每种模态所需的专业化。 本文分析了 LIMoE 的专家层并发现了一些有趣的现象。

  • 模式专门化专家的出现。在实验的训练设置中,图像标记比文本标记多得多,因此所有专家都倾向于至少处理一些图像,但有些专家要么主要处理图像,要么主要处理文本,或两者兼而有之。
    在这里插入图片描述上图展示了 LIMoE 八位专家的分配; 百分比表示专家处理的图像标记的数量。 有一到两名明显专门研究文本的专家(主要由蓝色专家表示),通常有两到四名图像专家(主要是红色),其余的则处于中间位置。

  • 图像专家之间也存在一些清晰的定性模式。 例如,在大多数 LIMoE 模型中,都有一位专家处理所有包含文本的图像块。
    在这里插入图片描述
    在上面的示例中,有专家处理动物和绿色植物,也有专家处理人类双手。LIMoE 为每个token选择一位专家。 在这里展示了 LIMoE-H/14 某一层上哪些图像token被发送给哪些专家。 尽管没有接受过这方面的培训,但能观察到专门研究植物或轮子等特定主题的语义专家的出现。

3.文章总结

处理许多任务的多模式模型是一条很有前途的前进道路,成功的关键因素有两个:1.规模;2.在利用协同效应的同时避免不同任务和模式之间干扰的能力。 稀疏条件计算是实现这两点的绝佳方法。 它支持高性能、高效的多面手模型,同时还具有出色完成单个任务所需的专业化能力和灵活性,正如 LIMoE 以更少的计算量实现的可靠性能所证明的那样。

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

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

相关文章

Kubernetes入门笔记 ——(3)理解pod对象

为什么需要pod 最为熟知的一句话:pod是k8s的最小调度单位。刚开始听到这句话时会想,已经有容器了,k8s为什么还要搞个pod出来?容器和pod是什么关系?容器的本质是进程,而k8s本质上类似操作系统。 熟悉Linux的…

SpringBoot系列之启动成功后执行业务的方法归纳

SpringBoot系列之启动成功后执行业务逻辑。在Springboot项目中经常会遇到需要在项目启动成功后,加一些业务逻辑的,比如缓存的预处理,配置参数的加载等等场景,下面给出一些常有的方法 实验环境 JDK 1.8SpringBoot 2.2.1Maven 3.2…

python dataframe 列中 字符串( ‘2815512706605‘)过大 转不了float 用Decimal

from decimal import Decimaldf["accFillSz"] df["accFillSz"].apply(lambda x: Decimal(x)) 2815512706605这个值超出了Python中float类型的最大表示范围,无法直接转换为浮点数。 Python中float类型使用IEEE 754标准的64位双精度浮点数表示,最大值大约为…

欧拉回路欧拉路【详解】

1.引入 2.概念 3.解决方法 4.例题 5.回顾 1.引入 经典的七桥问题 哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示。 可否走过这样的七座桥,而且每桥只走过一次? 你怎样证明?…

【Linux top命令】

文章目录 深入了解Linux top命令:实时监控系统性能1. 什么是top命令?2. 使用top命令3. top命令交互操作 深入了解Linux top命令:实时监控系统性能 1. 什么是top命令? top命令是一个用于实时监控系统性能的文本界面工具。它显示当…

Linux上使用独立显卡Tesla T4(测试视频压缩)

背景 将视频处理程序单独部署至K8S之外,使用独立GPU显卡的一台服务器上。 需事先对GPU性能做简单测试。 已通过zabbix对Linux进行了系统资源监控。 已通过PrometheusGrafana对显卡Tesla T4做了性能监控。 逐步补充,稍等 2023年12月6日 操作 查看当前…

鸿蒙Harmony开发初探

一、背景 9月25日华为秋季全场景新品发布会,余承东宣布鸿蒙HarmonyOS NEXT蓄势待发,不再支持安卓应用。网易有道、同程旅行、美团、国航、阿里等公司先后宣布启动鸿蒙原生应用开发工作。 二、鸿蒙Next介绍 HarmonyOS是一款面向万物互联,全…

[Linux] 基于LAMP架构安装论坛

一、安装Discuz论坛 1.1 创建数据库,并进行授权 mysql -u root -p123CREATE DATABASE bbs; #创建一个数据库GRANT all ON bbs.* TO bbsuser% IDENTIFIED BY admin123; #把bbs数据库里面所有表的权限授予给bbsuser,并设置密码admin123flush privileges; #刷新数据库…

Java 中的抽象类与接口:深入理解与应用

文章目录 什么是抽象类?什么是接口?抽象类和接口的使用场景抽象类和接口的区别结论 在 Java 编程语言中,抽象类和接口是两种重要的机制,用于实现抽象化和多态性。这两种机制都允许我们定义一种通用的类型,然后通过继承…

数据结构——栈与栈排序

栈的特性 栈是一种遵循后进先出(LIFO)原则的数据结构。其基本操作包括: push:将元素添加到栈顶。pop:移除栈顶元素。peek:查看栈顶元素,但不移除。 栈排序的原理 栈排序的核心是使用两个栈&…

[渗透测试学习] Devvortex - HackTheBox

文章目录 信息搜集解题步骤提交flag 信息搜集 扫描端口 nmap -sV -sC -p- -v --min-rate 1000 10.10.11.242发现80端口有http服务,并且是nginx服务 尝试访问web界面,发现跳转到http://devvortex.htb/无法访问 我们用vim添加该域名即可 sudo vim /etc/…

J.408之数据结构

J-408之数据结构_北京信息科技大学第十五届程序设计竞赛(同步赛) (nowcoder.com) 思维好题,直接用两个set存没出现的数字就好了 // Problem: 408之数据结构 // Contest: NowCoder // URL: https://ac.nowcoder.com/acm/contest/68572/J // Me…

ClickHouse安装和部署

ClickHouse安装过程: ClickHouse支持运行在主流64位CPU架构(X86、AArch和PowerPC)的Linux操作 系统之上,可以通过源码编译、预编译压缩包、Docker镜像和RPM等多种方法进行安装。由于篇幅有限,本节着重讲解离线RPM的安…

RAW和YUV的区别

RAW是指未经过任何压缩或处理的原始图像数据。在摄像头中,原始图像数据可以是来自图像传感器的未经处理的像素值。这些原始数据通常以一种Bayer模式的形式存在,其中每个像素仅包含一种颜色信息(红色、绿色或蓝色),需要…

【开源】基于Vue和SpringBoot的在线课程教学系统

项目编号: S 014 ,文末获取源码。 \color{red}{项目编号:S014,文末获取源码。} 项目编号:S014,文末获取源码。 目录 一、摘要1.1 系统介绍1.2 项目录屏 二、研究内容2.1 课程类型管理模块2.2 课程管理模块2…

Redis Bitmaps 数据结构模型位操作

Bitmaps 数据结构模型 Bitmap 本身不是一种数据结构,实际上它就是字符串,但是它可以对字符串的位进行操作。 比如 “abc” 对应的 ASCII 码分别是 97、98、99。对应的二进制分别是 01100010、01100010、01100011, 如下所示: a b …

HTML5+CSS3+JS小实例:文字依次点击验证

实例:文字依次点击验证 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" content=&quo…

十七、FreeRTOS之FreeRTOS事件标志组

本节需要掌握以下内容&#xff1a; 1&#xff0c;事件标志组简介&#xff08;了解&#xff09; 2&#xff0c;事件标志组相关API函数介绍&#xff08;熟悉&#xff09; 3&#xff0c;事件标志组实验&#xff08;掌握&#xff09; 4&#xff0c;课堂总结&#xff08;掌握&am…

04_W5500_TCP_Server

上一节我们完成了TCP_Client实验&#xff0c;这节使用W5500作为服务端与TCP客户端进行通信。 目录 1.W5500服务端要做的&#xff1a; 2.代码分析&#xff1a; 3.测试&#xff1a; 1.W5500服务端要做的&#xff1a; 服务端只需要打开socket&#xff0c;然后监听端口即可。 2…

基于Spring Boot的水产养殖管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于Spring Boot的水产养殖管理系统,jav…