zhengchen1999 / CAT

PyTorch code for our NeurIPS 2022 paper "Cross Aggregation Transformer for Image Restoration"
Apache License 2.0
116 stars 8 forks source link

关于LCM模块 #7

Closed CR7forMadrid closed 10 months ago

CR7forMadrid commented 1 year ago

您好,感谢您提出的非常精彩的CAT一文。我对其中的LCM模块补充归纳偏执很感兴趣,但是将其应用在我的模型时效果反而不如不添加这个模块。请问LCM模块的主要应用场景是哪里? 是一般Transformer都可以还是只针对您所提出的这种Transformer? 我个人觉得LCM只对V进行操作,不参与到SA的计算中,应该普遍适用于transformer中,但事与愿违。又或者是将LCM与out相加之前需要乘一个缩放系数以防止LCM产生的结果过于影响SA计算得到的关系?

CR7forMadrid commented 1 year ago

如果可以的话也希望您能详细解释以下为什么仅针对V进行而不是Q和K? 亦或者对Q和K进行归纳偏执也有同样的效果?

zhengchen1999 commented 1 year ago

你好,感谢你的问题,这里用中文回答。 对于LCM,其设计的目的:“complement the Transformer with the locality and achieve global and local coupling”。这里最简单的解释就是为了用Conv增强SA(关于这一点,许多论文进行研究)。下面回答你的问题。

主要应用场景:我在多个Transformer模型中应用过改模块,其中在本文CAT和使用channel-attention的Transformer(例如:XCiT)中效果最显著。至于使用的任务,我用到过超分、去噪、去模糊上。所以我认为LCM不是只适用于CAT。

在你的模型中效果下降:这个情况,我并没有遇到过。不过在有些情况下,使用LCM,可能会没有效果,并且训练波动会产生0.05dB以内的下降(但是应该不是由于LCM造成的性能下降)。关于你说的效果下降,大概会下降多少?这里可以尝试加入一个可学习的缩放系数,或者对Conv的初始化权重小一点,来降低影响。

作用于V:分析self-attention的计算 softmax(Q·K^T)·V,可以把attention map,也就是softmax(Q^T·K)视为(动态)权重,作用到V上。而卷积直接作用于V,也可以看成是作用于V的一种(静态)权重。这样做,卷积和attention map是作用在同一个特征域上的(也就是V),更加直接。而对于如果对Q、K作用的话,我认为直接加强的是attention map,再间接作用到V上(那为什么不直接作用到V上呢?另外还能节省计算量)。不过对Q、K也使用卷积操作,增加归纳偏执,应该也是有一定作用的,可以参考Restormer中,在SA中增加DWConv的设计。

zhengchen1999 commented 1 year ago

您好,请问之前的回答是否解决了你的问题,如果还有问题,欢迎继续讨论。