大模型时代下做科研的四个思路【论文精读·52】

        大家好,上个礼拜FacebookMetaAI刚刚开源了他们自己的一个语言的大模型,叫做LLAMA,这个LLAMA的模型有65billing的参数,效果自然是不错的。他们的目的也是想让这个大模型更加的亲民,能够让更多人拿到这个模型的参数,有可能就能直接应用到他们的领域中去了,是一件非常好的事儿。他们分别开源了四个模型,从小到大就从有这个70亿、130亿、330亿和650亿参数量,这四个模型。但这里面比较有意思的一个点,就是他们虽然管自己叫这个large language model LLM但事实上在这篇博文里,他们管他们自己的LLAMA叫做smaller models,就是他认为他们自己是小模型。这个其实就看和谁比了,如果和GPT3175billion比,或者和Google的palm这个540billion比,那这个66billion确实是小了一个数量级,但其实66billion已经比我们平时用的大多数模型都要大很多倍了,基本上很少有人能够去训练这些上10亿参数的模型,就更不用说产品部署了。这些大模型对于大部分研究者来说其实是可望而不可即的,那自然语言处理那边,我们已经知道大模型已经是主流,模型越对越大了那计算机视觉这边肯定也不甘落后,也就在两周前,这个Google又推翻了自己之前最大的这个vision transformer,又推出了更大的这个VIT,有22billion的参数,那现在视觉也算是有了自己的这个大模型了。之前不论是Google,他们自己推出的这个vit-g就有两billion,还是说他们这个pali,还有就他这里写的这个chen2022这个多模态的工作里提出的vit-e,还有这个4billion的模型都是刚上10亿,然后这回这个VIT一下就到了220亿。所以终于能跟这个language这边保持差不多的这个模型大小了,那这个效果自然也是不用说,各种各样的视觉任务都能做,而且效果都很好。那眼看这个科研进步的速度越来越快,不仅每天可能都有这种立意比较新的这个论文出来,而且之前的模型也是越做越大,现在这些模型都成了系列,动不动就是V1、V2、V3,所以是一代比一代大,一代比一代强,所以我看很多小伙伴经常在这个视频下面留言,而现在这个模型方向已经卷的都玩不动了,还有什么别的方向可以做呢?还有同学可能说现在很多工作都是大力出奇迹,那如果我没有这个大力,我该怎么出奇迹?或者还有很多同学就问,马上要开题了但是实验室又没有那么多计算资源,该怎么样选择一个合适的研究方向呢?那其实面对进步如此之快、竞争如此白热化的这个科研领域来说,你说你不慌肯定是假的。

        那今天我就抛砖引玉用自己参与过的一些不那么需要计算资源的项目来跟大家讨论一下,如何在有限的计算资源内做出一遍让自己比较满意的工作,如果大家有别的更好的想法,也欢迎在视频下方留言,大家一起交流,一起进步因为我做的方向一般比较偏视觉或者多模态,所以今天要分享的工作,也都是偏这些领域的。那今天主要会提到四个方向:

  1. 第一个方向就是因为你没有那么多的计算资源,所以你肯定是要往这个efficiency上去做的,所以这也是最直白的一个方式,就是哪里慢我就让它哪里快起来,哪里太heavy了,我就把它变得lightweight一些,总之就是让所有的这些方法变得更efficient一点。在这里我们举的一个例子就是用最近比较火的这个PEFT的这个概念,就是parameter efficient finetuning去如何做这个大模型的微调
  2. 那第二个方向就是能不做Pretraining就不做Pretraining,能借助已有的东西,那就尽量借助已有的东西,比如说别人已经预训练好的模型,那不用白不用,那clip出来之后就有那么多那么多几百、上千篇论文出来,直接就调用clip的模型去做各种非常有意思的应用,这些都很有impact。同时可以选择那些比较新的研究方向,这样能避免有很多的这个竞争者,而且也不用天天想着如何去刷榜,能够全心全意投入到自己喜欢的科研工作之中。
  3. 那第三个方向,就是尽量做一些通用的,能够Plugandplay,就是即插即用的这种模块儿。那这个模块儿其实不光是说模型上的这种模块儿,它有可能也是一个目标函数,一个新的loss,它有可能也是一个data competition的方法,总之就是一个很简单的东西,但是能够应用到各种领域的。那这个方法的好处就是说你只需要选很多很多的baseline,然后在一个你能承受的这个setting之下去做这个实验,因为它是公平对比,所以这就已经足可以说明你方法的有效性了,而不需要你真的在特别大的数据集上,用特别大的模型去证明你的有效性。
  4. 那最后一个方向就是比如说构建一个数据集,然后或者做一些以分析为主的文章,或者写一篇综述论文那这个方向是最不需要计算资源的,但同样非常有这个影响力因为你给整个领域都提供了一些非常新颖的见解,同时也能让你自己对这个领域的理解加深一些。

