超越CLIP!谷歌发布首个大规模MoE架构的视觉语言模型

a180431cdcf8ec0ce761665772e78994.png

文 | 明敏(发自凹非寺)
源 | 量子位

多模态模型常见,但是基于稀疏化的还是头一个。谷歌带来最新成果LIMoE,首次将稀疏化方法用在了图像文本混合模型上。要知道,随着大模型参数呈指数级增加,训练成本也是一路飙升。

所以如何降低训练成本,成为了目前学界重点关注的一个问题。

谷歌想到的办法,不是拼硬件,而是从模型本身入手。利用稀疏化的方法,让每次输入只需激活部分网络就能完成任务。

它们在模型内部设置了很多“专家”,每个“专家”只需处理对应部分的输入,根据任务情况按需使用“专家”就好。这样一来,尽管模型容量很大,但是计算成本并没有暴增70eab6c45495c7b1822d1cc44796b3f1.gif而且还不会降低性能。新方法LIMoE零样本学习任务中,可是直接超越了CLIP。怪不得网友高呼:

快分享给我们API!

7b31d77b28f9da795d5bafad6c1e25dc.png

让不同“专家”处理不同任务

对于深度学习来说,能同时处理文本图像任务其实已经不稀奇。不过过去常见的多模态学习方法,往往是单个输入就需要激活整个网络。谷歌这次提出的新方法,最大亮点就是首次在这一领域采用了稀疏化模型

稀疏化的方法便是无需让整个模型来处理所有的输入。通过对神经网络进行划分,它让神经网络也“专业对口”,不同的子模型只处理固定类型的任务或数据。

但也不是完全割裂开来,模型内部仍有可共享的部分。此次基于的模型是MoE(Mixture-of-Experts layer),它被称为专家混合模型。也就是在Transformer架构的基础上,加设了“专家层”。

它是一个并行的FNN,取代了原本的前馈网络。这里的“专家”,也就是模型内部的不同子模型。每个子模型专门用于不同的输入。

每一层中的专家由门控网络控制,该网络根据输入数据激活专家。对于每个标记,门控网络选择最合适的专家来处理数据。ad2f3256545b9746e1b3d66d8b610133.png

此次新提出的LIMoE,其实就是让MoE能同时处理图像文本。具体来看,就是让LIMoE进行对比学习。

在利用大量图像-文本对训练时,网络内部的图像模型提取图像表示,文本模型提取文本表示。针对相同的图像-文本对,模型会拉近图像和文本表示的距离。

反之,对于不同的图像-文本对,则会让相应的表示彼此远离。这样一来的直接好处,就是能实现零样本学习。比如一张图像的表示更接近文本“狗”的表示,那么它就会被归类为狗。这种思路可以扩展到数千种情况。

实际上,CLIP和ALIGAN采用的都是这个思路,它们在ImageNet数据集上的精度分别是76.2%、76.4%。而LIMoE-L/16可以达到78.6% ,已经超过了CLIP。未经过预训练的LIMoE H/14则能达到84.1%的精度。

c4e4275579686df848b8cf5357fd9ced.png

d83e1143788de78a20577192327d96ec.png而在LIMoE的专家层中,谷歌表示还发现了一些有趣的现象。比如在训练设置中,图像标记比文本标记要多很多,因此所有专家都会在在任务中多少处理些图像。

只不过有的会主要处理图像,有的主要处理文本,或者二者兼具。还有在大多数情况下,都会有一个专家来处理所有包含文本表示的图像patch。

1e9c5f57e8dcb557bb2bf19edefa5bef.png除了性能上的提升,使用稀疏化模型的好处还体现在降低计算成本上。因为“多专家”的模式意味着,尽管多设了很多子模型,模型容量显著增加,但是实际计算成本并没有明显变化。

如果一次任务中只使用了一个子模型,那它的成本和标准Transformer的差不多。比如LIMoE-H/14总共有5.6B参数,但是通过稀疏化,它只会使用每个token的675M参数。

One More Thing

稀疏化模型一直是谷歌深度研究的一个方向,已经提出了MoE、GLaM在内的多个模型。这次LIMoE也不是谷歌第一次魔改MoE。

去年6月,他们提出了V-MoE,是一种新型的视觉架构,今年已将全部代码开源。

参考链接:
https://ai.googleblog.com/2022/06/limoe-learning-multiple-modalities-with.html

8ba265b69b9b0866e55091b4d867c638.png后台回复关键词【入群

加入卖萌屋NLP、CV、搜广推与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

40721b487e0aa5a5b53ede55b66b91f5.gif

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

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

相关文章

新年彩蛋:Spring Boot自定义Banner

在2016年的最后一天,借用Spring Boot的Banner向各位程序猿同仁们问候一声:Happy New Year。 接下来我们就来介绍一下这个轻松愉快的自定义banner功能。实现的方式非常简单,我们只需要在Spring Boot工程的/src/main/resources目录下创建一个ba…

剑指Offer - 面试题58 - II. 左旋转字符串

1. 题目 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。 示例 1: 输入…

硬刚Meta!字节把元宇宙跳动到了美国

文 | 好困 拉燕源 | 新智元字节跳动招兵买马,组队「杀向」西海岸。如今元宇宙火得一塌糊涂,跟互联网挂钩的公司都想来掺一脚。最近,就连字节跳动也要进军元宇宙了!你给我等等,这是什么陈年旧闻?别急&#x…

Spring Boot应用的后台运行配置

酱油一篇,整理一下关于Spring Boot后台运行的一些配置方式。在介绍后台运行配置之前,我们先回顾一下Spring Boot应用的几种运行方式: 运行Spring Boot的应用主类使用Maven的Spring Boot插件mvn spring-boot:run来运行打成jar包后&#xff0c…

