Motivating Study
作者线性地减少 ViT 内各个组件的梯度的影响 (from 1 to 0 swith step size of 0.25)然后看看各个组件对迁移性的影响,得到的结论是消除 skip connection 后可迁移性下降最严重,无论是 Attention 模块还是 MLP 模块的 Connection
作者认为这是因为 skip connection 有助于传播来自 ViT 深层的梯度,而且 ViT 深层又捕获了更高级的特征,所以这些梯度更有助于可迁移性。
VDC
VDC(Virtual Dense Connection)是一种密集连接的方法。从 Motivating Study 的结论中可以看出,skip connection 对可迁移性至关重要。既然如此,我们就可以增加 skip connection 的使用程度,参考 CNN 中的 DenseNet 将每一层与其后的所有层全部连接。
在具体实现上,由于不想改变模型的 forward pass,所以这种密集连接是虚拟存在的,也就是只在计算梯度的时候使用。假设·进行了密集连接,那模型中第 i 个块 blocki (可能是 Attention 也可能是 MLP)用数学表示就是:
fi′(zi−1)=fi(zi−1)−x−k=1∑i−1zk′
zi−1=x+k=1∑i−1zk′
其中 zi−1′ 是重组后 blocki−1 的输出,zi−1 是重组后 blocki 的输入。由于进行了密集连接,所以 zi−1′=zi−1。 fi′ 是密集连接后的块,而 fi 是原始块。对 fi′(zi−1) 进行求导,可以得到其导数 gi′。
gi′=∂zi−1∂fi′(zi−1)=∂zi−1∂(fi(zi−1)−x−∑k=1i−1zk′)=∂zi−1∂(fi(zi−1)−zi−1)=gi−1
从 gi′ 的式子中可以看出,即便我们没有实际地改变模型结构进行 skip connection,我们也能够计算出如果进行了 skip connection,其梯度会是怎么样的,因为这其中只用到了 gi。在计算出 gi′ 后,我们便可以通过链式法则,逐步计算出在 dense connect 的情况下损失函数对输入的梯度 Grad:
Grad =∂zn∂ loss k=1∏n(λgk′+1)=∂zn∂ loss k=1∏n(λ(gk−1)+1)=∂zn∂ loss k=1∏n(λgk+(1−λ)1).
令 γ=λ1−λ,我们可以进一步简化 Grad 为:
Grad =∂zn∂ loss k=1∏n(gk+γ1)
然而,这样的计算方法是不高效的,为了解决这个问题,作者提出了 consecutive skip assumption。具体来说,就是在计算 Grad 时,将 ∂zn∂ loss ∏k=1n(gk+γ1) 式子展开成很多项,然后通过删除一些项作为近似,计算结果为:
ConGrad i=Gradi+s⋅j=i+1∑nGradj⋅γn−j+1