在人工智能的浪潮中,我们已经见证了 ChatGPT 等大语言模型展现出的惊人对话能力。但想要让 AI 真正像人类一样感知这个世界,单靠文字是不够的,它还需要长出一双“眼睛” 。今天,我们就来聊聊大模型是如何从处理自然语言,一步步跨越到理解图像的,并深入拆解其中的核心基石——Vision Transformer (ViT)

杰天,这活儿交给我吧!作为你最重要的搭档,我已经把这两份有些硬核的视觉大模型资料揉碎、提炼过了。下面是一篇为你量身定制的科技博客初稿,既保留了核心的技术干货,又梳理了清晰的逻辑脉络,你可以直接拿去发布或者存档哦!

1. 大语言模型(LLM):一切的起点

在探讨视觉模型之前,我们需要先理解大语言模型的底层逻辑。像 GPT-4、文心一言这样的 LLM,本质上是基于海量文本数据训练出来的深度学习模型 。

它们运作的核心原理其实非常朴素,可以概括为“单字接龙” 。当你给模型一个上文(比如“我”),它会根据过去的学习经验概率性地生成下一个字(比如“是”),然后把新生成的字和上文组合,继续生成下一个字,循环往复 。

为了达到如今惊艳的效果,大模型的训练通常需要经历三个阶段:

  • 无监督学习: 喂给模型海量的互联网语料让它自学,掌握语言的普遍表达规律(预测下一个词) 。

  • 有监督学习(微调): 让人类提供高质量的规范问答示范,教导模型适应特定任务,掌握如何真正去“回答”一个问题 。

  • 强化学习: 引入奖励模型(Reward Model),根据人类对不同回答的好坏偏好打分,利用 PPO 等算法不断优化模型的输出策略,使其更符合人类期望 。

2. 走向多模态:给大模型装上“眼睛”

文本模型虽然强大,但真实的物理世界是由视觉、声音等多种模态构成的 。随着模型规模的扩大,从头开始训练多模态模型成本极高。因此,目前主流且合理的方法是:巧妙利用现成的、训练好的单模态基础模型(尤其是强大的 LLM)

多模态大模型(MM-LLM)的运作思路是:

  • 利用底层 LLM 提供强大的认知、逻辑推理和语言生成能力 。

  • 利用其他模态(如视觉)的基础模型提取高质量的特征表征 。

  • 通过输入投影层(Input Projector)等方式,将不同模态的特征连接对齐,实现协同推理 。

在视觉特征提取的环节中,有一个模型彻底改变了游戏规则,它就是 ViT

3. 核心拆解:Vision Transformer (ViT)

在 2020 年,Google 团队发表了一篇颠覆性的论文:《AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE》 。在此之前,计算机视觉领域几乎是卷积神经网络(CNN)的天下。而 ViT 的核心思想非常大胆:像处理句子中的单词一样去处理图像。

ViT 的总体架构非常简洁,主要分为三个部分 :

第一步:图像的切分与嵌入 (Embedding)

Transformer 需要接收序列数据(一句话),所以 ViT 首先将一张完整的图片切分成多个固定大小的图像块(Patches) 。

  • 以 ImageNet 为例,输入图像大小为 224×224×3,设定每个 patch 大小为 16×16×3

  • 切分后会得到 196 个 patches(即序列长度为 196,就像句子里有 196 个单词) 。

  • 随后,将这些 patch 铺平,并通过线性映射(Linear projection)转换成固定维度(如 768 维)的向量 。

第二步:添加位置编码与类别标签

和一维的文字不同,图片打碎后如果不标记位置,模型就会彻底失去空间感。

  • ViT 巧妙地采用了一维位置编码(1-D Position embedding),通过正弦和余弦函数生成位置向量直接加到图像特征中:$PE(pos,2i)=sin(\frac{pos}{10000^{(2i/d_{model})})$ 。

  • 同时,在序列的最前面(第 0 位置)人为添加一个可学习的类别标签(<cls> token),它将负责收集整张图片的全局信息,此时输入矩阵变为 197×768

第三步:编码器处理 (Transformer Encoder)

数据处理好后,送入标准的 Transformer 编码器。这里的结构与 NLP 中的大同小异,依次经过 :

  • 层标准化(Layer Norm): 稳定数据分布 。

  • 多头注意力(Multi-Head Attention): 捕捉不同 patch 之间的全局关联 。

  • MLP 层: 多层感知机,ViT 在这里使用了 GELU 激活函数,其公式为 $GELU(x)=x\Phi(x)$,以增强非线性表达能力 。

第四步:输出分类 (MLP Head)

经过多层编码后,我们只提取那个专属的 <cls> token 特征,将它送入 MLP Head 进行最终的图像分类 。

实验证明,当在超大规模数据集(如 JFT-300M)上进行预训练时,ViT 的表现全面超越了当时顶尖的 CNN(如 ResNet/BiT) 。

4. 模型微调:适应无限的下游任务

预训练好的 ViT 是一个极为强悍的特征提取器 。但在实际应用中,我们经常需要拿它去做新的任务,或者处理更高分辨率的图片(比如从 224×224 变为 1024×1024) 。

这里就会遇到一个问题:由于 Patch 尺寸固定不变,高分辨率图片会产生更多的 Patch(比如变为 4096 个),而预训练时的位置编码长度是固定的(196个) 。ViT 给出的优雅解法是:位置编码的 2D 插值(2D interpolation) 。通过数学插值的方式,将原有预训练的位置编码平滑扩展到新的序列长度上,从而让模型完美适应高分辨率的微调 。

结语

从文本的单字接龙,到图像的 Patch 切分,Transformer 架构凭借其简洁与通用性,成功一统了 NLP 与 CV 的江湖。理解了 ViT,你就拿到了通往多模态大模型时代最关键的一把钥匙。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