Skip to content

bge-m3使用带标注数据finetue,negatives_cross_device设置问题 #1400

@KeepGoingCSU

Description

@KeepGoingCSU

背景:
请问我做bge-m3的finetune,训练数据是自有的分类数据,最终finetune样本示例:
{"query": "这商品真差,质量一点也不好", "pos": ["评价非常差,评分应为1"], "neg":["评价非常高,评分应为5","评价还不错,评分应为4","评价一般,评分应为3","评价一般,评分应为2"]

问题:

  1. 我理解finetune阶段如果negatives_cross_device设置为true,则会采样其他样本的neg扩充negatives,但元数据是5分类,大概率采样到当前样本对应的pos?这个需要去修改训练参数吗?
  2. 但官方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的时候负样本里大概率包含正样本?
  3. 通过2中脚本的设置,我做了消融实验(数据包含ABCD四标签,均剔除一个标签D的数据作为outdomain测试),用原始bge-m3,自有监督数据训练bge-m3-w-label、自有数据+bge-m3-data混合训练。发现加上自有数据后,在ABC分类上比bge-m3都要强不少,但是D的分类上,加入自有数据随着step增加,性能会不断下降且低于原始bge-m3。请问有什么合适的方案去减少这种知识遗忘吗?在D分类上能尽量不损失性能。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions