【大模型】萌新也能一文弄懂!! -- 连接图像文本的大模型CLIP的前世今生【二】

上文: 【大模型】萌新也能一文弄懂!! -- 连接图像文本的大模型CLIP的前世今生【一】

当我继续写这篇文章的时候,已经是2024年12点钟声敲响的时候了,此时此刻门外响起了 此起彼伏的 鞭炮和烟花的声音。 原来时间过得那么快,丹还没炼好, 我们就又进入到了新的一年。

在此 Herman伍 预祝大家 2024年新年快乐~  年年有今日,岁岁有今朝。不管是 学习奋斗的你 还是 工作奔波的我,抑或是 快乐生活的大家,都能在新的一年里有 一段不一样的精彩人生~ 🆒

下面是 CLIP [Contrastive Language-Image Pretraining]- 多模态大模型介绍分享的 第二篇博文。

         【1】CLIP (本文)  大模型的综述 &  产生的时代背景。

          【2】CLIP 模型的结构,以及 相关的前置知识 (Transformer & Attention & ViT等)

          【3】CLIP 的展望,以及相关的一些衍生和学术工作等。

 上篇博文,我们大概讲述了 CLIP 这篇文章 当时的学术背景,大模型,大语料 已经在NLP 中证明了他的价值,OpenAI于是在多模态上想继续有所突破。 

这篇文章将着重阐述 CLIP的结构的相关背景知识。了解 模型结构各前置知识的前置今生,我们才能对他更有所了解。

1. 综述

CLIP 是一个 对比式学习双塔模型。OpenAI 巧妙地借鉴了检索领域的经典模型和学习方法。基于 图片塔[Image Encoder] & 文本塔[Text Encoder] 将 原始文本 & 原始图像抽象成高维向量,两两做余弦相似度计算来进行推理 & 梯度递归迭代。

2. 首先, CLIP是双塔模型

对比式双塔模型是非常经典的模型结构, 检索&推荐 中得到了非常广泛的使用,在我们使用的 百度搜索 & 阿里电商搜索 都有非常多的应用。

微软亚研院在 2013年,总结了前人在 文档搜索场景 的经验, 以及当时SOTA的深度模型的经验,开创性地提出来了 DSSM[Deep Structured Semantic Model]在检索领域中将双塔深度模型提出,获得了非常棒的效果。

[2013年由于 CNN 在 ImageNet上大行其道,深度全连接神经网络在学术界开始成为明星宝宝]

DSSM模型 结构,红色部分为 Query[用户输入] 文本塔,蓝色部分为 Item[检索库内容] 文本塔,每个塔都由若干层 全连接层组成。 用户输入 & Item原始内容 分别经过 双塔 抽象成 高维向量,然后在绿框中 分别计算 余弦相似度便可知道 Query-Item 的相似情况,按照列表返回给用户。

[1]  双塔模型 由于 利用深度模型的原理,将原始输入数据高度抽象融合为相似度向量, 避免了前人需要的繁杂NLP预处理步骤,让模型自行 递归学出。

[2] 双塔模型 由于 双塔参数权重独立,只在最后相似度计算时候有相关融合,相互独立学习,能更好的让模型学习出 Query 和 Item 不同的向量分布空间,帮助推理和拟合。

众所周知 检索任务中用户的输入 和 检索库内容 往往是 不尽相同的。

比如淘宝购物中。我们想买滑雪装备的时候, 会输入 “单板” , 商品库中内容是 “迪卡侬 SNB 500 DreamScape ovem 男士深灰色 163cm”。 两个文本的文本token & 长度等都很不一样,因此文本原始映射空间一定不一样, 但是可能这个雪板就是我们想买的,  因此两者应该相等... =. = 

这个时候直接将两段文本丢于同一个模型效果会非常差,这时候让 用户输入 和 商品库 分别由一个模型塔去学习, 从各自的 原始文本映射空间 拟合到相似的高维向量空间在做交叉, 效果才能变好]

[3] 双塔模型 由于 余弦相似度的计算,对于一个 Query,每一个候选 Item 都能经过模型计算出一个 相似度得分,这时候按照相似度得分排序,便能获得一个相似度 List,与我们检索任务核心诉求 [将用户最感兴趣的内容从大到小排序] 天然拟合,因此检索任务天然适合双塔相似度计算。

因此咱在回到 CLIP模型中去,CLIP 整体模型非常清晰,与我们提到的检索模型 DSSM 类似,与 检索 DSSM模型中 双塔的 Query-Doc 不同的仅是,双塔变成了 Query-Image。原始数据进入 对应的 Encoder 后 输出为特征向量来计算相似度。

CLIP的网络结构,CLIP结构非常简洁易懂,是检索任务中经典的双塔模型

现在我们知道了他是双塔模型,那我们开始来讲讲 CLIP的两个塔, 文本塔 [Text Encoder]和 图片塔 [Image Encoder]都由啥组成的。

