Closed yingjianling closed 1 year ago
Hello!
感谢复现和支持PRO!
scores和sum_scores其实都试过,但用scores的BLEU一直不够高,各种尝试后发现,是在我们的设置下取sum最有效😂
谢谢答复,另外还有两个问题想问下:
客气了~
HH-RLHF{Alpaca,3}和HH-RLHF{ChatGPT,3}的BoN算法会使用三个candidate中最好的candidate来训练,“最好”则是根据我们使用的RM_{train}的打分最高来决定的。
相同的response不断repeat的情况,印象里PRO还算出现得比较少。可以考虑在生成时通过no_repeat_ngram或者repeat_penalty来缓解一下;但更根本的,个人认为需要在训练时注意让last token预测的next token是EOS,且这一步预测需要纳入到loss计算中。
供参考~
第二个问题我们也考虑到的,我们用的是下一轮的开头来替代EOS,起到终止本轮对话的作用,比如”\n### Human:“ ,自然也是加入到loss计算中的。这个方法在我们以前的实验中都可以有效防止这个现象,但是不知道是不是数据集的原因,我们在HH数据集上只做SFT都会出现这个问题。谢谢答复。
process_manager.py文件中计算loss的代码如下:
其中sft_loss部分gather的对象是sum_scores而不是scores,可以说下原因吗,实测下来即使beta=0.05,sft_loss也要比rank_loss大一个数量级。