1 使用parameter efficient finetuning去做模型的训练

        所以上这些都是我认为比较有用,而且不那么耗费资源的研究方向那我们先来看一下今天第一篇要讲的工作,就是如何使用parameter efficient finetuning去做这个模型的训练。这个是我们最近刚中的一篇iclr23的论文,叫做AIM: ADAPTING IMAGE MODELS FOR EFFICIENTVIDEO ACTION RECOGNITION,是用来做这个视频动作识别,也就视频理解的一个工作。视频理解其实我们之前也讲过很多期了,从最开始的双流网络到后面的这个I3D网络,后面又讲了视频理解上,视频理解下,基本是把最近几年比较耳熟能详的视频理解的工作都提了一下。

        那我们先来看一下这篇文章的图一,其实就是回顾一下之前的那些视频理解的工作都是怎么做的,

        其实简单一点,粗略一点来分类的话。大部分之前的工作都可以被划分为两类

        一类就是这个时间上和空间上的处理尽量分开来做,另外一类就是时空一起来做。那如果画的这张图里来表示,就往往是说我们先有一个很大的这个图像的数据集,我们先去做一个预训练,得到一个image的模型,比如说这里就是一个,比如说在imagenet1k上训练过的一个rise50的模型,或者说是在一个imagenet21K上训练的一个VIT或者swing的模型。总之这里面就是一个已经预训练好的一个图像的模型,那接下来要么就是你在这个已经有的这个图像模型之上去单独的增加一些这个时序处理的模块,比如说在TSN里他就把这个视频p成几段,然后最后去把这些视频抽出来的特征做一下加权平均那在TSM里,作者就是把这个模型的特征在这个channel维度上进行来回的这个shift,从而去模拟这个时序建模,那或者说在最近的使用Transformer来做视频理解的工作里,像timesformer,那就是先做timeattention,然后再做这个specialattention,就把这个specialtemporal劈开来做。所以大致上就可以总结为是在一个已有的图像模型之上,加了一些这个时序处理的模块

        那另外一系列工作就是这个时间空间的特征,我要一起学。那当然这里面主要就是这个3D网络,比如我们之前讲过的这个I3D或者说像Transformer时代的这个video swing,那就把2D的这个shiftedwindow变成了3D的shiftwindow总之输入是3D的,模型也是3D的,是一个joint modeling的过程

        所以大致就分为这两类。那之前的这些方法虽然说效果上都非常的好但是他们都有一个小小的问题,就是这个计算代价实在是太大,因为他们的这些模型全都是需要fullfinetuning的,就是整个模型所有的参数都要拿下来,在这个视频数据集上去做这个finetuning但是本身视频数据集就比较大,这个数据的io一般又有bottleneck,然后这些模型本身也比较大,所以这个训练的cos非常昂贵,一般左边这种时间和空间分开的方法还好,可能就是说如果你有一台8卡机,可能就是三四天、四五天就能完成一个模型的训练,当然如果你的backbone特别大的话,可能也需要一周或者10天的时间,总之稍微能轻量一些。但是对于这种joint的video model比如说大部分的3D网络或者这个videoswing的模型,他们的训练时间就非常感人了,当然这些模型还好,因为他们利用了这个预训练的这个图像模型,所以说白了他们更多的还是在做一个finetuning那如果像视频领域里有一些模型是从头开始训练,纯formScratch那这些模型就需要更长的时间了啊,比如说像maskfeet或者videoMae这些最近的自监督的这个视频学习方法,他们的训练代讲都是以周为计算单位的,一般情况下想要复现他们的模型都很困难,更不要说是提出什么新模型去比他效果更好了。

        所以我自己一直想做的一个方向就是如何把这个视频理解做得更亲民,然后有更多的玩家,然后可以让这个领域更加蓬勃的发展,所以之前在组里做过这个gluon CV,视频里的开源,也写过一篇综述的论文,最近也准备在这个视频数据集上下功夫。但这篇文章主要的这个研究动机还是来自于CLIP,因为当时在20年的时候,这个对比学习很火,我自己也很痴迷于对比学习,所以一直想的就是能不能做一个很大的这个视频数据集,然后在上面用纯视觉的方法对比学习,然后训练出来一个很好的这个视频的特征。但是后来正在做的过程中,CLIP21年年初的时候就出来了,当时一看这个效果确实是太厉害了,它里面也做了这个视频动作识别UCF101和这个connect700的这两个数据集,直接zeroshot效果就非常好。虽然说这两个数据集比较specialheavy,之前我们也说过,就是这两个数据集比较偏重于这个物体的识别和这个背景的识别,就是说他不太看重这个时序性,就如果他看到一个视频里有一个篮球,那他就说十有八九这个动作就是打篮球了,他不太会是别的动作。所以这种视频数据集就是一般用这个图像的模型,也能做得很好所以这就解释了CLIP作为一个图像模型,它也能做这种视频动作识别的任务,但即使如此CLIP的效果还是好的出奇,也给了我一些启发,我主要想的一个问题就是,到底这个已经训练好的这个图像模型需不需要再finetuning?也就是这里面这个image model需不需要再去微调它?这里面有几个原因首先第一个原因就是CLIP已经证明了,就是即使Zeroshot它的效果就很好Zeroshot就是模型不变,我直接在各个数据集上所推理,所以它已经部分验证了这个假设,就是如果一个已经训练得很好的一个图像模型,我们可以直接从它里面抽,这个视觉的特征应该是比较具有泛化性,而且随着这个时代的进步,随着大家都在讨论这个foundation model我当时就在想以后的这个视觉模型,这个视觉的foundationmodel肯定是越来越好,越来越大了,那也就意味着它里面抽出来的特征肯定是越来越具有泛化性,而且越来越有效的。所以从有效性的这个方面来讲,当有了一个极其强大的已经预训练好的这个图像模型之后,我们可能就不需要finetuning这个部分。那另外一个原因也很好理解,就是为了防止这种灾难性遗忘,就是说如果你已经训练好了一个特别大的模型,它的参数量也非常多,那这个时候如果你的这个下游数据集没有很好的数据,或者说没有很多的数据,你硬要去finetuning这个大模型的话,往往你是finetuning不好的,要么就是直接overfit了,整个模型就不能用了,要么呢就是即使你能在你现在这个下游任务上表现得很好,但是它有了灾难性遗忘,就是它之前的很多大模型有的这种特性全都就丢失了,它的泛化性可能也丢失了,这也是得不偿失的一件事情。

        所以说从这两个主要的方面去考虑,我当时就很想尝试这条路,就是说当拿来一个非常大、非常有效的这个image model之后,我能不能直接就把它的这个模型参数锁住,然后在它上面加一些这种时序处理的模块,或者加一些新的这个目标函数啊?综之就是通过修改周边的方式来让这个模型具备这个时序建模的能力,从而让一个图像模型能直接做这个视频理解的任务,而不需要从头再去训练这么一个视频模型,省时省力。所以21年的时候其实就已经写了这么一个proposal,不过当时也没有想好什么可以用的这个很好的周边改动的方式,而且手头上还有几个别的正在进行的项目,所以就迟迟没有动手做这个工作,一直到22年年初,就是从21年年底开始很多基于Prompt工作,然后到22年初这个visual prompttuning VPT的出现,再让我感觉到这个方向如果再不做就来不及了。所以就赶紧去学习了一下这个prompt tuning以及这个prompter efficient finetuning这一系列的各种方法,好在其实这个prompterefficientfinetuning它一点儿都不难,不论是形式上还是理解起来都不难。

