-
Notifications
You must be signed in to change notification settings - Fork 834
Open
Description
背景:
请问我做bge-m3的finetune,训练数据是自有的分类数据,最终finetune样本示例:
{"query": "这商品真差,质量一点也不好", "pos": ["评价非常差,评分应为1"], "neg":["评价非常高,评分应为5","评价还不错,评分应为4","评价一般,评分应为3","评价一般,评分应为2"]
问题:
- 我理解finetune阶段如果negatives_cross_device设置为true,则会采样其他样本的neg扩充negatives,但元数据是5分类,大概率采样到当前样本对应的pos?这个需要去修改训练参数吗?
- 但官方bge-m3的finetune脚本https://github.com/FlagOpen/FlagEmbedding/blob/master/examples/finetune/embedder/encoder_only/m3_same_dataset.sh,里面也有一个分类任务/example_data/classification-no_in_batch_neg,看起来negatives_cross_device会产生通用的问题,导致计算nce loss的时候负样本里大概率包含正样本?
- 通过2中脚本的设置,我做了消融实验(数据包含ABCD四标签,均剔除一个标签D的数据作为outdomain测试),用原始bge-m3,自有监督数据训练bge-m3-w-label、自有数据+bge-m3-data混合训练。发现加上自有数据后,在ABC分类上比bge-m3都要强不少,但是D的分类上,加入自有数据随着step增加,性能会不断下降且低于原始bge-m3。请问有什么合适的方案去减少这种知识遗忘吗?在D分类上能尽量不损失性能。
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels