Shitao Xiao
Shitao Xiao
您好,我们采取的是来自dulreader的数据:https://aclanthology.org/2022.emnlp-main.357.pdf  corpurs是query对应的passage,以及来自dulreader_retrieval的passages。 这可能并不是最佳的形式,欢迎对测试数据的清洗和更新。
您好,是的,完全通过相似度卡阈值可能会有一些bad case。可以训练一个分类模型,去判断是否相关。
target指的是正样本的位置,正样本总在第一个位置,是一个数字,不是每一个样本的标签。可以参考torch中cross_entropy计算的参数。
> 你好,我也对此有疑惑。感觉训练过程和使用过程不是很对齐。训练过程中,0表示正样本的位置,所有的Label都是0,与Logits计算交叉熵损失,会不会导致模型计算Logits无脑输出0。而在使用过程中,又是使用Logits作为相似度分数。 使用下标作为标签和使用0,1作为样本是否相关的标签,有什么取舍的考虑吗? 训练损失为交叉熵,目标是使正样本的概率大于负样本。0并不是指让模型输出的Logits为0。标签0表示正样本在第一个位置,交叉熵会使得该位置的概率最大化。
document长度一般有多少?我看参数里passage_max_len和query_max_len一样都只设了100。
> 用这个训练框架,搞了一个星期左右,怎么训练,loss都不行,后来还是自己写一个训练框架吧,感觉bge的finetune的loss,可能有点小问题,这是我的仓库代码https://github.com/yuanzhoulvpi2017/SentenceEmbedding 感谢反馈~ BGE使用的是对比学习常用的loss: InfoNCE, 会将batch内部所有的其他文本视为neg,这能增加负样本数量,但同时数据处理不当容易出现伪负例。大致看了一下该项目,只使用了neg里的作为负样本,loss是bpr形式的pairwise loss。我们后期会考虑增加此类loss,也欢迎您提交PR。
您好,目前版本模型输入的最大token数是512.
1. 效果上视具体情况而定,有时先微调再合并有时候可能会比合并数据微调效果好,有时也不如。LM_Cocktail的优势在于方便,对于一个新任务(任务3),不需要再去把任务1和任务2的数据再混合起来训练,可以直接在任务3上训练后合并新模型。同时,合并时的比例可控,可以通过调节比例平衡三种任务的效果。如果上合并数据训练的话,在不同比例上每次都要训一个模型也比较麻烦。 2. 如上所说,意义在于保持模型原有的在其他领域的能力,如果想同时保持多个领域的能力,可以进行合并。如果合并后垂域效果下降很多,可以把垂域模型的融合比例提高。可以找到一个平衡点,在垂域效果不下降的时候,提升其他领域能力。 如果只是单纯想针对一个领域训练一个专门模型,不需要模型合并。
You need to create a custom model which uses baichuan API to generate embedding. For more details, you can refer to [`Using a custom model`](https://github.com/FlagOpen/FlagEmbedding/tree/master/C_MTEB)
几千条大致就能微调,不过高质量数据越多越好。