Adapter和prompt tuning Adapter

        我们接下来就可以稍微过一下其中两个比较普遍的方法,Adapter和这个prompt tuning Adapter最早来自于这篇2019年的论文,最早的时候就是用来做NLP。最近其实我们可以看到很多视觉这边或者多模态这边用的这个技术都是从NLP那边过来,原因就是因为大家都用transformer做backbone了。所以说那之前在NLP那边工作的一些方法,大概率在这边也是能work的,所以说就能很好的迁移过来,比如说这些parameter efficient finetuning的技术,或者说最近比较火的这个incontext learning,还有InstructGPT里那个RLHF,这些基于reinforcementlearning的方法都会快速的被运用到视觉里面,而且我觉得以这个视觉这个卷的速度很快,这个视觉的community就能反哺回这个NLPcommunity了那Adapter究竟是什么呢啊?其实Adapter很简单这是一个下采样的FC层,所以说这里你看这个feature从多变少,然后再过一层这个非线性的激活层然后再经历一层fitforwardupproject,就是一个上层硬的FC层,然后就结束了好,当然这里还有一个residualconnection,这个其实就是Adapterlayer,它就像一个即插即用的模块一样,可以插到这个consumerlayer里的任何一个地方那像2019年这篇工作的时候,它就是先在这个attention后

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ClickHouse快速上手

