zhixiongz / CLIP4CMR

A Comprehensive Empirical Study of Vision-Language Pre-trained Model for Supervised Cross-Modal Retrieval
42 stars 3 forks source link

关于设置BN层的问题 #3

Closed FutureTwT closed 2 years ago

FutureTwT commented 2 years ago

您好,“A Comprehensive Empirical Study of Vision-Language Pre-trained Model for Supervised Cross-Modal Retrieval” 这个工作是一个十分有价值的工作。我仔细学习了您提供的实验代码。不过发现了一个小问题,这个问题可能会避免日后研究的一些异常情况。

您对于缺失场景的实现策略似乎是这样的: (1)一个batch内数据的图像和文本模态全部经过模型推理; (2)将推理后的输出结果进行采样,获取一定百分比的缺失数据用于计算损失函数。 这样的方式不需要提前划分好缺失数据集,更加简洁。但是这种实现方式似乎存在一个问题: 该方法必须假设在网络推理过程中,batch内不同样本之间是不能存在信息交互的,如果发生了信息交互,即使在输出后的结果中,舍弃掉一部分数据构建缺失并计算损失,那这些被舍弃的数据虽然没进行损失计算,但是在推理阶段对其他样本产生了信息交互,因此可能不算是严格意义上的数据缺失(即依然可见)。典型的信息交互,比如BN层,会计算Batch内的均值和方差。

zhixiongz commented 2 years ago

您好,

感谢您的关注,我认为这是一个十分有价值的问题。首先BN论文里写的计算batch里样本的均值和方差是在训练阶段才进行的,测试阶段使用的是滑动平均值固定BN层的参数进行test(pytorch实现),即训练阶段每个batch的均值的均值,以及每个batch的无偏估计量。在我们基于视觉-语言预训练模型的方法中,CLIP的源码中包含多个BatchNorm2D,但是我们采用非端到端的方式,只将CLIP作为一个backbone抽取特征而不进行训练,所以当前的方法并没有引入batch间缺失样本的信息交互。正如你所说,未来的研究中如果需要进行端到端训练(Backbone中包含BN层)或者考虑样本分布信息的情况时,我们的划分方法不具备普适性。

感谢您指出的问题,我认为很有价值,欢迎继续交流。 祝好, 志雄