Spring Boot Actuator监控端点小结

在Spring Boot的众多Starter POMs中有一个特殊的模块,它不同于其他模块那样大多用于开发业务功能或是连接一些其他外部资源。它完全是一个用于暴露自身信息的模块,所以很明显,它的主要作用是用于监控与管理,它就是:spr…

剑指Offer - 面试题60. n个骰子的点数(动态规划)

1. 题目 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。 示例 1: 输入: 1 输出…

经典著作《动手学深度学习》中文版2.0beta版发布!开源下载!

2020年疫情刚开始的时候,《动手学深度学习》的英文版相较中文版已经多出不少内容了。我们书第一版的不少老读者表示,疫情在家虽然想学习,但第一版早就刷完,于是只好刷阿信和小抖。沐神和我的第一反应是:这样对眼睛不好…

使用Spring StateMachine框架实现状态机

Spring StateMachine框架可能对于大部分使用Spring的开发者来说还比较生僻,该框架目前差不多也才刚满一岁多。它的主要功能是帮助开发者简化状态机的开发过程,让状态机结构更加层次化。前几天刚刚发布了它的第三个Release版本1.2.0,其中增加了…

滴滴退市了

文 | 彭小伟, 编 | 刘芳源 | 网约车焦点美东时间6月10日,滴滴正式在纽交所退市。根据官方通告,滴滴在完成退市后,其股份会转移到OTC(Over-the-Counter,场外交易市场)进行交易,交易代码为“DIDIY…

剑指Offer - 面试题62. 圆圈中最后剩下的数字(约瑟夫环 递推公式)

1. 题目 0,1,…,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个…

Spring Boot中使用MyBatis注解配置详解

之前在Spring Boot中整合MyBatis时,采用了注解的配置方式,相信很多人还是比较喜欢这种优雅的方式的,也收到不少读者朋友的反馈和问题,主要集中于针对各种场景下注解如何使用,下面就对几种常见的情况举例说明用法。 在…

何恺明团队的“视频版本MAE”,高效视频预训练!Mask Ratio高达90%时效果也很好!...

文 | 小马源 | 我爱计算机视觉本篇文章分享论文『Masked Autoencoders As Spatiotemporal Learners』,由何恺明团队提出视频版本的 MAE,进行高效视频预训练!Mask Ratio 高达 90% 时效果很好!详细信息如下:论文链接&…

剑指Offer - 面试题45. 把数组排成最小的数(字符串排序)

1. 题目 输入一个正整数数组&#xff0c;把数组里所有数字拼接起来排成一个数&#xff0c;打印能拼接出的所有数字中最小的一个。 示例 1: 输入: [10,2] 输出: "102"示例 2: 输入: [3,30,34,5,9] 输出: "3033459"提示: 0 < nums.length < 100 说明…

Spring Boot整合MyBatis

最近项目原因可能会继续开始使用MyBatis&#xff0c;已经习惯于spring-data的风格&#xff0c;再回头看xml的映射配置总觉得不是特别舒服&#xff0c;接口定义与映射离散在不同文件中&#xff0c;使得阅读起来并不是特别方便。 Spring中整合MyBatis就不多说了&#xff0c;最近…

谷歌放弃Tensorflow,全面拥抱JAX

文 | Matthew Lynley源 | 机器之心编辑部TensorFlow 大概已经成为了谷歌的一枚「弃子」。2015 年&#xff0c;谷歌大脑开放了一个名为「TensorFlow」的研究项目&#xff0c;这款产品迅速流行起来&#xff0c;成为人工智能业界的主流深度学习框架&#xff0c;塑造了现代机器学习…

LeetCode 第 20 场双周赛(294 / 1541,前19.07%,第1次全部通过)

文章目录1. 比赛结果2. 题目LeetCode 5323. 根据数字二进制下 1 的数目排序 easyLeetCode 5324. 每隔 n 个顾客打折 mediumLeetCode 5325. 包含所有三种字符的子字符串数目 mediumLeetCode 5326. 有效的快递序列数目 hard1. 比赛结果 第一次全部做出来了&#xff0c;提前6分钟…

Spring Boot中的缓存支持(二)使用Redis做集中式缓存

上一篇介绍了在Spring Boot中如何引入缓存、缓存注解的使用、以及EhCache的整合。 虽然EhCache已经能够适用很多应用场景&#xff0c;但是由于EhCache是进程内的缓存框架&#xff0c;在集群模式下时&#xff0c;各应用服务器之间的缓存都是独立的&#xff0c;因此在不同服务器…

NLP开源数据集汇总

源 | 极市平台本文汇总了几个NLP相关的开源数据集&#xff0c;均附有下载链接。CASIA手写数据集数据集地址&#xff1a;http://m6z.cn/6pFPtCCASIA-HWDB-T&#xff1a;一个从中文手写数据库CASIA-HWDB收集的触摸字符数据库。所有接触的字符&#xff08;或字符串&#xff09;都用…

LeetCode 1360. 日期之间隔几天(闰年判断)

1. 题目 请你编写一个程序来计算两个日期之间隔了多少天。 日期以字符串形式给出&#xff0c;格式为 YYYY-MM-DD&#xff0c;如示例所示。 示例 1&#xff1a; 输入&#xff1a;date1 "2019-06-29", date2 "2019-06-30" 输出&#xff1a;1示例 2&…

“我要做小小瑶大人的狗!”

小轶&#xff1a;这真的是白鹡鸰写的作为21世纪新时代人格健全&#xff0c;精神独立&#xff0c;心理健康的有志青年&#xff0c;总有那么几个时刻&#xff0c;会让我们情不自禁&#xff0c;眼泪从嘴角流下地呐喊着&#xff1a;“我是XXX的狗&#xff01;”啊&#xff01;这诚恳…