3. 文本塔模型

文本塔中利用的是 BERT 模型的变体 RoBERTa , 是一种基于 Transformer 结构的深度学习模型。那什么是 RoBERTa 呢?什么是 BERT 呢? 什么又是 Transformer 呢? 可能不懂的大家都有这样的疑问。 为了方便大家理解,咱们来层层递进简要文本塔模型是由什么组成的.

3.1 不懂就问,Transformer 是什么? 

Transformer 是一种基于注意力机制(attention mechanism)的深度学习模型,广泛应用于自然语言处理任务,特别是在序列到序列的任务(如机器翻译)中取得了显著的成果。第一次由 Jürgen Schmidhuber 提出, 但当时由于其效率较低,它并未得到广泛的应用。[参考:一文读懂 Transformer 神经网络模型]  。但在 2017年,谷歌的开创性的论文 [Attention Is All You Need]  将 Transformer 作为 基石能力 提供给了 NLP的各个任务中。

Transformer 由 Encoder & Decoder 两个部分组成,按照任务,可以有不同的组成方式:

  • 纯 Encoder 模型:适用于只需要理解输入语义的任务,例如句子分类、命名实体识别;

  • 纯 Decoder 模型:适用于生成式任务,例如文本生成;

  • Encoder-Decoder 模型Seq2Seq 模型:适用于需要基于输入的生成式任务,例如翻译、摘要。

 Transformer 由于 本身的注意力机制,相对已经能关注较长距离的 LSTM, 该机制能根据任务需要,关联到 全局的序列信息。 
Transofmrer 由于 Decoder & Encoder 内部 Block 设计,摒弃掉了经典NLP任务的RNN 需要状态传递的网络迭代设计, 让网络的 并行计算能力大大提高, 提高整体效率。
[Attention is All You Need 本身是个比较骄傲的文章,甚至Block设计用 Linear 来命名,虽然其实本身为DNN层,但为了凸显 文章本身仅需要Attention的思想, 所有传统的网络层都被摒弃] 

[1]  Encoder : 理解原始输入(文本), 输出语义特征
  [2]  Decoder : 负责根据语义特征, 生成相关输出
 [1] Encoder 和 Decoder Block内部结构。
由 多头注意力机制 & 残差连接部分组成

 3.2 不懂就问,BERT 是什么? 

BERT(Bidirectional Encoder Representations from Transformers)是一种基于 Transformer 架构的深度学习模型,专门用于自然语言处理任务。它由Google在2018年提出,并在提出后的短时间内取得了显著的突破,作为类似于 Transformer 的开创性任务 一直沿用至今。

[BERT 的模型由 三个维度数据组成:
[1] 句子字本身[Token]  [2]属于第几个句子[Seg] [3]句子所处位置[Pos],
让 BERT 可以在通篇考虑句子的时候,充分考虑句子间的信息。 ([CLS]表示分类 [SEP]表示分隔)] 

整个 BERT 模型 是由 Transformer 堆叠而成,在整体设计上没有太多的创新之处,除了输入数据的格式以外,
[BERT-Base 使用 12个 Trasnformer Block,  Hidden_size = 768, 由 12个 多头组成  (参数量1.1亿) 
 BERT-Large 由 24个 Transformer Block, Hidden_size = 1024, 由 16个 多头组成 (参数量 3亿+)] 

 
BERT 的大贡献主要还是体现在两个预训练任务上:
[1] Masked Learning 【ML】
在一个句子中,随机的将 15% 的词语 隐去,然后让模型去预测这个 隐去 的词语是什么
   [1] 80% 筛选的词语 被 标记为 [MASK]
   [2] 10% 筛选的词语 被 标记为 random token
   [3] 10% 筛选的词语 被 不做修改,保持不动
[80% 10% 10% 的原因为 在Fine-tune 时候,[MASK] 这种数据 不会出现,避免产生 distribution GAP]


[2] Next Sentence Prediction [NSP]
在两个句子中,预测两个句子的上下级关系 [NLI],  让 BERT 拟合 语料上下游 语言逻辑关系 & 语料构成 
    [1] 50% 筛选的句子为 随机选择
    [2] 50% 筛选的句子为 下游数据

[经典 BERT 预训练语料案例, 任何语料 都可以利用 LM 和 NSP 方法 大规模 生成预训练数据]

 ML & NSP 这两个预训练任务, 成功将 NLP 领域带入 自监督领域, 将 人类学科领域知识 & 互联网上 TB 级别的 未标记数据都可 用于模型训练, 极大降低了 数据标注成本,让NLP的能力得到大量涌现

 3.2 所以最后,RoBERTa 是什么? 

由3.1 和 3.2 的 前置知识,我们便知道了 CLIP的文本塔模型 其实是由 Google 的两个经典开创性任务:  Transformer 和 BERT  衍生出来的,那最后文本塔的 RoBERTa 模型, 其实也就是由他们做了微小改变而成的。

