大模型,多模态大模型面试问题记录【时序,Qformer,卷积,感受野,ControlNet,IP-adapter】

news2024/11/30 1:10:36

大模型,多模态大模型面试问题记录24/10/27

  • 问题一:视频生成例如Sora或者视频理解internvl2模型怎么提取时序上的特征。
  • 问题二:Qformer介绍
    • 训练阶段一
    • 训练阶段二
  • 问题三:卷积维度计算公式,感受野
      • 1. 卷积层
        • 输出高度和宽度
        • 输出通道数
        • 总结
      • 2. 池化层
        • 输出高度和宽度
        • 输出通道数
        • 总结
      • 示例
    • 感受野
      • 感受野计算公式
      • 综合计算
      • 示例
        • 计算步骤
      • 总结
  • 问题四:ControlNet超详细解
    • 内部架构:
    • **前馈**
  • 问题五:IP-adapter超详细解

问题一:视频生成例如Sora或者视频理解internvl2模型怎么提取时序上的特征。

  1. 稀疏采样与空间下采样:
    将输入视频稀疏采样 8 帧,并进行 14x14 的空间下采样。
    这使得模型能够从少量帧中提取信息,并降低计算复杂度。
  2. 3D正余弦可学习的位置编码,将每个时序 token 与一个类别 token 和 3D 位置编码结合。
    3D 位置编码包含了时间信息,帮助模型理解视频中的时间顺序。
  3. 多头自注意力机制:
    ViT 中的多头自注意力机制能够捕捉视频帧之间的长距离依赖关系。
    通过注意力机制,模型能够关注重要的帧并忽略无关的帧,从而更好地理解视频内容。
  4. 位置池化:
    在 ViT 的每个阶段后添加位置池化层。
    位置池化层将每个阶段的特征映射到一个固定大小的向量,从而降低计算复杂度,并保持时间信息。
  5. 逐步增强的架构:
    InternVideo2 的视频编码器包含多个阶段,每个阶段的参数量和模型规模都逐步增强。
    这种设计使得模型能够学习越来越复杂的时序特征。
  6. 与其他模态的对比学习:
    InternVideo2 将视频特征与其他模态(如文本、音频、语音)进行对比学习。
    这使得模型能够更好地理解视频内容,并学习更丰富的时序特征。

问题二:Qformer介绍

参考BLIP2中Q-former详解
总结关键点是:

  1. Q-Former是一个轻量级的transformer,它使用一个可学习的query向量集,从冻结的视觉模型提取视觉特征。
  2. 采取两阶段预训练策略
    • 阶段一:vision-language表示学习(representation learning),迫使Q-Former学习和文本最相关的视觉表示。
    • 阶段二:vision-to-language生成式学习(generative learning),将Q-Former的输出连接到冻结的大语言模型,迫使Q-Former学习到的视觉表示能够为大语言模型所解释。

Q-former结构
在这里插入图片描述
Q-Former由两个transfomer子模块组成,左边为**(learnable) query encoder**,右边为text encoder & decoder。记视觉模型的image encoder的输出为I。左边网络的(learnable) query为Q,右边网络的输入text为T。注意Q是一个向量集,非单个向量。它可以视为Q-Former的参数。

  • 左边的transformer和视觉模型image encoder交互,提取视觉表征,右边的transformer同时作为text encoder和decoder。

  • 左边的query encoder和右边的text encoder共享self-attention layer。

  • 通过self attention layer,实现Q向量之间的交互。

  • 通过cross attention layer,实现Q向量和I的交互。

  • Q和T之间的交互,也是通过共享的self attention layer实现的,不过根据训练目标的不同,通过不同的attention mask来实现不同的交互。

不同的交互任务如下:图文对比学习ITC,图文匹配ITM,基于图的文本生成ITG

  • ITC,使用单模态视觉和大语言模型各自的注意力掩码,Q向量和T之间没有交互。

  • ITM,使用双向注意力机制掩码(MLM),实现Q向量和T之间的任意交互。Q向量可以attention T,T也可以attention Q向量。

  • ITG,使用单向注意力机制掩码(CLM),实现Q向量和T之间的部分交互。Q向量不能attention T,T中的text token可以attention Q向量和前面的text tokens。

