Closed dabao12 closed 1 year ago
你好,
非常感谢指出这个问题!我们在一开始测试了论文Training and Testing中所说的三个模块同时共享一个编码器的Joint模型,但是在论文提交后做的后续实验中发现其虽然表现不错,但是性能并不稳定。主要是由于Switch模块在训练目标上其实和Tagger / Generator模块有较大差异。所以后面为了能够使其训练结果稳定且易于复现,决定将三个模块的编码器进行拆分。
这样我们就只通过论文中的(4)式对三个模块的Loss根据相对大小进行了动态的平衡,因此我们之前认为三者Loss提供了它们的系数平衡的依据也可以称其为Joint方式,所以没有在论文中修改叫法。且由于发现这样做的效果反而更好,所以将其作为了最终的版本。但是我们错误地没有在Camera Ready版本中修改论文Training and Testing中关于shared encoder部分的描述,所以非常抱歉在这里因为我们的论文以及Joint的名字对您产生了误导。
为了能够说明共享编码器版本模型的性能问题,我们在该代码库中新开了一个分支shared,该分支中的joint模型使用了共享的编码器。我们对其原型进行了十次测试,其中最高的Correction性能是(F0.5=43.59),最低是(F0.5=42.21)。另外由于模型的特性,Switch模块的错误会在后面累计,我们希望Switch模块尽可能的准确,因此在Trainer的代码中,Switch的Loss以及保存依据前都加了相对更大权重参数。
后续我们会在Arxiv版本的论文中对现在的问题进行修改。再次感谢您指出了这个问题!如果还有其他问题,欢迎回复!
非常感谢您的工作,我对您的工作很感兴趣!我在读了您的论文之后看了下代码,我在论文中读到,训练方式可以分为联合和单独训练,区别好像是否合在一起和共享编码器,但是在代码中我发现在联合训练时,应该是各自模块的数据送到各自的模块的模型,每个模块都实例化了一个model它们彼此之间好像并没有联系,只是将着三个模块放到了一个大的模型下面,那么这个联合训练它们共享的是什么呢?我对此感到迷惑,希望您可以在方便的时候帮我解答下,谢谢您。