RoBerta (A Robustly Optimized BERT Pretraining Approach)又是 BERT 的一个变体。在模型整体架构没有改变的时候,做了一些相关的微调
   [1] 参数量扩大, BERT 使用解决 3.3亿 token, RoBerta 利用16亿 token.
   [2] 超参数 做了更好的优化. 更大的批量大小.
   [3] 在 Masker Learning 中, RoBerta 动态调整 Masked 策略, 让训练数据不会出现同 token 被重复掩盖的情况.

RoBERTa 也可以说是 BERT 的优化升级,在没有修改模型结构的情况下,在参数和超参以及训练手法等的改变,获得了比以前 BERT 更 SOTA 的效果。在CLIP中,OpenAI选用的是比较经典的 RoBERTa 模型,参数量大概在 1.3亿左右。 [其实文章中还用了传统的NLP模型 RBT3, 不过因为是CLIP的最Base 的模型,就不在考虑范围内了]

4. 图片塔模型

现在我们知道了 CLIP 的文本塔模型的基本结构类型, 这边我们再介绍一下 CLIP 的图片塔模型

图片侧中利用的是有两种模型,第一种为常见的 ResNet 模型, 第二种是致敬 NLP Transformer 架构,将该领域迁移的 ViT 【Vision Transformer】模型。

因为 ResNet 模型大家 肯定都耳熟能详了,咱就跳过, 那 VIT 是什么模型呢? 为什么会说 VIT 是一个致敬 NLP 的图像模型。

4.1 VIT, 致敬 NLP 的图像注意力模型

Vision Transformer 是一个充满致敬的工作,由谷歌研究院于2020年发表于论文 【An image is worth 16X16 words: transformer for image recoginition at scale】,后文简称为 VIT。 整一个 VIT 的设计结构,基本上是 Transformer 概念中它编码器 [Encoder] 的模型套用。

如上图 ViT 的结构图所示, 那大家肯定会有问题,如果说和 Transformer 的编码器类似,那么:

类比于NLPTransformer,它的输入数据是什么呢?

以 ViT-16 为例, 会有如下的处理步骤:

[1] 将输入图片处理为 224*224*3 大小的图片, 然后将图片沿着左上角->右下角的顺序,依次裁剪为 16*16*3 大小的图片块(patch)。

[2] 标记好其对应的图片标号【图片标号对应上NLP 任务中的 Position Embedding】;  随后对应的这些 Patch 数据 接入到 映射层 [Linear Projectiion Layer] 映射到 768 [16*16*3; ViT 甚至连向量大小都不去改变,直接原始维度映射, 可谓是相当好的致敬 ], 这个映射后的 768*1 的数据就为一个位置数据 【这个位置数据对应上NLP任务中的 token】

当做完 [1] ~ [2] 步后, 一个原始的图像,就会被转化为一个类似NLP的带有位置信息的 序列数据, 供 Transformer 理解推理。输入数据确定后,咱们就会还有一个问题:

它的输入数据确定后,后面的处理会是什么样呢?

答案可能超出大家的预期, 后续的处理与 NLP Transformer-Encoder 的任务 完全一样。 且带来的效果也和 NLP 领域的 Transformer 一样,使得在图像任务中也具备 全局视野 的能力。论文作者也在多维度论述,Transformer模块复用在图像领域是有效的,并以图像的维度去论证:

[1] 以单一维度作为标注的 Position Embedding 也能实现出来二维的相关性问题, 令 一维 Position 标注效果成为可能。

[2] 首个 Linear Projection 的内容抽取出来,可以看到纹路信息,以反映出来 Linear Projection 有部分 CNN 纹路抓取的能力

[1] 投射层的前28个数据可视化,
有 CNN 卷积核中 纹路提取的作用
[2] Position Embedding 相似度标注,
发现对于四周的Patch更关注
[3] Attention 可视化,更关注主体

最后 ViT 所验证出来的效果,的确有比较令人欣喜的效果,但是有有别于 CNN 的重大特征:[1] 特征不变性 [2] 局部相关性中。 ViT 在 特征不变性上会稍显缺失, 因此 ViT 模型初始化中的 

[以 ViT-16 为例,它每个 token[patch] 都是 16*16 个像素的内容。 如果一个 图片的缩放 & 整体到局部的改变,都会让结果有所变化]

Resize操作 会显得尤为重要, 以此来拟合出 CNN 的特征不变性所带来的效果。

综上所述, 现在整体对于文本塔和图片塔的模型大家都有所了解, 两个塔模型 相互独立,各自学习并梯度迭代,甚至在落地的时候可以 异步推理。[先把数据库中的图片在图片塔中推理一遍, 构建 图片向量检索库。而后用户的输入再经过 文本塔 推理出向量再在图片向量检索库进行向量匹配召回]。 共同构建了 CLIP 最基本模型骨架。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值