Group-wise Transformation 方法介绍


前言

Transformer 在2017年自然语言领域一举得名大获全胜,以至于Transformer在处理序列数据方面已经独居首位。目前流行的ChatGPT背后的模型主干就是Transformer模型,但由于其庞大的数据训练学习已经庞大的参数量,使得训练成本大大增加,单单训练一轮的资金就高达十亿美金。随着Transformer在自然语言处理方面的成功应用,这种方法也被应用到了计算机视觉领域成为 Vision Transformer。但其庞大的体量依旧是研究者诟病的地方,轻量化的Transformer的设计成为大家关注的热点。在2022年CVPR上发表的一篇题为《Towards Lightweight Transformer via Group-wise Transformation for Vision-and-Language Tasks》的文章提出了分组转换来减少Transformer的参数和计算量,同时保留了其两个主要特性,即在多头注意力机制(MHA)的多样子空间中进行高效的注意力建模,以及对前馈神经网络(FFN)进行扩展和缩放的特征转换。实验结果表明,虽然节省了大量参数和计算量,但LW-Transformer在视觉和语言任务上的性能与原始Transformer网络非常具有竞争力。为了检验其泛化能力,将优化策略应用于最近提出的图像分类Transformer模型Swin-Transformer,其有效性也得到了确认。


一、什么是Vision Transformer?

这篇文章介绍的是Group-wise Transformer在计算机视觉方面的任务,所以我们首先讲解vision transformer。但transformer的结构最先源于《Attention is all you need》这篇论文,而vision transformer是在《An image is worth 16x16 words: Transformers for image recognition at scale》中被提出来的,其结构相较于自然语言处理的transformer结构,去掉了下图中右边的Decoder步骤,只保留了Transformer的Encoder部分。
自然语言处理的Transformer结构
Vision Transformer

1. Embedding层

Transformer模型中的Embedding层用于将输入的离散化数据(如单词、字符、或其他符号)映射到高维度的连续向量空间中,这些向量通常称为嵌入(Embeddings)。这个过程能够将符号化的数据转换为模型能够处理的实数向量表示。

  • 对于输入图像 x ∈ R H × W × C \mathbf{x} \in \mathbb{R}^{H \times W \times C} xRH×W×C, 首先使用卷积网络将图像拆分成小的正方形 patch, 卷积核大小和步长大小一致。patch的大小为: x p ∈ R N × ( P 2 ⋅ C ) \mathbf{x}_p \in \mathbb{R}^{N \times\left(P^2 \cdot C\right)} xpRN×(P2C),其中 N N N是Patch的个数, ( H , W ) (H, W) (H,W) 是输入图像 x \mathbf{x} x 的高和宽, C C C 是卷积核通道数,很明显 N = H W / P 2 N=H W / P^2 N=HW/P2
  • 与自然语言处理中的Transformer类似,ViT也需要处理输入序列的位置信息。位置嵌入将序列中的每个位置(或图像块)赋予一个特定的向量表示,用以表示它们在序列中的顺序和位置关系。这些位置编码可以是固定的函数编码,也可以是可训练的参数。
  • 为了使ViT能够进行图像分类任务,通常会引入一个特殊的标记或token作为整个图像的表示。这个类别标记被加入到输入序列的开头,并且在模型中起到对整个图像进行分类的作用。
  • 然后将这些patch通过线性映射拉平成向量的形式。
    具体公式表示如下: z 0 = [ x class  ; x p 1 E ; x p 2 E ; ⋯   ; x p N E ] + E pos  , E ∈ R ( P 2 ⋅ C ) × D , E pos  ∈ R ( N + 1 ) × D \mathbf{z}_0=\left[\mathbf{x}_{\text {class }} ; \mathbf{x}_p^1 \mathbf{E} ; \mathbf{x}_p^2 \mathbf{E} ; \cdots ; \mathbf{x}_p^N \mathbf{E}\right]+\mathbf{E}_{\text {pos }}, \quad \mathbf{E} \in \mathbb{R}^{\left(P^2 \cdot C\right) \times D}, \mathbf{E}_{\text {pos }} \in \mathbb{R}^{(N+1) \times D} z0=[xclass ;xp1E;xp2E;;xpNE]+Epos ,ER(P2C)×D,Epos R(N+1)×D

2. Encoder层

Vision Transformer(ViT)的Encoder层通常包括以下组件:

  1. 多个Transformer Encoder Block:这是ViT中最重要的部分,它由多个Transformer Encoder Block组成。每个Encoder Block通常包括两个子层:多头自注意力(Multi-head Self-Attention)和前馈神经网络(Feedforward Neural Network)。这些块允许模型在输入的图像路径中建立全局和局部的关联,允许模型捕捉不同尺度的特征信息。
    MultiHead ⁡ ( Q , K , V ) = Concat ⁡ ( head ⁡ 1 , … , head ⁡ h ) W O  where head  = Attention ⁡ ( Q W i Q , K W i K , V W i V ) 2. \begin{aligned} \operatorname{MultiHead}(Q, K, V) & =\operatorname{Concat}\left(\operatorname{head}_1, \ldots, \operatorname{head}_{\mathrm{h}}\right) W^O \\ \text { where head } & =\operatorname{Attention}\left(Q W_i^Q, K W_i^K, V W_i^V\right) \end{aligned} 2. MultiHead(Q,K,V) where head =Concat(head1,,headh)WO=Attention(QWiQ,KWiK,VWiV)2. 位置编码(Positional Encoding):因为Transformer模型不具备处理序列顺序信息的能力,所以需要加入位置编码来帮助模型理解图像中不同位置的信息。位置编码被加到输入嵌入向量中,以提供序列中各个位置的相对位置信息。

  2. Layer Normalization(层归一化):每个Encoder Block中通常包括层归一化层,用于规范化每个子层的输出。

  3. MLP(多层感知器):Transformer Encoder Block中的Feedforward神经网络(FFN)通常是一个具有几个全连接层和激活函数的MLP,用于对自注意力层输出的信息进行处理和转换。
    MLP ⁡ ( x ) = max ⁡ ( 0 , x W 1 + b 1 ) W 2 + b 2 \operatorname{MLP}(x)=\max \left(0, x W_1+b_1\right) W_2+b_2 MLP(x)=max(0,xW1+b1)W2+b2

  4. Skip Connections 和残差连接:ViT中的Encoder层通常会包含跳跃连接或残差连接,以便在模型训练过程中更好地传递梯度和避免梯度消失问题。

