🚀 句子相似度模型
本項目旨在使用自監督對比學習目標,在非常大的句子級數據集上訓練句子嵌入模型。通過微調預訓練模型,我們得到了能夠有效捕捉句子語義信息的模型,可用於信息檢索、聚類或句子相似度任務。
🚀 快速開始
本模型可作為句子編碼器使用。給定輸入句子,它會輸出一個捕捉句子語義信息的向量。句子向量可用於信息檢索、聚類或句子相似度任務。
✨ 主要特性
- 強大的語義捕捉能力:輸出的向量能夠有效捕捉句子的語義信息。
- 多場景適用:可用於信息檢索、聚類或句子相似度等多種任務。
📦 安裝指南
使用此模型需要安裝 SentenceTransformers 庫。
💻 使用示例
基礎用法
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('flax-sentence-embeddings/reddit_single-context_mpnet-base')
text = "Replace me by any text you'd like."
text_embbedding = model.encode(text)
📚 詳細文檔
模型描述
本項目旨在使用自監督對比學習目標,在非常大的句子級數據集上訓練句子嵌入模型。我們使用了預訓練的 'mpnet-base' 模型,並在 7 億個句子對的數據集上進行了微調。我們採用對比學習目標:給定一對句子中的一個句子,模型應從一組隨機採樣的其他句子中預測出在數據集中實際與之配對的句子。
我們在由 Hugging Face 組織的 使用 JAX/Flax 進行自然語言處理和計算機視覺的社區周 期間開發了此模型。我們將此模型作為 使用 10 億個訓練對訓練有史以來最好的句子嵌入模型 項目的一部分進行開發。我們受益於高效的硬件基礎設施來運行該項目:7 個 TPU v3 - 8,以及谷歌的 Flax、JAX 和雲團隊成員在高效深度學習框架方面的指導。
預期用途
我們的模型旨在用作句子編碼器。給定輸入句子,它會輸出一個捕捉句子語義信息的向量。句子向量可用於信息檢索、聚類或句子相似度任務。
訓練過程
預訓練
我們使用預訓練的 'mpnet-base' 模型。有關預訓練過程的更詳細信息,請參考模型卡片。
微調
我們使用對比目標對模型進行微調。形式上,我們從批次中的每個可能的句子對計算餘弦相似度。然後通過與真實對進行比較來應用交叉熵損失。
超參數
我們在 TPU v3 - 8 上訓練模型。我們使用 1024 的批次大小(每個 TPU 核心 128)進行了 540k 步的訓練。我們使用了 500 的學習率預熱。序列長度限制為 128 個標記。我們使用了 AdamW 優化器,學習率為 2e - 5。完整的訓練腳本可在此存儲庫中找到。
訓練數據
我們使用多個數據集的拼接來微調我們的模型。句子對的總數超過 7 億個句子。我們根據加權概率對每個數據集進行採樣,配置詳情見 data_config.json
文件。我們在構建數據集時僅使用第一個上下文響應。
屬性 |
詳情 |
模型類型 |
基於預訓練的'mpnet - base'模型微調的句子嵌入模型 |
訓練數據 |
多個數據集拼接,總數超過 7 億個句子對,具體數據集如 [Reddit conversationnal](https://github.com/PolyAI - LDN/conversational - datasets/tree/master/reddit) ,有 726,484,430 個訓練元組 |