Shitao Xiao
Shitao Xiao
没有讲究。neg的数量最好大于train_group_size参数,这样避免因为neg太少导致对同一个neg重复采样
mteb有一份自己的数据:https://huggingface.co/datasets/mteb/amazon_reviews_multi
展示的是ndcg@10,如果测的是bge模型的话,需要加上指令, 参考脚本:https://github.com/FlagOpen/FlagEmbedding/tree/master/C_MTEB#evaluate-embedding-model
截断,或者设置更长的最大长度。
谢谢~ 1. 微调时修改model_name_or_path即可 2. 没有试过,但huggingface上有的模型应该都能支持 3. 如果想做分类,可以使用分类损失训练reranker,目前使用的是infocse损失做排序学习。
> 感谢回复~ 关于第三点分类问题可以麻烦具体说明一下有哪些要改的吗?还没有太理解要怎么做。 比如数据集的格式和组成需要修改吗?改loss是修改[reranker modeling代码](https://github.com/FlagOpen/FlagEmbedding/blob/master/FlagEmbedding/reranker/modeling.py)里面的哪部分呢? 还望大佬不吝赐教 @staoxiao 可以参考sentence transformers的训练方式:https://github.com/UKPLab/sentence-transformers/blob/master/examples/training/cross-encoder/training_nli.py
> @staoxiao 你好,我没理解你对第一点的回答,我看了你们bge-reranker的介绍,你们基于xlm-roberta-base进行了预训练才得到了bge-reranker,具体如下 【This reranker is initialized from [xlm-roberta-base](https://huggingface.co/xlm-roberta-base), and we train it on a mixture of multilingual datasets: > > Chinese: 788,491 text pairs from [T2ranking](https://huggingface.co/datasets/THUIR/T2Ranking), [MMmarco](https://github.com/unicamp-dl/mMARCO), [dulreader](https://github.com/baidu/DuReader), [Cmedqa-v2](https://github.com/zhangsheng93/cMedQA2),...
您好, 1.continual training指的是pretrain吗?如果是pretrain的话,如果下游没有很多的标签样本对,不建议做,因为pretrain之后必须过对比学习才能用来排序。直接fine-tune就可以。 2.图片打不开
微调使用的是对比学习,学习的是排序关系,不建议只依靠相似度变化来判断微调之后模型的好坏。可以看看正样本的排序位置的变化,计算排序指标MRR,recall等。
pretrain是语言建模任务,学习领域内知识,但是没有训练文本向量,做预训练不会直接对排序指标有影响,所以指标不会有一致的趋势。 pretrain之后不能直接用来做向量模型,所以我们后面用大量数据做了微调,建议在bge上直接微调。如果您做了预训练,要重复微调过程,具体要多少微调数据能达到更好的效果不太好评估。