这些组件一起构成了ViT的Encoder层,允许模型在处理图像输入时建模全局和局部信息,并捕获图像中的特征。

二、Group-Wise Transformer

给定一个输入特征 X ∈ R n × d \mathbf{X} \in \mathbb{R}^{n \times d} XRn×d, 首先将这个输入特征向量按照通道方向分成 k k k 组,切分函数记作 T ( ⋅ ) T(\cdot) T(),Group-wise Transformation 可以表示为: τ Group  ( X ) = [ X 1 ′ , … , X k ′ ]  where  X i ′ = τ ( X i ; θ ) \begin{aligned} \tau_{\text {Group }}(\mathbf{X}) & =\left[\mathbf{X}_1^{\prime}, \ldots, \mathbf{X}_k^{\prime}\right] \\ \text { where } \mathbf{X}_i^{\prime} & =\tau\left(\mathbf{X}_i ; \theta\right) \end{aligned} τGroup (X) where Xi=[X1,,Xk]=τ(Xi;θ),其中, X i ∈ R n × d k \mathbf{X}_i \in \mathbb{R}^{n \times \frac{d}{k}} XiRn×kd 表示第 i i i 组的截断特征。通过分割-转换-连接的设计,Groupwise Transformation 能够节省 k − 1 k \frac{k-1}{k} kk1 个参数和 k − 1 k \frac{k-1}{k} kk1 个计算量。为了进一步减少参数数量,我们还可以对每个组共享可学习的权重,始终导致 k 2 − 1 k 2 \frac{k^2-1}{k^2} k2k21个参数的减少。

  • Group-wise Multi-Head Attention(G-MHA)
    具体来说,我们将Transformer中原始的多头注意力(MHA)扩展为一种分组式版本(G-MHA),如图所示,MHA通过在将 X X X 投影之后截断 Q 、 K Q、K QK V V V 来获取多个注意力。在这种情况下,G-MHA可以被认为是其原理上的扩展,即在投影之前直接分割输入特征。具体而言,输入特征 X ∈ R n × d X∈R^{n×d} XRn×d首先被分成 k k k 个子集 X i ∈ R n × d / k X_i∈R^n×d/k XiRn×d/k,基于这些子集进行多头注意力操作。随后,这些注意力输出再次被连接起来。因此,G-MHA的定义如下:
    G-MHA ⁡ ( X ) = [ τ ( X 1 ) , … , τ ( X k ) ]  where  τ ( X i ) = MHA ⁡ ( X i ) \begin{aligned} \operatorname{G-MHA}(\mathbf{X}) & =\left[\tau\left(\mathbf{X}_1\right), \ldots, \tau\left(\mathbf{X}_k\right)\right] \\ \text { where } \tau\left(\mathbf{X}_i\right) & =\operatorname{MHA}\left(\mathbf{X}_i\right) \end{aligned} G-MHA(X) where τ(Xi)=[τ(X1),,τ(Xk)]=MHA(Xi)
    在这里插入图片描述

  • Group-wise Feed-Forward Network(G-FFN)
    具体而言,给定输入 X ∈ R n × d X ∈ R^{n×d} XRn×d,分组式前馈网络(G-FFN)执行非线性投影,以扩展特征大小。
    H = max ⁡ ( 0 , X W 1 + b 1 ) \mathbf{H}=\max \left(0, \mathbf{X} \mathbf{W}_1+b_1\right) H=max(0,XW1+b1)
    然后,获得的隐藏特征 H ∈ R n × d f \mathbf{H} \in \mathbb{R}^{n \times d_f} HRn×df 被分成 k k k 个独立特征 H i ∈ R n × d f k \mathbf{H}_i \in \mathbb{R}^{n \times \frac{d_f}{k}} HiRn×kdf,然后再使用可共享的权重进行线性转换。G-FFN 可以表示为:
    G ⁡ − F F N ( X ) = [ τ ( H 1 ) , … , τ ( H k ) ] ,  where  τ ( H i ) = H i W 2 + b 2 , \begin{aligned} \operatorname{G}-\mathrm{FFN}(\mathbf{X}) & =\left[\tau\left(\mathbf{H}_1\right), \ldots, \tau\left(\mathbf{H}_k\right)\right], \\ \text { where } \tau\left(\mathbf{H}_i\right) & =\mathbf{H}_i \mathbf{W}_2+b_2, \end{aligned} GFFN(X) where τ(Hi)=[τ(H1),,τ(Hk)],=HiW2+b2,
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Femme_DL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值