一、Transformer 与 Vision Transformer(ViT)
主要梳理了 Transformer 及现代大模型的基础组件,进一步理解了大模型内部的信息处理过程。
1.1 Transformer 基础架构
Transformer 是一种基于 Attention(注意力机制)的深度学习架构,最早应用于自然语言处理,目前已经广泛应用于 LLM、VLM 和计算机视觉等领域。
经典 Transformer 由 Encoder 和 Decoder 组成。
Encoder 主要负责特征提取和上下文建模,Decoder 主要负责根据已有信息生成目标序列。
主要学习的模块包括:
Embedding(嵌入层):将输入 Token 映射为向量表示。
Positional Encoding(位置编码):为模型提供位置信息。
Multi-Head Attention(多头注意力):使用多个注意力头学习不同的特征关系。
Feed Forward Network(FFN):对每个 Token 进行非线性特征变换。
Residual Connection(残差连接):改善深层网络的梯度传播和训练稳定性。
Layer Normalization(层归一化):对特征进行归一化,提高训练稳定性。
其中,Attention 是 Transformer 最核心的组成部分。
1.2 Self-Attention(SA,自注意力)
Self-Attention 的核心思想是:
序列中的每个 Token,都可以根据其他 Token 的信息更新自身的特征表示。
通过三个线性映射矩阵,将输入映射为:
Q(Query):查询向量。
K(Key):键向量。
V(Value):值向量。
Scaled Dot-Product Attention(缩放点积注意力)的计算公式为:
Attention(Q, K, V) = softmax(QK^T / sqrt(d_k)) V
其中,d_k 表示 Key 向量的维度。
计算过程:
计算相关性:通过 Q 与 K 的点积计算注意力分数。
缩放:除以 sqrt(d_k),避免点积数值过大。
归一化:使用 Softmax 获得注意力权重。
加权求和:根据注意力权重对 V 进行加权求和。
Self-Attention 的特点是 Q、K、V 来自同一输入序列,但经过不同的线性变换。
总结:SA 让模型能够在同一序列内部建立全局信息关联,而不是像传统卷积(Conv)一样,主要通过局部感受野逐步提取特征。
1.3 Cross-Attention(CA,交叉注意力)
Cross-Attention 与 Self-Attention 的计算形式基本相同,关键区别在于 Q、K、V 的来源。
Self-Attention:Q、K、V 来自同一个序列。
Cross-Attention:Q 来自查询序列,K 和 V 来自另一个序列。
例如,在经典 Transformer Encoder-Decoder 架构中:
Q:来自 Decoder 的隐藏状态。
K、V:来自 Encoder 的输出。
Decoder 通过 Cross-Attention 读取 Encoder 提供的信息。
在多模态模型中,Cross-Attention 还可以用于图像特征与文本特征之间的信息交互。
总结:SA 主要解决同一序列内部的信息交互,CA 主要解决两个不同序列之间的信息交互。
二者并不是完全不同的注意力算法,而是注意力机制在不同信息来源下的应用。
1.4 Vision Transformer(ViT)
ViT 将 Transformer Encoder 引入计算机视觉,使图像能够像文本序列一样输入 Transformer 进行建模。
ViT 的主要流程:
Image → Patch Partition → Patch Embedding → Position Embedding → Transformer Encoder → Classification Head
具体过程:
Patch Partition(图像分块):将图像划分为固定大小的 Patch。
Patch Embedding(图像块嵌入):将每个 Patch 展平,通过线性投影转化为 Token。
Position Embedding(位置嵌入):为 Patch Token 添加位置信息。
Transformer Encoder(特征编码):利用 Multi-Head Self-Attention 建模不同 Patch 之间的关系。
Classification Head(分类头):根据编码后的特征完成图像分类等任务。
例如,一张 224×224 的图像,采用 16×16 的 Patch:
Patch 数量 = (224 / 16)^2 = 196
因此,图像可以转换为 196 个 Patch Token。
在原始 ViT 分类架构中,还会额外加入一个 CLS Token,因此输入 Transformer Encoder 的 Token 总数为 197。
与传统 CNN 主要通过局部卷积提取特征不同,ViT 可以通过 Self-Attention 直接建模不同图像区域之间的全局关系。
1.5 Transformer 与 ViT 的联系
通过学习,我进一步理解了 Transformer 和 ViT 的关系:
Transformer:一种通用的序列建模架构。
ViT:使用 Transformer Encoder 处理图像。
Self-Attention:二者共有的核心计算模块。
Cross-Attention:可以进一步实现不同序列、不同模态之间的信息融合。
对于后续学习多模态大模型而言,ViT 是重要的视觉编码器基础,而 Cross-Attention 是理解多模态信息交互的重要技术。
二、计算机视觉一些案例
2.1 DETR 目标检测
DETR(Detection Transformer)是一种将 Transformer 应用于目标检测的模型。
今天主要学习了 DETR 中 Transformer Encoder 和 Decoder 的作用。
Encoder:
接收 CNN Backbone 提取的图像特征。
通过 Self-Attention 建模不同图像区域之间的全局关系。
输出包含上下文信息的视觉特征。
Decoder:
引入 Object Queries(目标查询向量)。
通过 Self-Attention 建模不同 Object Queries 之间的关系。
通过 Cross-Attention 从 Encoder 输出的图像特征中提取目标信息。
输出用于后续目标分类与边界框回归的特征。
DETR 的主要处理流程:
Image → CNN Backbone → Transformer Encoder → Transformer Decoder → Prediction Heads
最终通过两个预测分支输出检测结果:
Classification Head:预测目标类别。
Bounding Box Regression Head:预测目标边界框坐标。
同时理解了 FFN 在特征变换中的作用,以及 Object Queries 如何通过注意力机制获取目标相关信息。
2.2 CAM 与 Grad-CAM
今天还学习了两种常见的模型可解释性方法:CAM 和 Grad-CAM。
1. CAM(Class Activation Mapping)
CAM 通过结合卷积特征图和分类层权重,生成类别激活图,用于展示图像中哪些区域对某一类别的预测贡献较大。
2. Grad-CAM(Gradient-weighted Class Activation Mapping)
Grad-CAM 利用目标类别输出对卷积特征图的梯度,计算各通道的重要性权重,进而生成可视化热力图。
两者的核心区别:
CAM:依赖特定的网络结构,通常需要全局平均池化与对应的线性分类层。
Grad-CAM:利用梯度计算特征重要性,可以应用于更多网络架构。
总结:CAM 和 Grad-CAM 都是在尝试解释模型为什么会做出某个预测,帮助分析模型关注的图像区域。
2.3 视频理解(Video Understanding)
初步了解了视频理解的主要研究任务,包括:
Video Classification(视频分类):判断视频整体所属类别。
Action Recognition(动作识别):识别视频中的人物或物体动作。
Temporal Action Localization(时序动作定位):判断特定动作在视频中发生的时间区间。
Video Question Answering(视频问答):根据视频内容回答自然语言问题。
Video-Language Understanding(视频语言理解):建立视频内容与语言语义之间的联系。
相较于静态图像,视频模型不仅需要理解空间特征,还需要建模时间维度上的动态变化。
总结:图像理解主要关注单帧的空间信息,而视频理解需要进一步理解跨帧之间的时序关系和动态变化。