首页 > 其他分享 >LLM大模型: blip2多模态大模型原理

LLM大模型: blip2多模态大模型原理

时间:2024-10-21 17:12:35浏览次数:1  
标签:embedding blip2 text 模型 encoder LLM decoder 数据 image

    截止目前,图片检索领域最出名的应该是openAI的clip了,分别用bert和vit对text和image做encoder,然后让配对的embedding接近,不配对的embedding拉远,通过这种方法达到text匹配(检索)image的目的!但这种方式只能检索,没法生成text啊(比如对image做适当的description),咋整了?总结一下,单存的clip有如下问题:

  • Model perspective
    • Encoder-based model generation tasks:clip只能retreval,不能generate
    • Encoder-decoder-based model retrieval tasks : 两个都有只能generate,不能retreval
  • Data perspective:
    • The web text-image data contains noise:当年openai训练clip的时候,号称使用了400 million的text-image数据,但这些都来自web,肯定有很多noise,不干净!

     为了解决上述问题,blip诞生了!论文: https://arxiv.org/abs/2201.12086

  1、clip是典型的“双塔”模型:text和image分别用encoder转成embedding,然后计算vector的距离!因为缺乏decoder,所以没法生成text,所以这里就像搭积木一样加上decoder不就行了?看到这里,我想大部分人和我都是这样想的,但是人家salesforce团队

肯定是有高人的,见识和认知都比我这种普通人高多了,他们的网络架构图如下:

  

   (1)image encoder:提取imag的图片信息,可以用vit(其他的image encoder也行),把(batch_size, channel, width,height) 通过conv2d转成(batch_size, w' * h', channel);w' * h' 就是卷据后的宽、高,类比于nlp任务的seq_len;channel类似于nlp任务中token的dimension,这两个都是超参数,可以根据后续的nlp任务设置成合适的大小!

  (2)顺数第二个的text encoder:这是个典型的bert结构,用的是self-attention,并且在text的开头加上了cls标识token。这里最核心的就是Bi self-att了,同时使用token的context得到当前token的embedding!经过了feed forward后,得到了text的embedding,就和image embedding做 ITC Image-Text Contrastive learning了:本质就是二分类。image 和text 经过各自的encoder之后,不进行交互(没有cross attention),独立生成image和text的嵌入(embedding)。接着,模型通过对比学习(contrastive learning)来优化嵌入,使匹配的image和text对的距离更接近,不匹配的对则远离。这种方法有助于模型在全局层面上理解image和text之间的语义关系。这里和Clip没有本质区别!

  在训练时,ITC分错误的样本说明是比较难的,这部分样本可以继续用于训练ITM,让ITM的能力更强

  (3)顺数第三个的image-grounded text encoder:和第二个比,明显多了和image的cross attention,其他和第二个完全一样,为啥还要这么做了?这一步的encoder和上一步的encoder比,最大的差异就是cross attention了,这里是直接把image的embedding融合到text的embedding,所以这里得到的text embedding的信息明显比第一个跟丰富!最重要的是:attention机制找到text和image局部的对应关系(ITC是全局语义关系),这个关系在最后一个LM里面是复用的!最后通过binary cross entropy来计算损失函数!

  (4)最后一个LM,和第三个ITM比,唯一的区别就是把Bi self-att换成了causal self-att,为啥这么变?因为最后一个LM是decoder,目的要输出text token,所以训练的loss自然就是gpt采用的auto regression啦!训练时token只能看到上文,看不到下文,所以下文的token全部都要mask掉!为了提升预训练效率,text encoder和text decoder share除了attention之外的参数,论文原话:In order to perform efficient pre-training while leveraging multi-task learning, the text encoder and text decoder share all parameters except for the SA layers. The reason is that the differences between the encoding and decoding tasks are best captured by the SA layers【颜色相同的模块参数是共享的】;

  2、representation和generative的问题解决了,data的问题怎么办了?clip训练采用了很多web数据,这些数据肯定有很多noise,怎么提升数据质量?最简单粗暴的办法是找人标注,但成本高啊!怎么低成本地获取大量高质量数据了?多年前做传统数据挖掘时,有这样一种方式获取较多的高质量数据:

  • 先人工标注少量数据,能训练模型就行(训练样本一般是参数的5~10倍;比如有100个参数,人工标注500条高质量数据即可),利用这些高质量数据训练模型
  • 用模型做推理预测。对于得分非常高和非常低的样本,其置信度较高,这类样本判断错误的概率较低,所以这类样本直接作为正样本或负样本,继续用于迭代训练模型

  Blip是怎么做的了?如下图:

  • 红色的数据可能有noise,属于弱监督;绿色的数据基本没noise,数据质量高!
  • w是web爬取的,数据有noise;h是human标注的,属于高质量数据

  

  • 先用所有的样本训练MultiModal,包括ITC、ITM和LM;因为所有样本有来自web的noise,所以此时模型的质量并不高
  • 再用{Ih,Th} 这种高质量数据fine - tune ITC和ITM,把这两个classifier的质量提起来!
    • 经过高质量数据fine - tune后,ITC和ITM的分类准确率会大幅提升,此时再用这两个model对低质量的{Iw,Tw}数据做filter,只保留匹配正确的数据,去掉匹配错误的noise,这一步就叫filter!
  • 同理,使用高质量的{Ih,Th} fine-tune decoder模型,提升decoder的质量;
    • 此时用这个decoder对Iw(也就是web爬取的有noise的Image),让decoder生成text(这个叫captioning),取名Ts;这个Ts对不对了?此时不用人工判断,直接用上一步的ITC和ITM去判断。如果是对的,那么这个{Iw,Ts}对就可以放入数据集啦!这个过程叫bootstrapping;

  总结一下:最终的数据集Data set的数据来自三部分:人工标注的Th、ITC和ITM filter的Tw,以及decoder生成并通过filter的Ts!这三部分数据质量相对较高,完成了整个data set的数据清洗!

  3、Blip完成了representation和generative的任务,但缺陷还是有的:

  • 要训练4个model,计算量特别大!
  • 根据scaling law,image-text配对的数据需要较多

  blip的这两个

 

 

 