图文匹配任务与图文对比学习的主要区别是,引入了图文之间的cross attention,进行细粒度的图像和文本匹配用来预测,可以理解为单塔模型和双塔模型的区别

训练阶段一

在这里插入图片描述

text对进行多目标训练(ITC+ITM+ITG)。

这三个目标都是将视觉表示和文本表示T进行对齐,学习到最匹配文本的视觉表示。

这个多目标训练是在BLIP论文中提出的。在BLIP论文中提到,之所以同时训练三个目标,是为了让学习到的视觉表示可以同时做理解和生成下游任务。

ITC和ITM主要是为了适应图片分类、图片检索、VQA等理解类任务。ITG主要是为了适应Captioning等生成类任务。

ITC是对比学习,通过最大化positive image-text pair,最小化negative image-text pair。而ITM是二分类模型,加入一个linear layer,直接给image-text pair打分。

由于训练ITC目标时,为了防止信息泄露,image和text不能attention彼此,捕捉到的image-text交互信息有限。训练ITM允许image和text互相attention,而且是双向的,来捕捉到更细粒度的image-text交互信息。同时训练ITC、ITM这两个目标,互补一下,以更好地进行image-text对齐。

ITG目标的作用是训练Q-Former,让它具有在给定图片的情况下,生成文本的能力。

右边transformer,在ITC和ITM目标训练中,作为encoder,在ITG目标训练中,作为decoder。

训练阶段二

在这里插入图片描述
分别展示了对于decoder-only和encoder-decoder架构的大语言模型,预训练阶段二的示意图。

这个阶段是比较简单的,通过一个linear layer将Q-Former输出投射(project)成一个向量(和大语言模型的embedding一样维度),将它拼接到大语言模型的输入text的embedding前面,相当于一个soft prompt。

将Q-Former学习的文本和图像向量,加上一个全连接层(一个Linear,从768维到2560维),然后输入到大预言模型,预测文本输出。

Decoder only:将Q-former学到token直接输入,得到文本输出,论文中采用facebook的opt模型进行训练。

encoder-decoder:将Q-former学到token加上前缀词(如图中的a cat)一起输入,得到后续的文本输出,论文中采用FlanT5添加指令进行训练。

问题三:卷积维度计算公式,感受野

在卷积层和池化层中,输入和输出的维度变化受卷积核大小、步长、填充(padding)等参数的影响。以下是详细说明:

1. 卷积层

对于输入张量的维度 H i n × W i n × C i n H_{in} \times W_{in} \times C_{in} Hin×Win×Cin(高度、宽度、通道数),卷积层的输出维度可以通过以下公式计算:

输出高度和宽度
  • 输出高度 H o u t H_{out} Hout
    H o u t = ⌊ H i n + 2 × padding h − kernel_size h stride h ⌋ + 1 H_{out} = \left\lfloor \frac{H_{in} + 2 \times \text{padding}_h - \text{kernel\_size}_h}{\text{stride}_h} \right\rfloor + 1 Hout=stridehHin+2×paddinghkernel_sizeh+1

  • 输出宽度 W o u t W_{out} Wout
    W o u t = ⌊ W i n + 2 × padding w − kernel_size w stride w ⌋ + 1 W_{out} = \left\lfloor \frac{W_{in} + 2 \times \text{padding}_w - \text{kernel\_size}_w}{\text{stride}_w} \right\rfloor + 1 Wout=stridewWin+2×paddingwkernel_sizew+1

输出通道数
  • 输出通道数通常由卷积层的滤波器数量决定,设为 C o u t C_{out} Cout
总结
  • 输出维度 H o u t × W o u t × C o u t H_{out} \times W_{out} \times C_{out} Hout×Wout×Cout

2. 池化层

对于池化层,输出维度的计算方式与卷积层类似,通常以最大池化或平均池化为主。

输出高度和宽度
  • 输出高度 H o u t H_{out} Hout
    H o u t = ⌊ H i n − kernel_size h stride h ⌋ + 1 H_{out} = \left\lfloor \frac{H_{in} - \text{kernel\_size}_h}{\text{stride}_h} \right\rfloor + 1 Hout=stridehHinkernel_sizeh+1

  • 输出宽度 W o u t W_{out} Wout
    W o u t = ⌊ W i n − kernel_size w stride w ⌋ + 1 W_{out} = \left\lfloor \frac{W_{in} - \text{kernel\_size}_w}{\text{stride}_w} \right\rfloor + 1 Wout=stridewWinkernel_sizew+1

输出通道数
  • 池化层通常保持通道数不变,即 C o u t = C i n C_{out} = C_{in} Cout=Cin
总结
  • 输出维度 H o u t × W o u t × C i n H_{out} \times W_{out} \times C_{in} Hout×Wout×Cin

示例

假设输入为 32 × 32 × 3 32 \times 32 \times 3 32×32×3 的图像,使用 3 × 3 3 \times 3 3×3 的卷积核,步长为 1,padding 为 1:

  • 输出维度为 32 × 32 × C o u t 32 \times 32 \times C_{out} 32×32×Cout(C_out 根据滤波器数量而定)。

如果使用 2 × 2 2 \times 2 2×2 的最大池化,步长为 2:

  • 输出维度为 16 × 16 × 3 16 \times 16 \times 3 16×16×3

通过这些公式,你可以灵活地调整卷积层和池化层的参数,以满足不同模型的需求。

感受野

综合考虑卷积层和池化层的所有参数(卷积核大小、步长、填充等),感受野的计算可以通过递推公式来进行。以下是完整的感受野计算公式:

感受野计算公式

  1. 卷积层
    对于第 l l l 层卷积层,假设其参数为:

    • 卷积核大小 k l k_l kl
    • 步长 P l P_l Pl
    • 填充(padding) padding l \text{padding}_l paddingl

    则第 l l l 层的感受野 R l R_l Rl 由以下公式给出:
    R l = R l − 1 + ( k l − 1 ) ⋅ P l R_l = R_{l-1} + (k_l - 1) \cdot P_l Rl=Rl1+(kl1)Pl

  2. 池化层
    对于第 m m m 层池化层,假设其参数为:

    • 池化核大小 k p k_p kp
    • 步长 P p P_p Pp

    则第 m m m 层的感受野 R m R_m Rm 由以下公式给出:
    R m = R m − 1 + ( k p − 1 ) ⋅ P p R_m = R_{m-1} + (k_p - 1) \cdot P_p Rm=Rm1+(kp1)Pp

综合计算

如果将卷积层和池化层结合起来,假设网络中有多个卷积层和池化层的交替,感受野的综合计算可以如下进行:

  1. 初始化

    • 输入层的感受野设为 R 0 = 1 R_0 = 1 R0=1
  2. 递推计算

    • 对于每一层(无论是卷积层还是池化层),按照顺序进行递推计算:
      • 如果是卷积层:
        R l = R l − 1 + ( k l − 1 ) ⋅ P l R_l = R_{l-1} + (k_l - 1) \cdot P_l Rl=Rl1+(kl1)Pl
      • 如果是池化层:
        R m = R m − 1 + ( k p − 1 ) ⋅ P p R_m = R_{m-1} + (k_p - 1) \cdot P_p Rm=Rm1+(kp1)Pp

示例

假设你有以下层的组合:

  • 第 1 层(卷积层): k 1 = 3 k_1 = 3 k1=3 P 1 = 1 P_1 = 1 P1=1,padding = 1 = 1 =1
  • 第 2 层(池化层): k p = 2 k_p = 2 kp=2 P p = 2 P_p = 2 Pp=2
  • 第 3 层(卷积层): k 2 = 3 k_2 = 3 k2=3 P 2 = 1 P_2 = 1 P2=1,padding = 1 = 1 =1
