推理训练数据与标签不一致
NUAAZXY opened this issue · 4 comments
NUAAZXY commented
请问一下,我理解的knn-mt是让训练好的模型对训练数据进行推理,从而记录下key-value值。但是有没有可能推理时的输出并不一定和真实标签结果相同,从而导致知识库中key-value个数不同或者不匹配的问题呢?或者这个问题也有解决只是我对代码理解没有到位。
Maxwell-Lyu commented
这个问题是您多虑了。
我们建立知识库的过程,和模型训练时的validate步骤高度近似,这部分的计算不是自回归生成,而是Teacher Forcing解码,您可以理解成直接对模型进行forward计算,词预测位置的数量和label的数量是强制一致的。
您也可以这样理解:validate时是会计算loss的,这强制要求一个预测一个label,而预测对应的隐层表示就是key,label作为value,刚好一一对应。
我们早期内部测试时,曾遇到过不一致的情况,但不是knn-mt的问题,而是模型本身有special token。例如,多语言机器翻译模型常常会有居首的language tag。kNN-BOX目前使用的实现,通过直接用loss计算的mask规避了这种问题,因此您不需要担心。
NUAAZXY commented
您一说Teacher Forcing我就明白了具体方法了。但是知识库用Teacher Forcing得出的hidden state放入知识库会不会导致这部分的数据其实并不准确,有很多文章也指出了使用Teacher Forcing和推理时使用的Student Forcing是有gap的。如果过滤掉这些预测得到的结果和标签不一致的key-value效果会不会更好呢?同时也感谢您之前的解答
Maxwell-Lyu commented
- Teacher Forcing和Auto-regressive是否存在GAP
是的,我们注意到有这类的工作。这方面的研究主要是在训练时使用scheduled sampling,按照一定概率将teacher-forcing的输入,换成模型预测的结果,这种操作被认为更加接近模型的推理过程。但是很遗憾,在我调研的时候,这些工作所带来的提升很小,最多不超过1个BLEU - 如果过滤掉这些预测得到的结果和标签不一致的key-value效果会不会更好
你的着眼点不对,而且情况是两方面的。这个teacher forcing真正影响的是key,让key和query之间产生了gap,一个来自teacher-forcing,一个来自auto-regressive,消灭这个gap也许能提升。
而结果和标签不一致,究竟是模型能力不足但标签正确,还是标签为噪声,这两种情况的判断和取舍则是另一个问题的难点。直接将模型做不对的预测位置丢弃很显然是不行的,违背了知识库“为模型补充知识”的动机。
NUAAZXY commented
我悟了,十分感谢!