Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于设置BN层的问题 #3

Closed
FutureTwT opened this issue Mar 10, 2022 · 1 comment
Closed

关于设置BN层的问题 #3

FutureTwT opened this issue Mar 10, 2022 · 1 comment

Comments

@FutureTwT
Copy link

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

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

@zhixiongz
Copy link
Owner

您好,

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants