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

关于DANN中的域鉴别器的域分类准确率 #267

Closed
YuGuilliman opened this issue May 23, 2024 · 7 comments
Closed

关于DANN中的域鉴别器的域分类准确率 #267

YuGuilliman opened this issue May 23, 2024 · 7 comments

Comments

@YuGuilliman
Copy link

你好,按照DANN的理论思想,域鉴别器在训练得比较好的情况下应该是不能够很好地区分数据是来自源域还是目标域,这意味着域分类的准确率曲线应该是由较高到接近50%。但我在DANN上用自己的数据做分类实验的时候,出现了以下的问题:
1.训练过程中域分类准确率达到了100%,但在目标域上的准确率有了较大的提升;
2.源域和目标域分享同一个标签空间,即类0和类1,但即使源域在类0和类1上都达到了100%的准确率,目标域上对类0的准确率只有不到30%,对类1的准确率达到了80+%;
我想问下有没有什么方法解决这样的问题,或者说源域和目标域存在着较大的条件概率分布之类的差异,导致迁移的效果不是很好?
b497b63618df0d69f800177c8439aac
c80a0f455d864ddd339d123b68e84b4

@YuGuilliman
Copy link
Author

我更改了训练过程中记录中间变量的方法,使用的AlexNet作为backbone,但是其他的部分,诸如loss的计算,domainDiscriminator,classifier的设置、总loss的计算都是直接照搬本repo的,any help will be greatful

@thucbx99
Copy link
Collaborator

我觉得可能有以下可以考虑检查的地方:
1)判别器的结构:因为DANN和GAN的思想是比较类似的,在两个网络的对抗过程中如果有一个网络明显强于另一个网络,则容易导致对抗过程效果下降,这里的感觉是判别器的能力可能太强了,可以检查一下是否是使用了带BatchNorm的版本,可以换为只使用Dropout的版本。
2)判别器和backbone的相对学习率:类似以上一点,这里两个网络的强弱关系也可能和学习的速度即learning rate有关。以DANN为例这实现在https://github.com/thuml/Transfer-Learning-Library/blob/master/tllib/alignment/dann.py (line63),可以检查一下现在参数hi设置为多少,我们的实验中1一般就比较合适了,也可以考虑再调大一些。
3)数据集是否平衡:标签为0和1的类别各占样本的多少比例呢,如果是有明显的不平衡,我们也发现DANN经常会做的不太好。这里可以考虑试一下CDAN。

@YuGuilliman
Copy link
Author

非常感谢你的建议!我会逐一进行尝试的

@YuGuilliman
Copy link
Author

额,我向问下关于在tgt_acc随着domain_acc上升而上升的情况是不是意味着存在着其他的特征,在鉴别器对域分类达到100%准确率的时候被捕捉到了,所以造成了tgt_acc的巨大提升;
另外,在没突变之前,domain_acc一直在50%左右,我想问下这是否正常

@Zewen-Shang
Copy link

我在dann的训练代码中没有找到梯度反转的部分,有没有可能是代码实现方法的问题?

@YuGuilliman
Copy link
Author

@Zewen-Shang ,有的,你没看仔细,这一部分有两块,一个是nn.Sequential写的discriminator,第二个是不同网络的对齐loss计算模块,这个模块里的forward的第一步是 grl(input),相当于做了梯度反转,然后再是用第一部分的discriminator做计算

@Zewen-Shang
Copy link

确实是这样,谢谢您

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

3 participants