YoloV10改进策略:归一化改进|ContraNorm在YoloV8中的创新应用(全网首发)
论文介绍[*]ContraNorm提出配景:过平滑是图神经网络(GNNs)和Transformer中普遍存在的一种征象,随着层数的增加,性能会恶化。现有方法多从表征完全收敛到单一点的视角来描画过平滑,但论文深入到一个更一般的维度坍缩视角,其中表征位于一个狭窄的锥体中。
[*]ContraNorm的提出:受对比学习在防止维度坍缩方面有用性的启发,论文提出了一种新的归一化层,称为ContraNorm。该层在嵌入空间中隐式地分散表征,导致更均匀的分布和更轻微的维度坍缩。
[*]实行验证:论文在各种真实数据集上的实行证明白ContraNorm的有用性,并展示了其可以轻松集成到GNNs和Transformer中,且参数开销可忽略不计。
创新点
[*]新的维度坍缩视角:论文没有从完全坍缩的角度看待过平滑,而是提出了一个更一般的维度坍缩视角,为理解过平滑征象提供了新的思绪。
[*]ContraNorm归一化层:受对比学习启发,设计了ContraNorm归一化层,该层能够隐式地分散表征,缓解维度坍缩问题。
[*]广泛的应用场景:ContraNorm可以轻松地集成到GNNs和Transformer中,为各种使命提供了性能提升的大概。
方法
[*]对比学习启示:论文起首分析了对比学习中的对齐丧失和均匀性丧失,并指出均匀性丧失有助于通过使表征在嵌入空间中均匀分布来解决维度坍缩问题。
[*]ContraNorm设计:基于对比学习的启示,论文设计了ContraNorm归一化层。该层通过优化诱导的方式,使表征在嵌入空间中更加均匀分布,从而缓解维度坍缩。
[*]理论分析与实行验证:论文对ContraNorm进行了理论分析,证明白其在某些条件下可以缓解完全坍缩和维度坍缩。同时,在各种使命上的实行验证了ContraNorm的有用性。
模块作用
[*]替代BatchNorm:在YoloV10中,利用ContraNorm模块更换了原有的BatchNorm模块。BatchNorm重要用于加快训练过程并稳固模型体现,但大概无法完全防止维度坍缩。
[*]增强表征能力:ContraNorm通过隐式地分散表征,使模型在训练过程中能够学习到更加丰富的特征信息,从而增强模型的表征能力。
[*]提升模型性能:在YoloV10中引入ContraNorm后,模型在目的检测使命上的性能得到了显著提升。这得益于ContraNorm对维度坍缩的有用缓解以及增强的表征能力。
改进的效果
[*]性能提升:在YoloV10中引入ContraNorm后,模型在目的检测使命上的精确率、召回率等关键指标上均有所提升。
[*]训练稳固性:ContraNorm的引入还提高了模型的训练稳固性,使模型在训练过程中更加鲁棒,不易受到噪声等因素的影响。
[*]泛化能力增强:由于ContraNorm能够学习到更加丰富的特征信息,因此模型的泛化能力也得到了显著增强。在未见过的数据上,模型仍然能够保持较好的性能体现。
论文翻译:《CONTRANORM:从对比学习的角度看待过平滑征象及其以外的问题》
过平滑是图神经网络(GNNs)和Transformer中普遍存在的一种征象,随着层数的增加,性能会恶化。我们没有从表征完全收敛到单一点的完全坍缩视角来描画过平滑,而是深入到一个更一般的维度坍缩视角,其中表征位于一个狭窄的锥体中。因此,受对比学习在防止维度坍缩方面有用性的启发,我们提出了一种新的归一化层,称为ContraNorm。直观上,ContraNorm在嵌入空间中隐式地分散表征,导致更均匀的分布和更轻微的维度坍缩。在理论分析上,我们证明白ContraNorm在某些条件下可以缓解完全坍缩和维度坍缩。我们提出的归一化层可以轻松地集成到GNNs和Transformer中,且参数开销可忽略不计。在各种真实数据集上的实行证明白我们提出的ContraNorm的有用性。我们的实现可在https://github.com/PKU-ML/ContraNorm获取。
1 引言
近年来,图神经网络(GNNs)的兴起在图学习的各个范畴都取得了重要突破(Ying等人,2018;Senior等人,2020)。在另一条道路上,只管摆脱了定制的卷积算子,Transformer(Vaswani等人,2017)也在多个自然语言处理(NLP)使命中取得了巨大乐成(Lan等人,2020;Liu等人,2019;Rajpurkar等人,2018),并且已乐成转移到盘算机视觉(CV)范畴(Dosovitskiy等人,2021;Liu等人,2021;Strudel等人,2021)。只管它们的模型架构不同,但GNNs和Transformer都受到了过平滑问题的拦阻(Li等人,2018;Tang等人,2021),即层数的深度堆叠会导致表征难以区分和性能显著下降。
为了摆脱过平滑,我们须要深入其内部模块,并起首了解过平滑是怎样发生的。然而,我们注意到现有的过平滑分析未能充实形貌学习到的特征的活动。过平滑的一个典型度量是平均相似度(Zhou等人,2021;Gong等人,2021;Wang等人,2022)。相似度收敛到1的趋势表明表征收缩到单一点(完全坍缩)。然而,这个度量不能形貌一个更一般的坍缩情况,即表征在嵌入空间中跨越一个低维流形,并且牺牲了表达能力,这被称为维度坍缩(图1左图)。在这种情况下,相似度度量无法量化坍缩程度。因此,我们须要逾越现有的度量,并将这种所谓的维度坍缩考虑在内。实际上,这种维度坍缩活动在对比学习文献中被广泛讨论(Jing等人,2022;Hua等人,2021;Chen和He,2021;Grill等人,2020),这大概有助于我们描画GNNs和Transformer的过平滑问题。对比学习的重要头脑是通过对比丧失最大化相同数据示例的不同增强视图(即正对)之间的同等性。常见的对比丧失可以分解为对齐丧失和均匀性丧失(Wang和Isola,2020)。
https://i-blog.csdnimg.cn/direct/ed46be79c7214b5fad0ae287d661a774.png
这两个成分对应于不同的目的:对齐丧失期望正对之间的距离更近,而均匀性丧失衡量嵌入分布的均匀性。仅利用对齐丧失进行纯训练大概导致全部表征收缩到单一点的平常解。荣幸的是,均匀性丧失的存在自然有助于通过使表征在嵌入空间中均匀分布来解决这个问题。
鉴于过平滑问题和表征坍缩问题之间的相似性,我们创建了它们之间的联系。我们没有直接将均匀性丧失添加到模型训练中,而是设计了一个归一化层,该层可以开箱即用,且险些没有参数开销。为了实现这一点,我们起首将用于训练的均匀性丧失转移到界说在图节点表征上的丧失上,从而可以优化表征本身而不是模型参数。直观上,该丧失满足了绘制均匀节点分布的需求。遵循迩来在结合优化方案和模型架构方面的研究(Yang等人,2021;Zhu等人,2021;Xie等人,2021;Chen等人,2022),我们将转换后的均匀性丧失作为我们提出的归一化层的基础能量函数,以便沿着它进行的下降步骤对应于前向通报。通过分析原则性均匀性丧失的展开迭代,我们设计了一个新的归一化层ContraNorm。作为概念验证,图1表明ContraNorm使特征彼此远离,从而缓解了维度坍缩。在理论上,我们证明白ContraNorm增加了表征的平均方差和有用秩,从而有用地解决了完全坍缩和维度坍缩。我们还对ContraNorm在各种使命上进行了综合评估。具体而言,ContraNorm在通用语言理解评估(GLUE)数据集(Wang等人,2019)的验证集大将BERT(Devlin等人,2018)的平均性能从82.59%提高到83.54%,并将具有24个块的DeiT(Touvron等人,2021)在ImageNet 1 K(Russakovsky等人,2015)数据集上的测试精确率从77.69%提高到78.67%。对于GNNs,我们在完全监督的图节点分类使命上进行了实行,我们提出的模型在全部深度设置上都优于原始的图卷积网络(GCN)(Kipf和Welling,2017)。我们的贡献总结如下:
[*]我们剖析了现有过平滑分析的局限性,并夸大了将维度坍缩问题纳入考虑的重要性。
[*]受对比学习技术丈量和解决过平滑的启发,我们提出了ContraNorm作为优化诱导的归一化层,以防止维度坍缩。
[*]在各种使命上的实行表明,ContraNorm可以有用地缓解各种模型变体中的维度坍缩,并在三个不同场景(用于图像分类的ViT、用于自然语言理解的BERT和用于节点分类的GNNs)中显示出明显的优势。
2 配景与相关工作
图神经网络中的信息通报。在图神经网络(GNNs)的文献中,信息通报图神经网络(MP-GNNs)得到了广泛研究。它通过与邻居交换信息来逐步更新表示。第 l l l层中节点 i i i的表示更新情势化为 h i ( l ) = UPDATE ( h ( l − 1 ) , AGGREGATE ( h i ( l − 1 ) , { h j ( l − 1 ) ∣ j ∈ N ( i ) } ) ) \boldsymbol{h}_{i}^{(l)}=\operatorname{UPDATE}\left(\boldsymbol{h}^{(l-1)}, \operatorname{AGGREGATE}\left(\boldsymbol{h}_{i}^{(l-1)},\left\{\boldsymbol{h}_{j}^{(l-1)} \mid j \in \mathcal{N}(i)\right\}\right)\right) hi(l)=UPDATE(h(l−1),AGGREGATE(hi(l−1),{hj(l−1)∣j∈N(i)})),其中 N ( i ) \mathcal{N}(i) N(i)表示节点 i i i的邻居集合, AGGREGATE ( ⋅ ) \operatorname{AGGREGATE}(\cdot) AGGREGATE(⋅)是节点交换信息的过程, UPDATE ( ⋅ ) \operatorname{UPDATE}(\cdot) UPDATE(⋅)通常是一个多层感知器(MLP)。一个经典的MP-GNNs模型是GCN(Kipf & Welling, 2017),它在单跳邻居之间流传信息。
Transformer中的自注意力。Transformer利用自注意力作为关键成分,以全局方案编码信息(Vaswani等,2017)。自注意力模块通过聚合语义上相近的邻居来重新加权中间表示。情势上,它估计键和查询之间的相似性,即自注意力矩阵,表示为 A ‾ = softmax ( Q K ⊤ ) \overline{\boldsymbol{A}}=\operatorname{softmax}\left(\boldsymbol{Q} \boldsymbol{K}^{\top}\right) A=softmax(QK⊤),其中 Q = X W Q \boldsymbol{Q}=\boldsymbol{X} \boldsymbol{W}_{Q} Q=XWQ, K = X W K \boldsymbol{K}=\boldsymbol{X} \boldsymbol{W}_{K} K=XWK, X \boldsymbol{X} X、 W Q \boldsymbol{W}_{Q} WQ和 W K \boldsymbol{W}_{K} WK分别是输入、查询和键的权重矩阵。具有残差连接的多头自注意力模块可以情势化为 attn ( X ) = X + ∑ k = 1 h A ‾ k X V k W k ⊤ \operatorname{attn}(\boldsymbol{X})=\boldsymbol{X}+\sum_{k=1}^{h} \overline{\boldsymbol{A}}_{k} \boldsymbol{X} \boldsymbol{V}_{k} \boldsymbol{W}_{k}^{\top} attn(X)=X+∑k=1hAkXVkWk⊤,其中 h h h是头的数量, V \boldsymbol{V} V、 W \boldsymbol{W} W是值和最终输出的权重。
信息通报与自注意力之间的联系。注意到自注意力矩阵可以看作是相应图的规范化邻接矩阵(Shi等,2022)。考虑一个加权完全图 G G G,其邻接矩阵表示为 A ^ \hat{\boldsymbol{A}} A^,我们将节点映射到标记表示,并将节点 i i i和节点 j j j之间的边权重设置为 exp ( Q i ⊤ K j ) \exp \left(\boldsymbol{Q}_{i}^{\top} \boldsymbol{K}_{j}\right) exp(Qi⊤Kj)。然后,规范化邻接矩阵的 ( i , j ) (i, j) (i,j)项是 A ~ i j = A ^ i j / D ^ i j = exp ( Q i ⊤ K j ) / ∑ k exp ( Q i ⊤ K k ) \tilde{\boldsymbol{A}}_{i j}=\hat{\boldsymbol{A}}_{i j} / \hat{\boldsymbol{D}}_{i j}=\exp \left(\boldsymbol{Q}_{i}^{\top} \boldsymbol{K}_{j}\right) / \sum_{k} \exp \left(\boldsymbol{Q}_{i}^{\top} \boldsymbol{K}_{k}\right) A~ij=A^ij/D^ij=exp(Qi⊤Kj)/∑kexp(Qi⊤Kk),其中对角矩阵 D ^ i i = ∑ j A ^ i j \hat{\boldsymbol{D}}_{i i}=\sum_{j} \hat{\boldsymbol{A}}_{i j} D^ii=∑jA^ij。显然, A ~ \tilde{\boldsymbol{A}} A~与Transformer中界说的自注意力矩阵情势相同。同时, A ~ \tilde{A} A~在信息通报方案中起着重要作用,决定了哪些节点进行信息交换。
GNNs和Transformer中的过平滑。过平滑这一术语起首由Li等(2018)在GNNs的研究中提出。直观上,当层数趋于无穷时,表示通过与邻居反复交换信息而收敛到一个常数。Zhou等(2020)从数学上证明,在某些条件下,收敛点仅携带图拓扑的信息。巧合的是,Transformer中也观察到了类似过平滑的征象。与卷积神经网络(CNNs)不同,Transformer不能通过简单地加深层数来获得收益,甚至随着深度的增加而出现饱和。早期工作从经验大将其归因于注意力/特征坍塌或补丁/标记同等性(Tang等,2021;Zhou等,2021;Gong等,2021;Yan等,2022)。具体来说,后层的注意力图趋于过于相似,从而导致特征在最终阶段未能充实交换信息并失去多样性。纯Transformer(即没有跳跃连接或MLP的注意力)的输出也被观察到收敛到一个秩1矩阵(Dong等,2021)。为了说明起见,我们也将Transformer中的退化问题称为过平滑。
维度坍塌的白化方法。白化方法确保规范化输出的协方差矩阵是对角矩阵,从而使维度相互独立,并隐式地解决维度坍塌问题。Huang等(2018;2019);Siarohin等(2018);Ermolov等(2021)都接纳了白化的头脑,但在白化矩阵的盘算细节和应用范畴上有所不同。与他们相比,我们制止了逆协方差矩阵平方根的复杂盘算以及为了可微性而精心设计的反向流传。此外,Huang等(2018;2019)是为卷积操作提出的,Siarohin等(2018)是为天生对抗网络(GAN)提出的,而Ermolov等(2021)实用于自监督学习。相比之下,我们鉴戒了对比学习的头脑,解决了神经网络的过平滑问题。
3 从对比学习的角度缓解过平滑问题
在本节中,我们起首通过实证表明当前的相似性度量无法表征维度坍缩,从而忽视了过平滑问题的一个关键部门。为了解决这个问题,我们从对比学习中获得灵感,其均匀性属性自然排除了维度坍缩。具体来说,我们将均匀性丧失转换为一个直接作用于表征的丧失。通过沿着这一丧失展开优化步骤,我们引入了一个称为ContraNorm的归一化层。从理论上,我们证明白所提出的层有助于缓解维度坍缩。
3.1 过平滑的表征
在本部门中,我们起首指出当前度量在表征过平滑方面的局限性。这些局限性促使我们接纳有用秩度量,该度量已被证明在捕获对比学习中维度坍缩的程度方面非常有用。
以Transformer的过平滑问题为例,不失一般性,一种流行的度量方法是评估注意力图相似性(Wang等人,2022;Gong等人,2021;Shi等人,2022)。直观上,随着注意力图相似性趋近于1,特征相似性增加,这大概导致表征表达能力丧失和性能下降。然而,通过对ViT和BERT等Transformer结构化模型进行实行,我们发现高注意力图相似性并不一定对应于高特征相似性。如图2a和图2b所示,只管注意力图相似性接近0.8甚至更高,但在大多数情况下,特征相似性仍低于0.5。这意味着即使特征相似性较低,过平滑问题仍然会发生。这一发现表明,相似性无法完全形貌表征的质量和过平滑问题。
https://i-blog.csdnimg.cn/direct/0193d81d660d41e19160e0f6312c938d.png
直观地,我们可以考虑一个潜在嵌入空间中的表征没有收缩到单个点而是跨越一个低维空间的情况。在这种情况下,特征相似性大概相对较低,但表征仍然会失去表达能力。这种表征退化问题被称为维度坍缩,在对比学习的文献中被广泛讨论。在对比学习中,形貌维度坍缩的常用做法是奇特值分布的消失(Gao等人,2019;Ethayarajh,2019;Jing等人,2022)。为了研究Transformer中是否发生维度坍缩,我们绘制了12层BERT最后一个块的特征奇特值分布。如图2c所示,在BERT基础模型的深层中,不显著的(接近零)值主导了奇特值分布,这表明表征位于低维流形上,发生了维度坍缩。为了显示沿层索引的坍缩趋势,我们将奇特值分布简化为一个简洁的标量有用秩(erank)(Roy和Vetterli,2007),它覆盖了完整的奇特值谱。
界说3.1(有用秩)。考虑矩阵 X ∈ R m × n \boldsymbol{X} \in \mathbb{R}^{m \times n} X∈Rm×n,其奇特值分解为 X = U Σ V \boldsymbol{X}=\boldsymbol{U} \boldsymbol{\Sigma} \boldsymbol{V} X=UΣV,其中 Σ \boldsymbol{\Sigma} Σ是一个对角矩阵,对角线上的奇特值为 σ 1 ≥ σ 2 ≥ ⋯ ≥ σ Q ≥ 0 \sigma_{1} \geq \sigma_{2} \geq \cdots \geq \sigma_{Q} \geq 0 σ1≥σ2≥⋯≥σQ≥0,且 Q = min m , n Q=\min {m, n} Q=minm,n。奇特值的分布界说为 L 1 L_{1} L1归一化情势 p i = σ i / ∑ k = 1 Q ∣ σ k ∣ p_{i}=\sigma_{i} / \sum_{k=1}^{Q}\left|\sigma_{k}\right| pi=σi/∑k=1Q∣σk∣。矩阵 X \boldsymbol{X} X的有用秩,记为erank( X \boldsymbol{X} X),界说为KaTeX parse error: Expected '}', got '\right' at position 83: …, \cdots, p_{Q}\̲r̲i̲g̲h̲t̲}\right),其中 H ( p 1 , p 2 , ⋯ , p Q ) H\left(p_{1}, p_{2}, \cdots, p_{Q}\right) H(p1,p2,⋯,pQ)是由 H ( p 1 , p 2 , ⋯ , p Q ) = − ∑ k = 1 Q p k log p k H\left(p_{1}, p_{2}, \cdots, p_{Q}\right)=-\sum_{k=1}^{Q} p_{k} \log p_{k} H(p1,p2,⋯,pQ)=−∑k=1Qpklogpk给出的香农熵。
基于有用秩,我们在图2d中重新审阅了Transformer的过平滑问题。我们可以看到,有用秩随着层索引的增加而下降,表明在更深层中奇特值分布越来越不平衡。这一发现不仅验证了Transformer中确实发生了维度坍缩,还表明白有用秩在检测该问题方面的有用性。
3.2 从对比学习中的均匀性丧失获得的启示
对比学习的焦点头脑是最大化同一示例的增强视图(即正对)之间的同等性,并最小化不同样本的视图(即负对)之间的同等性。对比学习的一种流行情势是利用包罗有限负样本的丧失函数来优化特征表征(Chen等人,2020)。具体来说,给定一批随机采样的示例,对于每个示例,我们天生其增强的正视图,并最终得到统共 N N N个样本。考虑一个编码器函数 f f f,正对 ( i , i + ) (i, i^{+}) (i,i+)的对比丧失为
L ( i , i + ) = − log exp ( f ( x i ) ⊤ f ( x i + ) / τ ) ∑ k = 1 N exp ( f ( x i ) ⊤ f ( x k ) / τ ) − exp ( f ( x i ) ⊤ f ( x i ) / τ ) \mathcal{L}\left(i, i^{+}\right)=-\log \frac{\exp \left(f\left(\boldsymbol{x}_{i}\right)^{\top} f\left(\boldsymbol{x}_{i^{+}}\right) / \tau\right)}{\sum_{k=1}^{N} \exp \left(f\left(\boldsymbol{x}_{i}\right)^{\top} f\left(\boldsymbol{x}_{k}\right) / \tau\right)-\exp \left(f\left(\boldsymbol{x}_{i}\right)^{\top} f\left(\boldsymbol{x}_{i}\right) / \tau\right)} L(i,i+)=−log∑k=1Nexp(f(xi)⊤f(xk)/τ)−exp(f(xi)⊤f(xi)/τ)exp(f(xi)⊤f(xi+)/τ),
其中 τ \tau τ表示温度。该丧失可以分解为对齐丧失和均匀性丧失:
L align ( i , i + ) = − f ( x i ) ⊤ f ( x i + ) / τ L uniform ( i ) = log ∑ k = 1 N exp ( f ( x i ) ⊤ f ( x k ) / τ ) \mathcal{L}_{\text {align }}\left(i, i^{+}\right)=-f\left(\boldsymbol{x}_{i}\right)^{\top} f\left(\boldsymbol{x}_{i+}\right) / \tau \quad \mathcal{L}_{\text {uniform }}(i)=\log \sum_{k=1}^{N} \exp \left(f\left(\boldsymbol{x}_{i}\right)^{\top} f\left(\boldsymbol{x}_{k}\right) / \tau\right) Lalign (i,i+)=−f(xi)⊤f(xi+)/τLuniform (i)=log∑k=1Nexp(f(xi)⊤f(xk)/τ)
对齐丧失鼓励正对的特征表征相似,从而对不须要的噪声保持稳定。然而,仅利用对齐丧失进行训练会导致全部表征都相同的平常解。换句话说,发生了完全坍缩。虽然批量归一化(Ioffe和Szegedy,2015)有助于制止这个问题,但它不能完全防止维度坍缩,这仍然会对学习产生负面影响(Hua等人,2021)。
得益于均匀性丧失的性质,维度坍缩可以得到有用解决。回首式(2)中的均匀性丧失情势,它最大化全部样本之间的平均距离,使得嵌入在潜在空间中大致均匀分布,从而保留了更多信息。在训练过程中包罗均匀性丧失有助于缓解维度坍缩。直观地,它还可以作为缓解GNN和Transformer等模型中过平滑问题的有力工具。
解决过平滑问题的另一种方法是将均匀性丧失直接纳入训练目的。然而,我们的实行表明,这种方法的有用性有限(更多详情见附录B.2)。相反,我们提出了一种可以轻松融入各种模型的归一化层。我们的方法将均匀性丧失用作所提出层的潜在能量函数,使得沿着能量函数的下降步长对应于该层的前向通报。大概,我们也可以将该层视为优化函数的展开迭代。这一观点被用于阐释图神经网络(GNN)(Yang等人,2021;Zhu等人,2021)、Transformer(Yang等人,2022)和经典的多层感知器(MLP)(Xie等人,2021)。
请注意,均匀性丧失通过优化模型参数来发挥作用,而归一化层直接更新的是表示本身。因此,我们起首将作为训练丧失的均匀性丧失转换为一种架构丧失。考虑一个节点数量受限的全连接图,其中节点 h i \boldsymbol{h}_{i} hi被视为随机样本 x i \boldsymbol{x}_{i} xi的表示。类似于 L uniform \mathcal{L}_{\text {uniform }} Luniform ,我们在图的全部节点上界说 L ^ uniform \hat{\mathcal{L}}_{\text {uniform }} L^uniform 为
L ^ uniform = ∑ i L uniform ( i ) = ∑ i log ∑ j e h i ⊤ h j / τ \hat{\mathcal{L}}_{\text {uniform }}=\sum_{i} \mathcal{L}_{\text {uniform }}(i)=\sum_{i} \log \sum_{j} e^{\boldsymbol{h}_{i}^{\top} \boldsymbol{h}_{j} / \tau} L^uniform =∑iLuniform (i)=∑ilog∑jehi⊤hj/τ
这种情势的均匀性丧失直接界说在表示上,并且我们稍后会将其用作表示更新的潜在能量函数。
3.3 提出的ContraNorm
到目前为止,我们能够在层设计和展开的均匀性最小化迭代之间创建联系。具体来说,我们对节点表示上的 L ^ uniform \hat{L}_{\text {uniform }} L^uniform 取导数:
∂ L ^ uniform ∂ h i = ∑ j exp ( h i ⊤ h j / τ ) ∑ k exp ( h i ⊤ h k / τ ) h j / τ + ∑ j exp ( h i ⊤ h j / τ ) ∑ k exp ( h j ⊤ h k / τ ) h j / τ \frac{\partial \hat{\mathcal{L}}_{\text {uniform }}}{\partial \boldsymbol{h}_{i}}=\sum_{j} \frac{\exp \left(\boldsymbol{h}_{i}^{\top} \boldsymbol{h}_{j} / \tau\right)}{\sum_{k} \exp \left(\boldsymbol{h}_{i}^{\top} \boldsymbol{h}_{k} / \tau\right)} \boldsymbol{h}_{j} / \tau+\sum_{j} \frac{\exp \left(\boldsymbol{h}_{i}^{\top} \boldsymbol{h}_{j} / \tau\right)}{\sum_{k} \exp \left(\boldsymbol{h}_{j}^{\top} \boldsymbol{h}_{k} / \tau\right)} \boldsymbol{h}_{j} / \tau ∂hi∂L^uniform =∑j∑kexp(hi⊤hk/τ)exp(hi⊤hj/τ)hj/τ+∑j∑kexp(hj⊤hk/τ)exp(hi⊤hj/τ)hj/τ
设特征矩阵为 H \boldsymbol{H} H,其第 i i i活动 h i ⊤ \boldsymbol{h}_{i}^{\top} hi⊤,我们可以将等式(4)重写为矩阵情势:
∂ L ^ uniform ∂ H = ( D − 1 A + A D − 1 ) H / τ \frac{\partial \hat{\mathcal{L}}_{\text {uniform }}}{\partial \boldsymbol{H}}=\left(\boldsymbol{D}^{-1} \boldsymbol{A}+\boldsymbol{A} \boldsymbol{D}^{-1}\right) \boldsymbol{H} / \tau ∂H∂L^uniform =(D−1A+AD−1)H/τ
其中, A = exp ( H H ⊤ / τ ) \boldsymbol{A}=\exp \left(\boldsymbol{H} \boldsymbol{H}^{\top} / \tau\right) A=exp(HH⊤/τ), D = deg ( A ) 1 \boldsymbol{D}=\operatorname{deg}(\boldsymbol{A})^{1} D=deg(A)1。为了减小均匀性丧失 L ^ uniform \hat{\mathcal{L}}_{\text {uniform }} L^uniform ,一种自然的方法是采取一步梯度下降,通过
H t = H b − s × ∂ L ^ uniform ∂ H b = H b − s / τ × ( D − 1 A + A D − 1 ) H b \boldsymbol{H}_{t}=\boldsymbol{H}_{b}-s \times \frac{\partial \hat{\mathcal{L}}_{\text {uniform }}}{\partial \boldsymbol{H}_{b}}=\boldsymbol{H}_{b}-s / \tau \times\left(\boldsymbol{D}^{-1} \boldsymbol{A}+\boldsymbol{A} \boldsymbol{D}^{-1}\right) \boldsymbol{H}_{b} Ht=Hb−s×∂Hb∂L^uniform =Hb−s/τ×(D−1A+AD−1)Hb
更新 H \boldsymbol{H} H,其中 H b \boldsymbol{H}_{b} Hb和 H t \boldsymbol{H}_{t} Ht分别表示更新前后的表示, s s s是梯度下降的步长。在某一表示层之后进行此更新,我们可以减小表示的均匀性丧失,从而有助于缓解维度坍缩。
在等式(6)中,存在两个项 D − 1 A \boldsymbol{D}^{-1} \boldsymbol{A} D−1A和 A D − 1 \boldsymbol{A} \boldsymbol{D}^{-1} AD−1与 H b \boldsymbol{H}_{b} Hb相乘。根据经验,这两个项在我们的方法中起着相似的作用。注意第一项与Transformer中的自注意力矩阵相关,因此我们只保留它并丢弃第二个项。然后等式(6)变为
H t = H b − s / τ × ( D − 1 A ) H b = H b − s / τ × softmax ( H b H b ⊤ ) H b \boldsymbol{H}_{t}=\boldsymbol{H}_{b}-s / \tau \times\left(\boldsymbol{D}^{-1} \boldsymbol{A}\right) \boldsymbol{H}_{b}=\boldsymbol{H}_{b}-s / \tau \times \operatorname{softmax}\left(\boldsymbol{H}_{b} \boldsymbol{H}_{b}^{\top}\right) \boldsymbol{H}_{b} Ht=Hb−s/τ×(D−1A)Hb=Hb−s/τ×softmax(HbHb⊤)Hb
事实上,该操尴尬刁难应于广泛用于对比学习方法中的停梯度技术(He等人,2020;Grill等人,2020;Tao等人,2022)。通过丢弃梯度中的一些项,停梯度技术使训练过程不对称,从而以较少的盘算开销制止了表示坍缩,附录B.1中对此进行了详细讨论。
Proposition 2 gives a pro然而,由式(7)诱导的层仍然不能保证表示的均匀性。考虑一个极度情况,其中 softmax ( H b H b ⊤ ) \text{softmax}\left(\boldsymbol{H}_{b} \boldsymbol{H}_{b}^{\top}\right) softmax(HbHb⊤)等于单元矩阵 I \boldsymbol{I} I。式(7)变为 H t = H b − s / τ × H b = ( 1 − s / τ ) H b \boldsymbol{H}_{t}= \boldsymbol{H}_{b}-s / \tau \times \boldsymbol{H}_{b}=(1-s / \tau) \boldsymbol{H}_{b} Ht=Hb−s/τ×Hb=(1−s/τ)Hb,这仅仅使 H \boldsymbol{H} H的尺度变小,并不能帮助缓解完全坍缩的问题。为了保持表示的稳固性,我们探索了两种不同的方法:特征范数正则化和层归一化。
I. 特征范数正则化。我们在均匀性丧失中添加一个正则化项 − 1 2 ∑ i ∥ h i ∥ 2 2 -\frac{1}{2} \sum_{i}\left\|h_{i}\right\|_{2}^{2} −21∑i∥hi∥22,以鼓励更大的特征范数。当正则化项变小时, h i h_{i} hi的范数变大。因此,添加这项有助于防止表示 h i h_{i} hi的范数变小。如许,更新情势变为
H t = ( 1 + s ) H b − s / τ × softmax ( H b H b ⊤ ) H b \boldsymbol{H}_{t}=(1+s) \boldsymbol{H}_{b}-s / \tau \times \text{softmax}\left(\boldsymbol{H}_{b} \boldsymbol{H}_{b}^{\top}\right) \boldsymbol{H}_{b} Ht=(1+s)Hb−s/τ×softmax(HbHb⊤)Hb
命题1。令 e = ( 1 , 1 , … , 1 ) ⊤ / n \boldsymbol{e}=(1,1, \ldots, 1)^{\top} / \sqrt{n} e=(1,1,…,1)⊤/n 。对于注意力矩阵 A ‾ = softmax ( H b H b ⊤ ) \overline{\boldsymbol{A}}=\text{softmax}\left(\boldsymbol{H}_{b} \boldsymbol{H}_{b}^{\top}\right) A=softmax(HbHb⊤),令 σ min \sigma_{\min } σmin为矩阵 P = ( I − e l ⊤ ) ( I − A ‾ ) + ( I − A ‾ ) ⊤ ( I − e ⊤ ) \boldsymbol{P}=\left(\boldsymbol{I}-\boldsymbol{e l}^{\top}\right)(\boldsymbol{I}-\overline{\boldsymbol{A}})+(\boldsymbol{I}-\overline{\boldsymbol{A}})^{\top}\left(\boldsymbol{I}-\boldsymbol{e}^{\top}\right) P=(I−el⊤)(I−A)+(I−A)⊤(I−e⊤)的最小特征值。对于式(8)中的更新,即 H t = ( ( 1 + s ) I − s A ‾ ) H b \boldsymbol{H}_{t}=((1+s) \boldsymbol{I}-s \overline{\boldsymbol{A}}) \boldsymbol{H}_{b} Ht=((1+s)I−sA)Hb, s ≥ 0 s \geq 0 s≥0,我们有 Var ( H t ) ≥ ( 1 + s σ min ) ⋅ Var ( H b ) \text{Var}\left(\boldsymbol{H}_{t}\right) \geq\left(1+s \sigma_{\min }\right) \cdot \text{Var}\left(\boldsymbol{H}_{b}\right) Var(Ht)≥(1+sσmin)⋅Var(Hb)。特别地,如果 σ min ≥ 0 \sigma_{\min } \geq 0 σmin≥0,我们有 Var ( H t ) ≥ Var ( H b ) \text{Var}\left(\boldsymbol{H}_{t}\right) \geq \text{Var}\left(\boldsymbol{H}_{b}\right) Var(Ht)≥Var(Hb)。
命题1给出了更新前后方差之比的界。它表明方差的变革受对称矩阵 P = ( I − e e ⊤ ) ( I − A ‾ ) + ( I − A ‾ ) ⊤ ( I − e e ⊤ ) \boldsymbol{P}=\left(\boldsymbol{I}-\boldsymbol{e} \boldsymbol{e}^{\top}\right)(\boldsymbol{I}-\overline{\boldsymbol{A}})+(\boldsymbol{I}-\overline{\boldsymbol{A}})^{\top}(\boldsymbol{I}- \boldsymbol{e} \boldsymbol{e}^{\top} ) P=(I−ee⊤)(I−A)+(I−A)⊤(I−ee⊤)的影响。如果 P \boldsymbol{P} P是半正定矩阵,我们将得到结果 Var ( H t ) ≥ Var ( H b ) \text{Var}\left(\boldsymbol{H}_{t}\right) \geq \text{Var}\left(\boldsymbol{H}_{b}\right) Var(Ht)≥Var(Hb),这表明表示变得更加均匀。在附录F中,我们将给出 P \boldsymbol{P} P是半正定矩阵的一些充实条件。
II. 附加层归一化。另一种选择是利用层归一化(LayerNorm)(Ba等,2016)来维持特征尺度。LayerNorm的更新情势是 LayerNorm ( h i ) = γ ⋅ ( ( h i − mean ( h i ) ) / Var ( h i ) + ε ) + β \text{LayerNorm} \left(\boldsymbol{h}_{i}\right)= \gamma \cdot\left(\left(\boldsymbol{h}_{i}-\text{mean}\left(\boldsymbol{h}_{i}\right)\right) / \sqrt{\text{Var}\left(\boldsymbol{h}_{i}\right)+\varepsilon}\right)+\beta LayerNorm(hi)=γ⋅((hi−mean(hi))/Var(hi)+ε )+β,其中 γ \gamma γ和 β \beta β是可学习参数, ε = 1 0 − 5 \varepsilon=10^{-5} ε=10−5。可学习参数 γ \gamma γ和 β \beta β可以重新缩放表示 h i \boldsymbol{h}_{i} hi,以帮助缓解问题。我们将LayerNorm添加到式(7)中的原始更新中,得到
H t = LayerNorm ( H b − s / τ × softmax ( H b H b ⊤ ) H b ) \boldsymbol{H}_{t}=\text{LayerNorm}\left(\boldsymbol{H}_{b}-s / \tau \times \text{softmax}\left(\boldsymbol{H}_{b} \boldsymbol{H}_{b}^{\top}\right) \boldsymbol{H}_{b}\right) Ht=LayerNorm(Hb−s/τ×softmax(HbHb⊤)Hb)
其中,对表示矩阵 H \boldsymbol{H} H应用层归一化意味着对其全部门量 h 1 , … , h n \boldsymbol{h}_{1}, \ldots, \boldsymbol{h}_{n} h1,…,hn应用层归一化。
ContraNorm。我们实证比较了这两种提出的方法,发现它们的性能相当,而第二种方法略胜一筹。因此,我们接纳第二种更新情势,并将其定名为对比归一化(ContraNorm)。ContraNorm层可以添加到任何表示层之后,以减少均匀性丧失并帮助缓解维度坍缩。我们在附录B.3中讨论了插入ContraNorm的最佳位置。
ContraNorm-D:用于大规模图的可扩展ContraNorm。从式(9)的更新规则中,我们可以看到ContraNorm层的盘算复杂度为 O ( n 2 d ) \mathcal{O}\left(n^{2} d\right) O(n2d),其中 n n n是标记的数量, d d d是每个标记的特征维度,这与自注意力(Vaswani等,2017)的盘算复杂度在同一量级。因此,当标记数量 n n n与特征维度 d d d相似或小于 d d d时,该操作是优选的,这通常在盘算机视觉(CV)和自然语言处理(NLP)范畴中是这种情况。然而,对于包罗数百万个节点的大规模图( n ≫ d n \gg d n≫d),对 n n n的二次依靠使得ContraNorm在盘算上不可行。为了规避这个问题,我们提出了双重对比归一化(ContraNorm-D),它是ContraNorm的一种可扩展变体,其盘算复杂度 O ( n d 2 ) \mathcal{O}\left(n d^{2}\right) O(nd2)对 n n n有线性依靠,具有以下双重更新规则:
H t = LayerNorm ( H b − s / τ × H b × softmax ( H b ⊤ H b ) ) \boldsymbol{H}_{t}=\text{LayerNorm}\left(\boldsymbol{H}_{b}-s / \tau \times \boldsymbol{H}_{b} \times \text{softmax}\left(\boldsymbol{H}_{b}^{\top} \boldsymbol{H}_{b}\right)\right) Ht=LayerNorm(Hb−s/τ×Hb×softmax(Hb⊤Hb))
其中,我们盘算了维度特征相关矩阵 H b ⊤ H b ∈ R d × d \boldsymbol{H}_{b}^{\top} \boldsymbol{H}_{b} \in \mathbb{R}^{d \times d} Hb⊤Hb∈Rd×d,并在softmax归一化后将其乘以特征 H b \boldsymbol{H}_{b} Hb的右侧。在附录A中,我们提供了更详细的解释,展示了怎样从非对比学习方法(如Barlow Twins(Zbontar等,2021)和VICReg(Bardes等,2022))中接纳的特征去相关归一化推导出它。正如迩来的工作(Garrido等,2022)所揭示的,对比学习和非对比学习方法之间存在双重关系,因此我们可以将ContraNorm-D视为ContraNorm的一种双重版本,它偏重于降低维度特征相关性。
3.4 理论分析
在本部门中,我们给出了ContraNorm的理论结果,并表明在均匀性丧失情势略有不同的情况下,ContraNorm更新有助于缓解维度坍缩。
命题2。考虑更新情势 H t = ( 1 + s ) H b − s ( H b H b ⊤ ) H b \boldsymbol{H}_{t}=(1+s) \boldsymbol{H}_{b}-s\left(\boldsymbol{H}_{b} \boldsymbol{H}_{b}^{\top}\right) \boldsymbol{H}_{b} Ht=(1+s)Hb−s(HbHb⊤)Hb,令 σ max \sigma_{\max } σmax为 H b \boldsymbol{H}_{b} Hb的最大奇特值。对于满足 1 + ( 1 − σ max 2 ) s > 0 1+\left(1-\sigma_{\max }^{2}\right) s>0 1+(1−σmax2)s>0的 s > 0 s>0 s>0,我们有 erank ( H t ) > erank ( H b ) \text{erank}\left(\boldsymbol{H}_{t}\right)>\text{erank}\left(\boldsymbol{H}_{b}\right) erank(Ht)>erank(Hb)。在一种特别的更新情势下,旨在缓解维度坍缩的问题。记 L ^ dim = tr ( ( I − H H ⊤ ) 2 ) / 4 \hat{\mathcal{L}}_{\text {dim }}=\operatorname{tr}\left(\left(\boldsymbol{I}-\boldsymbol{H} \boldsymbol{H}^{\top}\right)^{2}\right) / 4 L^dim =tr((I−HH⊤)2)/4,那么 L ^ dim \hat{\mathcal{L}}_{\text {dim }} L^dim 与Barlow Twins(Zbontar等,2021)具有相似的情势。这一丧失函数试图将相似度矩阵 H H ⊤ \boldsymbol{H} \boldsymbol{H}^{\top} HH⊤的对角元素等于1,非对角元素等于0,从而使不同的特征彼此正交,从而帮助特征在空间内变得更加均匀。注意, ∂ L ^ bid ∂ H = ( I − H H ⊤ ) H \frac{\partial \hat{\mathcal{L}}_{\text {bid }}}{\partial \boldsymbol{H}}=\left(\boldsymbol{I}-\boldsymbol{H} \boldsymbol{H}^{\top}\right) \boldsymbol{H} ∂H∂L^bid =(I−HH⊤)H,因此,上述更新可以重写为 H t = H b + s ∂ L ˙ d i m ( H b ) ∂ H b \boldsymbol{H}_{t}=\boldsymbol{H}_{b}+s \frac{\partial \dot{\mathcal{L}}_{\mathrm{dim}}\left(\boldsymbol{H}_{b}\right)}{\partial \boldsymbol{H}_{b}} Ht=Hb+s∂Hb∂L˙dim(Hb),这表明这种更新情势是带有不同均匀性丧失的ContraNorm。命题2揭示,当 s s s满足 1 + ( 1 − σ max ) s > 0 1+\left(1-\sigma_{\max }\right) s>0 1+(1−σmax)s>0时,此更新可以增加表示矩阵的有用秩。注意,无论 σ max > 0 \sigma_{\max }>0 σmax>0与否,如果 s s s充足接近0,该条件就会创建。在这种情况下,该更新会缓解维度坍缩。
4 实行
在本节中,我们通过实行证明白ContraNorm的有用性,实行包罗1)在GLUE数据集上利用BERT和ALBERT(Lan等,2020)作为骨干模型的语言理解使命;2)在ImageNet 100和ImageNet 1k数据集上利用DeiT作为基础模型的图像分类使命;3)在流行图数据集上利用GCN作为骨干模型的全监督图节点分类使命。此外,我们还对ContraNorm变体进行了消融研究,并进行了超参数敏感性分析。
4.1 语言模型实行
设置。为了证明ContraNorm的潜力,我们将其集成到两个Transformer结构的模型中:BERT和ALBERT,并在GLUE数据集上进行评估。GLUE包罗三类使命:(i)单句使命CoLA和SST-2;(ii)相似性和释义使命MRPC、QQP和STS-B;(iii)推理使命MNLI、QNLI和RTE。对于MNLI使命,我们在匹配(MNLI-m)和不匹配(MNLI-mm)版本上都进行了实行。我们默认在自注意力模块和残差连接之后插入ContraNorm(更多位置选择见附录B.3)。我们利用32的批量巨细,并对全部GLUE使命的数据进行5个周期的微调。对于每个使命,我们在等式(6)中的(0.005,0.01,0.05,0.1,0.2)中选择了最佳比例因子 s s s。我们利用了由12个堆叠块构成的基础模型(BERT-base和ALBERT-base),并为全部使命固定了超参数:隐藏层巨细为128,注意力头数为12,最大序列长度为384。我们利用Adam(Kingma&Ba,2014)优化器,学习率为 2 e − 5 2e-5 2e−5。
结果。如表1所示,与纯BERT相比,ContraNorm在全部数据集上都显著提高了结果。具体来说,对于BERT骨干模型,我们的ContraNorm将之前的平均性能从82.59%提高到83.39%,对于ALBERT骨干模型,则从83.74%提高到84.67%。我们还将训练好的模型提交到GLUE基准排行榜上,结果见附录E.1。可以观察到,带有ContraNorm的BERT在全部数据集上也优于纯模型。为了验证ContraNorm的去过度平滑效果。我们在不同的层深度设置上构建了有/无ContraNorm的模型。性能比较如图3a所示。块的恒定堆叠会导致纯BERT性能明显下降,而带有ContraNorm的BERT则保持了竞争优势。此外,对于深层模型,我们还展示了方差和有用秩的趋势,分别在图3b和图3c中,这分别验证了ContraNorm在缓解完全坍缩和维度坍缩方面的能力。
https://i-blog.csdnimg.cn/direct/da39bca4141148ddbd0e0cdea76dac39.png
4.2 视觉Transformer实行
我们还验证了ContraNorm在盘算机视觉范畴的有用性。我们选择DeiT作为骨干模型,并从头开始训练模型。在ImageNet 100和ImageNet 1k数据集上评估了不同深度设置的实行。基于Timm(Wightman,2019)和DeiT存储库,我们在基础模型中自注意力模块之后中间插入了ContraNorm。
设置。我们遵循Touvron等(2021)的训练方案,并尽大概少地更改超参数。具体来说,我们利用AdamW(Loshchilov&Hutter,2019)优化器,并接纳余弦学习率衰减。我们训练每个模型150个周期,并将批量巨细设置为1024。利用增强技术来提高性能。对于全部实行,图像巨细设置为 224 × 224 224 \times 224 224×224。对于Imagenet100,我们将全部层深度设置的尺度因子 s s s设置为0.2。对于Imagenetlk,我们将具有12个和16个块的模型的 s s s设置为0.2,并将具有24个块的模型的 s s s提高到0.3。
https://i-blog.csdnimg.cn/direct/2ba2427649ab4cdcb06eb78fb36de0dc.png
结果。如表2所示,在两个数据集上,带有ContraNorm的DeiT在全部层设置下都优于纯DeiT。通常,我们的方法在ImageNet 100的测试精确率上提高了近5%。对于ImageNetlk,我们将具有24个块的DeiT的性能从77.69%提高到78.67%。
4.3 图神经网络实行
设置。我们将ContraNorm作为GCN中每个图卷积之后的简单归一化层来实现,并在全监督图节点分类使命上对其进行评估。对于数据集,我们选择了两个流行的引文网络Cora(McCallum等,2000)和Citeseer(Giles等,1998),以及Wikipedia文章网络Chameleon和Squirrel(Rozemberczki等,2021)。有关数据集的更多信息见附录D。我们将ContraNorm与专为防止过度平滑而设计的流行归一化层PairNorm(Zhao&Akoglu,2020)进行了比较。我们还通过将尺度 s = 0 s=0 s=0设置为LayerNorm作为基线。我们遵循Kipf&Welling(2017)中的数据拆分设置,训练/验证/测试拆分分别为60%、20%、20%。为了保证比较的公平性,我们固定隐藏维度为32,并如Zhao&Akoglu(2020)所述,将dropout率设置为0.6。对于PairNorm和ContraNorm,我们在 { 0.2 , 0.5 , 0.8 , 1.0 } \{0.2,0.5,0.8,1.0\} {0.2,0.5,0.8,1.0}范围内选择最佳尺度控制器 s s s。对于PairNorm,我们选择Zhao&Akoglu(2020)提出的最佳变体。
结果。如表3所示,在浅层(例如两层)中,添加ContraNorm会使纯GCN的精确率略有下降,但随着层数的加深,它有助于防止性能急剧下降。在去过度平滑方面,ContraNorm优于PairNorm和LayerNorm。在这里,我们证明白在稀释过度平滑方面,ContraNorm是有用的,而单独的LayerNorm无法防止GCN过度平滑,甚至放大了在Cora上超过16层时的负面影响。
https://i-blog.csdnimg.cn/direct/f9c74e5c6c7849ccaf4c5ad393d1675a.png
4.4 消融研究
回首第3.3节,我们通过屏蔽第二项,利用停梯度(SG)技术改进了ContraNorm。为了解决数据表示不稳固的问题,我们对原始版本应用了层归一化(LN),而为了方便理论分析,层归一化被更换为 L 2 L_{2} L2归一化( L 2 N L_{2} \mathrm{~N} L2 N)。在这里,我们研究了这些技巧的效果,结果如表4所示。与仅利用LayerNorm的变体相比,同时利用停梯度和层归一化的ContraNorm体现出更好的性能。至于这两种归一化方法,它们险些可以与我们的方法相媲美,这验证了我们理论分析的实用性。
在附录E.2中,我们进一步就利用不同尺度因子 s s s值时ContraNorm的收益进行了消融研究,并表明ContraNorm在得当的 s s s值范围内具有鲁棒性。
5 结论
在本文中,我们指出了当前度量在表征过平滑方面的不足,并夸大了将维度坍缩作为过平滑分析切入点的重要性。受对比学习中均匀性丧失的启发,我们设计了一个优化诱导的归一化层ContraNorm。我们的理论发现表明,ContraNorm通过减少表示的方差和有用秩,乐成缓解了维度坍缩问题。实行表明,ContraNorm在各种使命上提升了Transformer和GNN的性能。我们的工作为解决过平滑问题提供了从对比学习角度出发的新视角,有助于推动后续广泛的研究。
代码
class ContraNorm(nn.Module):
def __init__(self, dim, scale=0.0, dual_norm=False, pre_norm=False, temp=1.0, learnable=False, positive=False,
identity=False):
super().__init__()
if learnable and scale > 0:
import math
if positive:
scale_init = math.log(scale)
else:
scale_init = scale
self.scale_param = nn.Parameter(torch.empty(dim).fill_(scale_init))
self.dual_norm = dual_norm
self.scale = scale
self.pre_norm = pre_norm
self.temp = temp
self.learnable = learnable
self.positive = positive
self.identity = identity
self.layernorm = nn.LayerNorm(dim, eps=1e-6)
def forward(self, x):
if self.scale > 0.0:
xn = nn.functional.normalize(x, dim=2)
if self.pre_norm:
x = xn
sim = torch.bmm(xn, xn.transpose(1, 2)) / self.temp
if self.dual_norm:
sim = nn.functional.softmax(sim, dim=2) + nn.functional.softmax(sim, dim=1)
else:
sim = nn.functional.softmax(sim, dim=2)
x_neg = torch.bmm(sim, x)
if not self.learnable:
if self.identity:
x = (1 + self.scale) * x - self.scale * x_neg
else:
x = x - self.scale * x_neg
else:
scale = torch.exp(self.scale_param) if self.positive else self.scale_param
scale = scale.view(1, 1, -1)
if self.identity:
x = scale * x - scale * x_neg
else:
x = x - scale * x_neg
x = self.layernorm(x)
return x
if __name__ == '__main__':
block = ContraNorm(dim=128, scale=0.1, dual_norm=False, pre_norm=False, temp=1.0, learnable=False, positive=False,
identity=False)
input = torch.rand(32, 784, 128)
output = block(input)
print("Input size:", input.size())
print("Output size:", output.size())
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]