🚀 multi-qa_v1-distilbert-mean_cos
SentenceTransformers 是一套模型和框架,可根據給定數據訓練並生成句子嵌入向量。生成的句子嵌入向量可用於聚類、語義搜索等任務。本模型使用預訓練的 distilbert-base-uncased 模型,並通過孿生網絡設置和對比學習目標進行訓練。我們使用 StackExchange 的問答對作為訓練數據,使模型在問答嵌入相似度方面表現更穩健。對於此模型,我們使用隱藏狀態的均值池化作為句子嵌入。
本模型由 Hugging Face 組織的 JAX/Flax 用於 NLP 和 CV 的社區周 期間開發。該模型是 使用 10 億訓練對訓練有史以來最好的句子嵌入模型 項目的一部分。我們藉助高效的硬件基礎設施(7 個 TPU v3 - 8)以及谷歌 Flax、JAX 和雲團隊成員在高效深度學習框架方面的幫助來運行該項目。
🚀 快速開始
本模型旨在用作搜索引擎的句子編碼器。給定輸入句子,它將輸出一個捕獲句子語義信息的向量。該句子向量可用於語義搜索、聚類或句子相似度任務。
✨ 主要特性
- 作為句子編碼器,能輸出捕獲句子語義信息的向量。
- 適用於語義搜索、聚類或句子相似度等任務。
📦 安裝指南
此部分原文檔未提及具體安裝步驟,跳過。
💻 使用示例
基礎用法
以下是如何使用 SentenceTransformers 庫來獲取給定文本特徵的示例:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('flax-sentence-embeddings/multi-qa_v1-distilbert-mean_cos')
text = "Replace me by any question / answer you'd like."
text_embbedding = model.encode(text)
📚 詳細文檔
預期用途
我們的模型旨在用作搜索引擎的句子編碼器。給定輸入句子,它輸出一個捕獲句子語義信息的向量。該句子向量可用於語義搜索、聚類或句子相似度任務。
訓練過程
預訓練
我們使用預訓練的 distilbert-base-uncased 模型。有關預訓練過程的更多詳細信息,請參考該模型的卡片。
微調
我們使用對比目標對模型進行微調。具體來說,我們計算批次中每個可能句子對的餘弦相似度,然後通過與真實對進行比較來應用交叉熵損失。
超參數
我們在 TPU v3 - 8 上訓練模型。我們使用 1024 的批次大小(每個 TPU 核心 128)進行 80k 步的訓練。我們使用 500 的學習率預熱。序列長度限制為 128 個標記。我們使用 AdamW 優化器,學習率為 2e - 5。完整的訓練腳本可在當前存儲庫中找到。
訓練數據
我們使用多個 Stackexchange 問答數據集的串聯來微調我們的模型。還使用了 MSMARCO、NQ 等問答數據集。
數據集 |
論文 |
訓練元組數量 |
Stack Exchange QA - Title & Answer |
- |
4,750,619 |
Stack Exchange |
- |
364,001 |
TriviaqQA |
- |
73,346 |
SQuAD2.0 |
paper |
87,599 |
Quora Question Pairs |
- |
103,663 |
Eli5 |
paper |
325,475 |
PAQ |
paper |
64,371,441 |
WikiAnswers |
paper |
77,427,422 |
MS MARCO |
paper |
9,144,553 |
GOOAQ: Open Question Answering with Diverse Answer Types |
paper |
3,012,496 |
Yahoo Answers Question/Answer |
paper |
681,164 |
SearchQA |
- |
582,261 |
Natural Questions (NQ) |
paper |
100,231 |
🔧 技術細節
本模型使用預訓練的 distilbert-base-uncased 模型,通過孿生網絡設置和對比學習目標進行訓練。使用 StackExchange 的問答對作為訓練數據,以提高模型在問答嵌入相似度方面的性能。在微調過程中,計算批次中句子對的餘弦相似度並應用交叉熵損失。使用 AdamW 優化器和特定的超參數(如學習率、批次大小等)在 TPU v3 - 8 上進行訓練。
📄 許可證
此部分原文檔未提及許可證信息,跳過。