Stay Hungry,Stay Foolish!

Train and Fine-Tune Sentence Transformers Models

 

https://huggingface.co/blog/how-to-train-sentence-transformers

https://www.sbert.net/docs/sentence_transformer/training_overview.html#why-finetune

 

https://github.com/fanqingsong/fine-tuning-sentence-transformers/tree/main

 

这是一篇关于 Hugging Face 官方博客的文章,主要介绍了如何使用 sentence-transformers 库对模型进行训练和微调。

文章的核心观点是:虽然预训练模型功能强大,但为了在特定任务上获得最佳效果,微调是必不可少的。文章详细阐述了微调 Sentence Transformers 模型的完整流程。

🎯 为什么要微调 (Why Finetune?)

预训练模型(如 BERT)通常是通用的,并不理解特定任务中“相似性”的具体含义。微调可以让模型适应具体的应用场景,例如:

  • 分类任务:让语义相似的文本产生相似的向量嵌入。
  • 语义文本相似度 (STS):根据语义的细微差别来区分文本。
  • 语义搜索:侧重于优化查询与文档之间的匹配效果。

🛠️ 训练核心组件 (Training Components)

微调一个 Sentence Transformer 模型主要涉及以下几个关键部分:

  • 模型 (Model):通常由一个 Transformer 模块(如 BERT, RoBERTa)和一个 Pooling 模块组成。也支持多模态模型。
  • 数据集 (Dataset):可以从 Hugging Face Hub 或本地加载。数据格式(列名)需要与所选的损失函数相匹配。例如,非标签列(如 "sentence1")是输入,标签列(如 "score")是目标值。
  • 损失函数 (Loss Function):没有通用的最佳选择,需要根据数据和任务来决定。常见的有 CoSENTLoss, MultipleNegativesRankingLoss, CosineSimilarityLoss 等。
  • 训练参数 (Training Arguments):使用 SentenceTransformerTrainingArguments 来配置学习率、Batch size、训练轮数(Epochs)等超参数。
  • 评估器 (Evaluator):在训练期间或结束后评估模型性能,例如使用 EmbeddingSimilarityEvaluator 来评估 STS 任务。
  • 训练器 (Trainer)SentenceTransformerTrainer 是核心,它将以上所有组件整合在一起执行训练。

🚀 高级训练技巧

  • 多数据集训练 (Multi-Dataset Training):支持同时使用多个数据集进行训练,这能有效提升模型的泛化能力。可以为不同数据集指定不同的损失函数,并设置采样策略(如按比例或轮询)。
  • 最佳基础模型 (Best Base Models):文章基于在 14 个文本相似度任务上的表现,列出了推荐的基础模型。其中 microsoft/mpnet-base 表现最佳,其次是 ernie-2.0-endeberta-base

📢 重要更新

  • 弃用旧方法:旧版的 model.fit() 方法已被标记为弃用(Deprecated)。
  • 推荐新方法:官方强烈建议直接使用 SentenceTransformerTrainer 进行训练,因为它提供了更多的控制权和功能支持。
posted @ 2026-09-16 11:12  lightsong  阅读(3)  评论(0)    收藏  举报
千山鸟飞绝,万径人踪灭