计算步骤
  1. 第一层(卷积层)
    R 1 = R 0 + ( k 1 − 1 ) ⋅ P 1 = 1 + ( 3 − 1 ) ⋅ 1 = 3 R_1 = R_0 + (k_1 - 1) \cdot P_1 = 1 + (3 - 1) \cdot 1 = 3 R1=R0+(k11)P1=1+(31)1=3

  2. 第二层(池化层)
    R 2 = R 1 + ( k p − 1 ) ⋅ P p = 3 + ( 2 − 1 ) ⋅ 2 = 4 R_2 = R_1 + (k_p - 1) \cdot P_p = 3 + (2 - 1) \cdot 2 = 4 R2=R1+(kp1)Pp=3+(21)2=4

  3. 第三层(卷积层)
    R 3 = R 2 + ( k 2 − 1 ) ⋅ P 2 = 4 + ( 3 − 1 ) ⋅ 1 = 6 R_3 = R_2 + (k_2 - 1) \cdot P_2 = 4 + (3 - 1) \cdot 1 = 6 R3=R2+(k21)P2=4+(31)1=6

总结

最终,经过这几层后,第三层神经元的感受野为 6。这意味着该层的每个输出值与输入图像中 6x6 的区域相关联。通过这种方式,你可以计算整个网络中每一层的感受野,以便更好地理解模型的特征提取能力。

问题四:ControlNet超详细解

参考Stable Diffusion — ControlNet 超详细讲解

  1. 使用Stable Diffusion并冻结其参数,同时copy一份SDEncoder的副本,这个副本的参数是可训练的。这样做的好处有两个:

    • 制作这样的副本而不是直接训练原始权重的目的是为了避免在数据集很小时的过拟合,同时保持了从数十亿张图像中学习到的大模型质量。
    • 由于原始的权值被锁定了,所以不需要对原始的编码器进行梯度计算来进行训练。这可以加快训练速度;因为不用计算原始模型上参数的梯度,所以节省了GPU内存。
  2. 零卷积 :即初始权重和bias都是零的卷积。在副本中每层增加一个零卷积与原始网络的对应层相连。在第一步训练中,神经网络块的可训练副本和锁定副本的所有输入和输出都是一致的,就好像ControlNet不存在一样。换句话说,在任何优化之前,ControlNet都不会对深度神经特征造成任何影响,任何进一步的优化都会使模型性能提升,并且训练速度很快。
    在这里插入图片描述

内部架构:

在这里插入图片描述

Stable Diffusion (UNet) 中的所有参数都被锁定并克隆到 ControlNet 端的可训练副本中。然后使用外部条件向量训练该副本。

创建原始权重的副本而不是直接训练原始权重是为了防止数据集较小时出现过拟合,并保持已经训练好的大模型的高质量,这些大模型在数十亿图像上训练得到,并可以直接部署到生产环境使用。

前馈

在这里插入图片描述

在这里插入图片描述

问题五:IP-adapter超详细解

参考https://blog.csdn.net/weixin_44966641/article/details/136692647
IP-Adapter:用于文本到图像扩散模型的文本兼容图像提示适配器

IP-Adapter的网络架构
在这里插入图片描述

  1. 当前adapter很难达到微调图像提示模型或从头训练的模型性能,主要原因是图像特征无法有效的嵌入预训练模型中。大多数方法只是将拼接的特征输入到冻结的cross-attention中,阻止了扩散模型捕捉图像图像提示的细粒度特征。
  2. 为了解决这个问题,我们提出了一种解耦交叉注意力策略,即通过新添加的交叉注意力层嵌入图像特征。提议的IP-adapter包含两个部分:
    • 图像编码器用于从图像提示中提取图像特征;
    • 具有解耦的cross-attention的适配模块,用于将图像特征嵌入预训练的文本到图像扩散模型中。

