Closed gufan-d closed 1 year ago
文中的Equation 7是feature extractor的优化目标,在我们的方法中,worst head和feature extractor是对抗训练的,其目标是在labeled data上和main head尽可能一致而在unlabeled data上找到与main head尽量不同的假设,因此这里的实现就是鼓励y_u_adv增大和y_u的差异
好的,感谢您的解答。我还有一点不清楚,公式7中用有监督loss减去无监督loss,代码中是用梯度翻转层和1. - F.softmax(y_u_adv, dim=1实现的吗?
梯度反转层实现了feature extractor和worst head之间的对抗,有监督loss减去无监督loss我个人感觉从假设空间的角度更好理解,就像上面说的在labeled data上和main head尽可能一致而在unlabeled data上找到与main head尽量不同的假设,具体实现是通过计算F.nll_loss(shift_log(1. - F.softmax(y_u_adv, dim=1)), prediction_u)
,这里与main head尽量不同的假设就是1. - F.softmax(y_u_adv, dim=1)
感谢您的解答!
@thucbx99 你好!对于这里的loss计算公式我有一个小地方不太明白:这个shift_log()的作用是什么?
因为log计算非常容易溢出,这里增加一个offset来提高数值稳定性
作者您好,抱歉打扰了。我刚接触半监督学习,您的DST工作对我启发很大,有关于公式7的实现有些不明白想请教您一下。
这里1. - F.softmax(y_u_adv, dim=1)是要鼓励loss_u向相反的方向收敛吗?不太明白 希望能得到您的指点,不胜感激!