🚀 句子相似度模型
本项目旨在使用自监督对比学习目标,在超大规模的句子级数据集上训练句子嵌入模型。通过微调预训练模型,该项目能够输出捕捉句子语义信息的向量,可用于信息检索、聚类或句子相似度任务。
🚀 快速开始
本模型旨在用作句子编码器。给定输入句子,它会输出一个捕捉句子语义信息的向量。该句子向量可用于信息检索、聚类或句子相似度任务。
✨ 主要特性
- 大规模数据集训练:使用超过10亿个句子对的数据集进行微调,确保模型能够学习到丰富的语义信息。
- 高效硬件支持:借助7个TPU v3-8进行训练,并得到Google的Flax、JAX和云团队成员关于高效深度学习框架的支持。
- 广泛的应用场景:输出的句子向量可用于信息检索、聚类或句子相似度任务。
📦 安装指南
使用此模型获取给定文本的特征,你可以使用 SentenceTransformers 库。
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('flax-sentence-embeddings/all_datasets_v3_roberta-large')
text = "Replace me by any text you'd like."
text_embbedding = model.encode(text)
🔧 技术细节
模型训练
项目使用自监督对比学习目标,在大规模句子级数据集上训练句子嵌入模型。具体步骤如下:
- 预训练模型:使用预训练的
roberta-large
模型。
- 微调模型:在超过10亿个句子对的数据集上进行微调,使用对比学习目标,即给定一对句子中的一个,模型应预测出在数据集中实际与之配对的句子。
超参数设置
- 训练步数:540k步
- 批次大小:1024(每个TPU核心128)
- 学习率预热:500
- 序列长度:128个标记
- 优化器:AdamW,学习率为2e-5
训练数据
模型使用多个数据集的组合进行微调,总句子对数超过10亿。每个数据集的采样概率在 data_config.json
文件中详细配置。
数据集 |
论文 |
训练元组数 |
GOOAQ: Open Question Answering with Diverse Answer Types |
论文 |
3,012,496 |
Stack Exchange |
- |
364,001 |
Flickr 30k |
论文 |
317,695 |
[COCO 2020](COCO 2020) |
论文 |
828,395 |
Code Search |
- |
1,151,414 |
TriviaqQA |
- |
73,346 |
SQuAD2.0 |
论文 |
87,599 |
Natural Questions (NQ) |
论文 |
100,231 |
Simple Wikipedia |
论文 |
102,225 |
Quora Question Pairs |
- |
103,663 |
Altlex |
论文 |
112,696 |
Wikihow |
论文 |
128,542 |
Sentence Compression |
论文 |
180,000 |
AllNLI (SNLI 和 MultiNLI |
论文 SNLI,论文 MultiNLI |
277,230 |
Eli5 |
论文 |
325,475 |
SPECTER |
论文 |
684,100 |
S2ORC 标题/摘要 |
论文 |
41,769,185 |
S2ORC 引用/引用 |
论文 |
52,603,982 |
S2ORC 引用/摘要 |
论文 |
116,288,806 |
PAQ |
论文 |
64,371,441 |
WikiAnswers |
论文 |
77,427,422 |
SearchQA |
- |
582,261 |
Yahoo Answers 标题/答案 |
论文 |
1,198,260 |
Yahoo Answers 标题/问题 |
论文 |
659,896 |
Yahoo Answers 问题/答案 |
论文 |
681,164 |
MS MARCO |
论文 |
9,144,553 |
Reddit conversationnal |
论文 |
726,484,430 |
总计 |
|
1,097,953,922 |