在这里插入图片描述
在这里插入图片描述


创作不易,观众老爷们请留步… 动起可爱的小手,点个赞再走呗 (๑◕ܫ←๑)
欢迎大家关注笔者,你的关注是我持续更博的最大动力


原创文章,转载告知,盗版必究



在这里插入图片描述


在这里插入图片描述
♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠

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

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

相关文章

Spring Cloud --- Sentinel 授权规则

授权规则概述 在某些场景下,需要根据调用接口的来源判断是否允许执行本次请求。此时就可以使用 Sentinel 提供的授权规则来实现,Sentinel 的授权规则能够根据请求的来源判断是否允许本次请求通过。 在 Sentinel 的授权规则中,提供了 白名单…

自修室预约系统|基于java和小程序的自修室预约系统设计与实现(源码+数据库+文档)

自修室预约系统 目录 基于java和小程序的自修室预约系统设计与实现 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师&#x…

asp.net core 入口 验证token,但有的接口要跳过验证

asp.net core 入口 验证token,但有的接口要跳过验证 在ASP.NET Core中,你可以使用中间件来验证token,并为特定的接口创建一个属性来标记是否跳过验证。以下是一个简化的例子: 创建一个自定义属性来标记是否跳过验证: public clas…

【华为HCIP实战课程二十五】中间到中间系统协议IS-IS配置实战续系统ID区域ID,网络工程师

上章简单讲解了ISIS基本配置,本章继续详细讲解ISIS配置及实施 IS-IS配置拓扑 1、R1进行配置IS-IS [R1]display current-configuration configuration isis isis 1 network-entity 49.0124.1111.1111.1111.00 //配置NET地址,由三部分组成,区域ID、系统ID和固定的SEL 00 i…

Kafka集群数据迁移方案

概述 MirrorMaker2(后文简称 MM2)在 2019 年 12 月随 Kafka 2.4.0 一起推出。顾名思义,是为了解决 Kafka 集群之间数据复制和数据同步的问题而诞生的 Kafka 官方的数据复制工具。在实际生产中,经常被用来实现 Kafka 数据的备份&a…

鼠标增强工具 MousePlus v5.3.9.0 中文绿色版

MousePlus 是一款功能强大的鼠标增强工具,它可以帮助用户提高鼠标操作效率和精准度。该软件可以自定义鼠标的各种功能和行为,让用户根据自己的习惯和需求来调整鼠标的表现。 详细功能 自定义鼠标按钮功能:可以为鼠标的各个按钮设置不同的功能…

【大模型系列】Mini-InternVL(2024.10)

Paper:https://arxiv.org/pdf/2410.16261Github:https://github.com/OpenGVLab/InternVL/tree/main/internvl_chat/shell/mini_internvlAuthor:Zhangwei Gao et al. 上海人工智能实验室 文章目录 0 总结(省流版)1 模型结构1.1 InternViT-300M…

探讨Facebook的AI研究:未来社交平台的技术前瞻

在数字时代,社交媒体已成为人们日常生活的重要组成部分。作为全球最大的社交网络之一,Facebook不断致力于人工智能(AI)的研究与应用,以提升用户体验、增强平台功能并推动技术创新。本文将探讨Facebook在AI领域的研究方…

一键导入Excel到阿里云PolarDB-MySQL版

今天,我将分享如何一键导入Excel到阿里云PolarDB-MySQL版数据库。 准备数据 这里,我们准备了一张excel表格如下: 连接到阿里云PolarDB 打开的卢导表,点击新建连接-选择阿里云PolarDB-MySQL版。如果你还没有这个工具,…

[NSSCTF 2nd]php签到 详细题解

