FrankWork / fudan_mtl_reviews

TensorFlow implementation of the paper `Adversarial Multi-task Learning for Text Classification`
178 stars 40 forks source link

关于adv+diff与adv的实验结果 #10

Open yuanyuansiyuan opened 6 years ago

yuanyuansiyuan commented 6 years ago

你好,两个问题

  1. 我重跑三个实验得到的error rate %结果是 mtl 13.77 / 您的结果 13.75 mtl +adv 12.73 /您的结果 12.79 mtl + adv + diff 12.86 /您的结果 12.70 可以看到加上diff的结果反而略差于不加的。根据您的代码我在mtl_model.py的三种实现: mtl : loss = loss_ce + FLAGS.l2_coefloss_l2 mtl +adv : loss = loss_ce + 0.05 loss_adv + FLAGS.l2_coef (loss_l2 + loss_adv_l2) mtl + adv +diff : loss = loss_ce + 0.05loss_adv + FLAGS.l2_coef*(loss_l2+loss_adv_l2) + loss_diff 请问只需要设置这三个目标函数即可么? 2.由于实验数据没有validation,实际上train的时候得到的best acc也就是在test数据集上得到的acc,两者应该是完全一致的。但我用自己处理的两份数据跑完train之后,重新载入ckpt 进行test, test与train的acc结果总是不一致,找不到原因,可否请您提示下原因?【载入的ckpt文件确实是我每次train后生成的best epoch的结果】 非常感谢!
yuanyuansiyuan commented 6 years ago

观察了自己跑的结果,loss基本上下降趋势,应该没有问题

JaysonAlbert commented 5 years ago

@yuanyuansiyuan 我自己fork了一份,改了部分代码。我发现,如果把loss_ce,loss_adv,loss_diff三种损失分开画出来的话,整体loss和loss_ce都是下降的,但是loss_adv和loss_diff大多数情况下是上升的。

而且这个源码中的实现,loss_adv的参数用0.05以及loss_diff的系数用1,都会导致这两个loss的数量级很小,相对于loss_ce来说基本上可以忽略不计。

JaysonAlbert commented 5 years ago

@yuanyuansiyuan 我疑惑的是,假如说loss_adv和loss_diff是上升的,是不是意味着多抗训练和正交性约束实际上是没有效果的?

XXXZJJ commented 4 years ago

自己复现了一遍,也是,没有提升反而下降,如果把正交约束变为单侧下降的没那么厉害。