简介 ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS) 官网(https://clickhouse.com/docs/zh)给出的定义,其实没看懂 特性 ClickHouse支持一种基于SQL的声明式查询语言,它在许多情况下与ANSI SQL标准相同。使用时和MySQL有点相似&#…

加固平板电脑在无人机的应用|亿道三防onerugged

无人机技术的快速发展已经在许多领域展现出巨大潜力,而加固平板电脑的应用在无人机领域中扮演着重要角色。 首先,加固平板电脑在无人机探测设备中发挥着关键作用。无人机探测设备通常需要实时传输高清图像和数据,以支持各种监测、勘测和检测…

JAVA高并发——无锁与死锁

文章目录 1、与众不同的并发策略:比较交换2、无锁的线程安全整数:AtomicInteger3、Java中的指针:Unsafe类4、无锁的对象引用:AtomicReference5、带有时间戳的对象引用:AtomicStampedReference6、数组也能无锁&#xff…

Unity2023.1.19_ShaderGraph节点说明以及使用技巧

Unity2023.1.19_ShaderGraph节点说明以及使用技巧 目录 Unity2023.1.19_ShaderGraph节点说明以及使用技巧 1. 快捷键CtrlG完成和UE蓝图使用快捷键C一样的蓝图分组注释效果: 2. Tiling And Offset: 3. 以下是两组URP材质渲染的效果对比: 4…

JWT 重点讲解

JWT 重点讲解 文章目录 JWT 重点讲解1. JWT 是什么2. JWT 的组成2.1 第一部分 HEADER2.2 第二部分 PAYLOAD2.3 第三部分 SIGNATURE 3. JWT 在线生成与解析4. JWT 的特点4.1 无状态4.2 可自定义4.3 扩展性强4.4 调试性好4.5 安全性取决于密钥管理4.6 无法撤销4.7 需要缓存到客户…

Android基础Adapter适配器详解

一、概念 Adapter是后端数据和前端显示UI的适配器接口。常见的View如ListView、GridView等需要用到Adapter. BaseAdapter:抽象类,实际开发中继承这个类并且重写相关方法,用得最多的一个Adapter! ArrayAdapter:支持泛型…

第五篇【传奇开心果系列】Python文本和语音相互转换库技术点案例示例:详细解读pyttsx3的`preprocess_text`函数文本预处理。

传奇开心果短博文系列 系列短博文目录Python文本和语音相互转换库技术点案例示例系列 短博文目录前言一、pyttsx3的preprocess_text函数文本预处理基本用法示例代码二、实现更复杂的文本预处理逻辑示例代码三、去除停用词、词干提取示例代码四、词形还原、拼写纠正示例代码五、…

19-k8s的附加组件-coreDNS组件

一、概念 coreDNS组件:就是将svc资源的名称解析成ClusterIP; kubeadm部署的k8s集群自带coreDNS组件,二进制部署需要自己手动部署; [rootk8s231 ~]# kubectl get pods -o wide -A k8s系统中安装了coreDNS组件后,会有一个…

Linux(五)__系统管理

介绍 通常, Windows 中使用"任务管理器"主要有 3 个目的: 利用"应用程序"和"进程"标签来査看系统中到底运行了哪些程序和进程;利用"性能"和"用户"标签来判断服务器的健康状态&#xff1…

国际章真厉害,离婚后仍带汪峰继女小苹果赴日滑雪。

♥ 为方便您进行讨论和分享,同时也为能带给您不一样的参与感。请您在阅读本文之前,点击一下“关注”,非常感谢您的支持! 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 在如今这个纷繁复杂的社会中,家庭关系和亲子关系的…

K8S | 全面解读CKA认证的重要性!

K8S认证工程师(CKA)备考与学习指南https://blog.csdn.net/XMWS_IT/article/details/133697915?ops_request_misc%257B%2522request%255Fid%2522%253A%2522170849020616800182129977%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2…

在VS里使用C#制作窗口应用

新建项目 创建项目的时候搜索net,选择这个。 打开应该是这样 第一个控件 选择公共控件 - PictureBox - 拖入Form 在Image处选择上传本地资源,建议上传一个小一点的图片。 修改一下尺寸。 ctrls 保存 从“属性”切换到“事件” 双击Click事件…

学习并理解SQL注入问题

一、什么是sql注入 public class TestSql {public static void main(String[] args) {Scanner inScanner new Scanner(System.in);System.out.println("请输入用户名");String username inScanner.nextLine();System.out.println("请输入密码");String …

【RN】为项目使用React Navigation中的navigator

简言 移动应用基本不会只由一个页面组成。管理多个页面的呈现、跳转的组件就是我们通常所说的导航器(navigator)。 React Navigation 提供了简单易用的跨平台导航方案,在 iOS 和 Android 上都可以进行翻页式、tab 选项卡式和抽屉式的导航布局…

防御第六次作业-防火墙综合实验(av、url过滤、dns过滤)

目录 拓扑图: 要求: 8 9 10 11 拓扑图 要求 前7个要求在上一篇博客; 8.分公司内部的客户端可以通过域名访问到内部的服务器 9.假设内网用户需要通过外网的web服务器和pop3邮件服务器下载文件和邮件,内网的FTP服务器也需要…

安装unget包 sqlsugar时报错,完整的报错解决

前置 .net6的开发环境 问题 ? 打开unget官网,搜索报错的依赖Oracle.ManagedDataAccess.Core unget官网 通过unget搜索Oracle.ManagedDataAccess.Core查看该依赖的依赖 发现应该是需要的依赖Oracle.ManagedDataAccess.Core(>3.21.100)不支持.net6的环境 解…

加载arcgis切片服务网络请求有大量404错误

需求: 前端访问arcgis切片服务时,在网络请求中出现大量404(Not Found)错误,切片时设置了感兴趣区域,在感兴趣范围内请求切片时能够正常返回切片。 问题分析: 设置感兴趣区域切片的目的是减少站…

基于Mapbox展示GDAL处理的3D行政区划展示实践

目录 前言 一、Gdal数据处理 1、数据展示 2、Java数据转换 二、Mapbox可视化 1、定义Mapbox地图 2、地图初始化 3、创建地图 三、界面优化 1、区域颜色设置 2、高度自适应和边界区分 3、中文标注 总结 前言 最近有遇到一个需求,用户想在地图上把行政区划…

IP地理位置查询定位:技术原理与实际应用

在互联网时代,IP地址是连接世界的桥梁,而了解IP地址的地理位置对于网络管理、个性化服务以及安全监控都至关重要。IP数据云将深入探讨IP地理位置查询定位的技术原理、实际应用场景以及相关的隐私保护问题,旨在为读者提供全面了解和应用该技术…

海外媒体发稿:提高用户留存率的7个链游媒体宣发推广策略-华媒舍

在当今数字化时代,移动链游已经成为人们生活中不可或缺的一部分。随着链游市场日益竞争激烈,如何提高用户留存率成为了游戏开发者和媒体宣发人员需要面对的重要问题。本文将为您介绍7个有效的链游媒体宣发推广策略,帮助您提高用户留存率。 1.…