知识点: linux文件后缀名绕过 表单文件上传 pathinfo 函数 file_put_contents()函数 命令执行 代码审计: <?phpfunction waf($filename){$black_list array("ph", "htaccess", "ini");$ext pathinfo($filename, PATHINFO_EXTENSION…

[0260].第25节:锁的不同角度分类

MySQL学习大纲 我的数据库学习大纲 从不同维度对锁的分类&#xff1a; 1.对数据操作的类型划分:读锁和写锁 1.1.读锁 与 写锁概述&#xff1a; 1.对于数据库中并发事务的读-读情况并不会引起什么问题。对于写-写、读-写或写-读这些情况可能会引起一些问题&#xff0c;需要使用…

云原生后端开发教程

云原生后端开发教程 引言 随着云计算的普及&#xff0c;云原生架构逐渐成为现代软件开发的主流。云原生不仅仅是将应用部署到云上&#xff0c;而是一种构建和运行应用的方式&#xff0c;充分利用云计算的弹性和灵活性。本文将深入探讨云原生后端开发的核心概念、工具和实践&a…

Docker 常用命令全解析:提升对雷池社区版的使用经验

Docker 常用命令解析 Docker 是一个开源的容器化平台&#xff0c;允许开发者将应用及其依赖打包到一个可移植的容器中。以下是一些常用的 Docker 命令及其解析&#xff0c;帮助您更好地使用 Docker。 1. Docker 基础命令 查看 Docker 版本 docker --version查看 Docker 运行…

常见的java开发面试题

目录 1.SpringBoot 打成的jar包和普通的jar包有什么区别&#xff1f; 如何让SpringBoot打的jar包可依赖&#xff1f; 2. http 和 https 的区别&#xff1f; 一、安全性 二、连接方式 三、性能影响 四、应用场景 五、总结&#xff1a; 3. GC是什么&#xff0c;为什么要使用…

信息安全入门——网络安全控制

目录 前言信息安全入门&#xff1a;网络安全控制基础1. 用户识别技术&#xff1a;确认你是谁2. 访问控制技术&#xff1a;定义你能做什么3. 访问控制列表&#xff08;ACL&#xff09;&#xff1a;精细的权限管理4. 漏洞控制&#xff1a;防范未然5. 入侵检测系统&#xff08;IDS…

北理工计算机考研难度分析

C哥专业提供——计软考研院校选择分析专业课备考指南规划 总体情况概述 北京理工大学计算机学院2024届考研呈现出学硕扩招、专硕稳定的特点。学硕实际录取27人(含非全统考)&#xff0c;复试线360分&#xff0c;复试录取率76%&#xff1b;计算机技术专硕(不含珠海)实际录取29人…

模拟算法 (算法详解+例题)

目录 一、什么是模拟二、模拟算法的特点和技巧三、模拟OJ题3.1、替换所有的问号3.2、提莫攻击3.3、N字形变换3.4、外观数列3.5、数青蛙 一、什么是模拟 模拟是对真实事物或者过程的虚拟。在编程时为了实现某个功能&#xff0c;可以用语言来模拟那个功能&#xff0c;模拟成功也…

php后端学习,Java转php

遇到前后端跨域 php解决跨域问题可以加上下面的代码&#xff1a; header(“Access-Control-Allow-Origin:*”); 并且查看自己的数据库信息是否连接成功。 从Java转php 个人感受php跟偏向前端&#xff0c; 写后端逻辑时没有像java又springboot工具方便。 但是和前端联调很方便…

一个简单的例子,说明Matrix类的妙用

在Android、前端或者别的平台的软件开发中&#xff0c;有时会遇到类似如下需求&#xff1a; 将某个图片显示到指定的区域&#xff1b;要求不改变图片本身的宽高比&#xff0c;进行缩放&#xff1b;要求最大限度的居中填充到显示区域。 以下示意图可以简单描绘该需求 以Androi…

Zookeeper分布式锁实现

文章目录 1、zk分布式锁的实现原理1_获取锁过程2_释放锁 2、代码实现1_创建客户端对象2_使用和测试案例 1、zk分布式锁的实现原理 Z o o k e e p e r Zookeeper Zookeeper 就是使用临时顺序节点特性实现分布式锁的&#xff0c;官网。 获取锁过程 &#xff08;创建临时节点&…