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

【大模型学习 | MINIGPT-4原理】

MINIGPT-4: ENHANCING VISION-LANGUAGE UNDERSTANDING WITH ADVANCED LARGE LANGUAGE MODELS

在GPT4未开源的情况下,作者认为其表现优越是因为采用了最为先进的LLM模型,因此,作者在BLIP2的基础上,将LLM模型替换为了Vicuna,同样也是通过一个线性映射层将图像表征映射为LLM的输入。此外,作者还提出只在短标题文本对上训练会出现不自然的语言描述(重复)。因此作者也构建了一个更加详细的图像描述数据集。

开源代码:https://minigpt-4.github.io/

一、预训练方法

预训练方法几乎和BLIP2模型一致,可以参考:【大模型学习 | BLIP2原理】-腾讯云开发者社区-腾讯云

1.1 Q-Former

主要作用就是对齐两个不同模态的冻结预训练模型

🟢 Q-Former包含了两个transformer子模块:(1)Image Transformer (特征提取) (2) Text transformer (作为文本编码器和解码器) ;

🟢 一组可学习的查询嵌入向量作为 Image Transformer 的输入,这些向量在self-attention layer相互联系以及通过 cross-attention layer与预训练的图像模型特征交互; 除此之外,这组可学习的嵌入向量也与文本token进行拼接作为Text transformer的输入;

🟢 将Q-Former初始化为 BERT base \text{BERT}_{\text{base}} BERTbase, cross-attention layer是随机初始化的;同时查询向量的大小为:( 32 × 768 32 \times 768 32×768)

在这里插入图片描述

1.2 视觉语言特征表示学习

第一阶段的训练目标是基于文本对,通过 Q-Former 与冻结图像编码器,使得可学习的 query 向量能够从图像中提取出与文本语义最相关、最具信息量的视觉特征。在这个阶段中,采用了与BLIP预训练过程近似的目标损失:Image-Text Contrastive Learning (ITC) 、Image-grounded Text Generation (ITG)、Image-Text Matching (ITM).

🟢 ITC:图像、文本特征对比学习,通过可学习的查询向量和Text transformer中的[CLS]计算相似度,为了防止数据泄露,采用unimodal self-attention,禁止 query 与文本 token 之间的直接交互;

🟢 ITG:将可学习的向量作为条件输入,以自回归的方式生成图像描述,采用了causal self-attention mask

🟢 ITM:二分类匹配任务,采用bi-directional self-attention mask

1.3 图像到文本的生成学习

第二阶段利用LLM的生成语言的能力来训练Q-Former。将图像通过图像冻结模型和Image Transformer得到与文本语义最相关、最具信息量的视觉特征。接着通过一个全连接层的线性变换,将大小转换为符合到LLM模型中的输入维度。

🟢 在这个阶段中,作者采用了一个先进的语言模型Vicuna作为线性变换向量的输入。

二、数据与实验

2.1 数据

作者提出了短标题文本对对于模型的训练来说是不够的,会出现不自然标题的现象。因此,作者重新收集了另外3500个图像详细描述的图文对对模型进行微调。

2.2 实验
  • GPT-4对比:有许多相似功能,例如可以生成复杂图像描述,根据手写文字生成网站,解释不正常的现象;
  • BLIP2对比:根据食物图片生成详细的食谱,根据图片写诗;这些都是BLIP2不具备的功能;

在这里插入图片描述

🧠 MINI-GPT4表现比BLIP2要强上许多?

在生成式(generative)任务方向上,MiniGPT-4 的表现明显优于 BLIP-2。但这种差距主要体现在语言生成质量和自然语言理解上,而非底层模态对齐或通用图文任务能力。

① MiniGPT-4 使用的是 Vicuna(基于 LLaMA 的开源 ChatGPT 对话模型),具有更强的自然语言表达和指令理解能力;而BLIP-2 使用的 LLM 主要是 Flan-T5 或 OPT,虽然也支持问答,但语言生成的细腻度和上下文保持能力较弱。

② MiniGPT-4 在 Q-Former 采用描述更加细致的3600 条人工构造的图文指令数据进行微调

http://www.lryc.cn/news/579274.html

相关文章:

  • MYSQL基础内容
  • dial tcp 10.1.68.88:3306: connect: cannot assign requested address
  • Python 数据分析:numpy,说人话,说说数组维度。听故事学知识点怎么这么容易?
  • 深度剖析NumPy核心函数reshape()
  • 使用Scapy构造OSPF交互报文欺骗网络设备与主机建立Full关系
  • Python 高光谱分析工具(PyHAT)
  • 【Linux】不小心又创建了一个root权限账户,怎么将它删除?!
  • 数据结构与算法:贪心(二)
  • Docker Compose 基础——AI教你学Docker
  • 鸿蒙UI框架深度解析:对比Android/iOS的布局适配与组件设计
  • 优雅草蜻蜓T语音会议系统私有化部署方案与RTC技术深度解析-优雅草卓伊凡|clam
  • 【字节跳动】数据挖掘面试题0002:从转发数据中求原视频用户以及转发的最长深度和二叉排序树指定值
  • gin框架 中间件 是在判断路由存在前执行还是存在后执行的研究
  • 人工智能-基础篇-14-知识库和知识图谱介绍(知识库是基石、知识图谱是增强语义理解的知识库、结构化数据和非结构化数据区分)
  • ubentu服务器版本安装Dify
  • docker拉取redis并使用
  • 代码训练LeetCode(44)螺旋矩阵
  • Notion 创始人 Ivan Zhao:传统软件开发是造桥,AI 开发更像酿酒,提供环境让 AI 自行发展
  • Highcharts 安装使用教程
  • 数据结构20250620_数据结构考试
  • mysql查看数据库
  • IPS防御原理和架构
  • MySQL 用户管理与权限控制
  • Python 的内置函数 print
  • vue动态绑定样式
  • 利用tcp转发搭建私有云笔记
  • (第三篇)HMTL+CSS+JS-新手小白循序渐进案例入门
  • Spring Cloud 微服务(链路追踪与日志聚合)
  • Springboot开发常见注解一览
  • Rust 安装使用教程