关于llm embedder中msmarco teacher_scores计算脚本的疑问
您好,我用您的teacher_scores计算脚本基于llama-7b-chat算了一下msmarco的teacher_scores,我并没对代码进行任何改动,但是分数和您给出的结果相差很大。请问您知道什么原因么?
下图左边是我运行您给定脚本的结果,右边是您给出的msmarco teacher_scores文件的结果。qid是1185869。
可以看到两份文件teacher_scores的差异体现在:
- teacher_scores的排序差异很大。我的positive doc的teacher_scores得分是-0.4101,几乎仍然是top1,但是您计算出的得分是-3.1269,排名很靠后。
- teacher_scores的分布区间差异很大。我的teacher_scores是在0-2之间,您生成的teacher_scores大约是在-1到-8之间。
期待您的回复!
hi, 谢谢你的关注。
msmarco和nq上的llm score和hard label高度一致,因为answer是从ground-truth document里抽取出来的,导致ground-truth document分数很高,别的分数很低。
在这两个数据集上直接用llm score效果不佳,因此我们做了额外的优化,即先通过llm score训了一个reranker,然后再用reranker的score训retriever。文件里的是最终reranker的score,建议直接用。
您好,感谢您的回答。
- "msmarco和nq上的llm score和hard label高度一致".
您是指在这两个数据集上的positive relevance label和llm score的top 1 label 基本一致?
- “先通过llm score训了一个reranker,然后再用reranker的score训retriever。“
您的意思是llm score训练出来的reranker生成的score会更好?我觉着这个事情是不是有点奇怪?llm score训练出来的reranker比llm本身更了解llm preference,这个有点反常理吧?
hi,
-
是的
-
reranker的分数更好是在训练retriever上更好,并不是说它更了解llm偏好。原因在于蒸馏retriever时理想的teacher的信号是有高分有低分,分数参差不齐(比如true negative是低分,false negative分数相应较高),而不是所有candidate得分均类似或者某一个candidate得分很高,别的都很低。 msmarco和nq上因为答案就摘抄自ground-truth passage,因此用答案生成概率作为teacher分数时,会导致gt passage的分数很高,别的都比较低,从而使蒸馏效果受限。reranker之所以会更好是因为其经过训练后能够输出有高有低的teacher分数(分辨true neg和false neg),能够起到更好的蒸馏作用。此外,我们论文中提出的stabilized distillation也是为了解决这个问题,两者协同工作,经验上能够训出更好的retriever。
确实,在msmarco上用rerank生成的score,信息量会比直接的llm score更加丰富。
另外我在您的数据中观察到如下现象:
- teacher score中的top 1 doc 大约有68%都不属于msmarco relevance里的positive doc。
- msmarco relevance里的positive doc在您生成的这份teacher score中平均排序是top9。
- 我人工检查了一些样例,teacher score中的top 1 doc大部分都很合理,甚至有一些实现了对msmarco标注的relevance信息的纠错。
1和2都表明,您生成的这份teacher score和msmarco标注的relevance标签区分度是很大的。3 表明这份teacher score数据的质量是很高的,挖掘到了更多的positive doc。
针对上面的现象,我有3个新的疑问: a. 我很好奇您的reranker的具体训练细节是什么?为什么能挖掘出差异化这么大的positive信息。比如训练rerank使用的数据集、用哪个模型做reranker的初始化、以及对比学习中使用的正负样本的来源,等等。 b. 您在其它训练集上也是这么处理的吗?还是只有msmarco和nq数据集上有这个问题? c. 为什么rerank生成的teacher score都是负数?
感谢您细致的工作,期待您的回复!
Hi, a. 是从deberta-large模型启动,在msmarco/nq的数据上训练1个epoch得到的;用了llm打分最高的和random sample的31个作为candidate,使用kl-divergence优化模型 b. 只有msmarco和nq c. 这个我没注意,有可能是和deberta这个模型自身的属性相关
您好,十分感谢您的积极回复! a. 请问是将nq和msmarco数据集混合在一起训练的吗? b. “kl-divergence优化模型”是指做对比学习的同时,让cls生成的score去拟合llm score么? c. 您这里训练rerank用的llm score是用哪个llm生成的?
Hi, a. 没,每个数据集单独训一个 b. 是的,query和passage拼一起,头上加一个cls,然后取cls的last_hidden_state后经过一个pooling层得到分数 c. 还是Llama-2-7b-chat
感谢您的积极回复!很厉害的工作,很棒的开源!👍👍👍
您好 我注意到您训练llm-embedder的代码里在用kl-divergence蒸馏teacher-score的时候,teacher-score和student-score都加上了temperature。
请问您在用llm score训练reranker的时候,kl-divergence上加这两个temperature了么?还有对比损失上temperature具体是多少?
hi, 训reranker时不需要加teacher/student temperature,同样也不需要加对比损失的temperature。只有用cos similarity训embedding模型时才需要设置对比损失的temperature