参考:

1、https://arxiv.org/abs/2301.12597   BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models

2、https://github.com/salesforce/LAVIS/tree/main/projects/blip2   

3、https://www.bilibili.com/video/BV1ff421q7sC?spm_id_from=333.788.videopod.episodes&vd_source=241a5bcb1c13e6828e519dd1f78f35b2&p=3  

4、https://mp.weixin.qq.com/s/csqFAkjziwx34aAxKj9-gQ  视频、图像、文本,只需基于下一个Token预测:智源Emu3发布,验证多模态模型新范式

标签:embedding,blip2,text,模型,encoder,LLM,decoder,数据,image
From: https://www.cnblogs.com/theseventhson/p/18488142

相关文章

  • Meta 最新 SPIRIT-LM:语音文本无缝转换还能懂情绪;字节回应实习生破坏大模型训练:网传损
        开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表......
  • 【验证码识别专栏】大炮打麻雀 — CLIP 图文多模态模型,人均通杀 AIGC 六、九宫格验证
    前言近期有粉丝私信,不知道如何训练某讯系点选验证码,之前星球群也有不少粉丝讨论相关问题,为满足粉丝们的需求,本文将对这型验证码的训练进行讲解,文末可以下载相关的工具,包括文章配套标注工具+文章配套训练代码+部分学习数据集(少量类目,仅供学习使用,不设计成品)+六宫格推理比......
  • 无监督的神经网络模型——自动编码器(Autoencoder)解读
    采用自动编码器进行高效特征提取详解自动编码器(Autoencoder)是一种无监督的神经网络模型,广泛应用于数据降维、特征提取、数据压缩和去噪等领域。通过学习数据的有效编码,自动编码器能够将高维数据映射到低维隐含空间,同时保留尽可能多的原始信息。本文将深入探讨如何采用自动......
  • 揭秘PostgreSQL的隐藏奥秘:物理、内存与进程模型的深度解析与高效优化策略
    引言PostgreSQL作为一款强大的开源关系型数据库管理系统,以其灵活性、高性能和丰富的功能特性在全球范围内受到广泛欢迎。其底层架构的精心设计,使其在处理复杂查询、支持多种数据类型和高并发用户访问时表现出色。理解PostgreSQL的底层架构不仅有助于提升系统性能,还能帮助开......
  • 使用 Optimum-Intel 和 OpenVINO GenAI 优化和部署模型
    在端侧部署Transformer模型需要仔细考虑性能和兼容性。Python虽然功能强大,但对于部署来说有时并不算理想,特别是在由C++主导的环境中。这篇博客将指导您如何使用Optimum-Intel和OpenVINO™GenAI来优化和部署HuggingFaceTransformers模型,确保在最小依赖性的情况下进行......
  • 华为鸿蒙Stage模型:让应用更轻量、高效、安全
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。一、Stage模型:一个轻盈的舞台想象一下,......
  • 华为鸿蒙 AbilityStage 组件容器:Stage模型的舞台中心
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。华为鸿蒙系统的阶段模型为开发者提供了......
  • 3D模型师
    一、3D模型师的工作内容3D模型师主要负责使用专业的3D建模软件,根据设计需求创建三维模型。这些模型可能用于游戏开发、影视制作、建筑设计、工业设计、VR/AR技术等多个领域。具体工作内容包括:产品三维建模及渲染:根据设计需求,创建高质量的三维模型,并进行渲染处理,使其达到逼真......
  • 大模型如何提升电商平台的用户粘性与活跃度
    引言在互联网飞速发展的今天,电子商务平台已经成为人们日常生活的重要组成部分。然而,如何在激烈的竞争中脱颖而出,提升平台的用户粘性与活跃度,成为各大电商平台亟待解决的关键问题。用户粘性与活跃度是电商平台生存发展的基石,直接关系到平台的盈利能力和市场竞争力。用户粘性......
  • 大模型驱动的电商个性化搜索结果重排序
    《大模型驱动的电商个性化搜索结果重排序》摘要随着电商行业的快速发展,个性化搜索成为了提升用户体验和提升转化率的关键因素。本文将探讨大模型驱动的电商个性化搜索结果重排序技术,分析大模型在电商搜索中的价值和应用原理。文章将详细介绍大模型的基础知识、电商搜索的......