🚀 HPD-MiniLM-F128
本倉庫包含了我們論文 Compressing Sentence Representation for Semantic Retrieval via Homomorphic Projective Distillation 的預訓練模型。該句子嵌入模型僅包含 2300 萬個參數,模型大小僅為 87MB。
🚀 快速開始
本項目提供了一個輕量級的句子嵌入模型,適用於語義檢索等任務。你可以按照以下步驟快速使用該模型:
pip install -U sentence-transformers
安裝完成後,你可以輕鬆加載我們的模型:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('Xuandong/HPD-MiniLM-F128')
然後,你可以使用我們的模型將句子編碼為嵌入向量:
sentences = ['He plays guitar.', 'A street vendor is outside.']
sentence_embeddings = model.encode(sentences)
for sentence, embedding in zip(sentences, sentence_embeddings):
print("Sentence:", sentence)
print("Embedding:", embedding)
print("")
✨ 主要特性
- 輕量級模型:句子嵌入模型僅包含 2300 萬個參數,模型大小僅為 87MB,便於部署和使用。
- 高質量表示:提出了同態投影蒸餾(HPD)方法,在學習壓縮句子嵌入的同時,保留了句子表示的質量。
- 廣泛適用性:該模型可以將句子和段落映射到 128 維的密集向量空間,可用於聚類或語義搜索等任務。
📦 安裝指南
如果你已經安裝了 sentence-transformers,使用此模型將變得非常簡單:
pip install -U sentence-transformers
💻 使用示例
基礎用法
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('Xuandong/HPD-MiniLM-F128')
sentences = ['He plays guitar.', 'A street vendor is outside.']
sentence_embeddings = model.encode(sentences)
for sentence, embedding in zip(sentences, sentence_embeddings):
print("Sentence:", sentence)
print("Embedding:", embedding)
print("")
高級用法
📚 詳細文檔
概述
我們提出了同態投影蒸餾(HPD) 方法來學習壓縮句子嵌入。我們的方法通過可學習的投影層增強小型 Transformer 編碼器模型,以生成緊湊的表示,同時模仿大型預訓練語言模型,以保留句子表示的質量。
細節
這是一個 sentence-transformers 模型:它將句子和段落映射到 128 維的密集向量空間,可用於聚類或語義搜索等任務。
教師模型是 princeton-nlp/sup-simcse-roberta-large
,學生模型是 nreimers/MiniLM-L6-H384-uncased
。
評估結果
我們在語義文本相似度(STS)任務上評估了我們的模型。結果如下:
STS12 |
STS13 |
STS14 |
STS15 |
STS16 |
STS-B |
SICK-R |
平均 |
74.94 |
84.52 |
80.25 |
84.87 |
81.90 |
84.98 |
81.15 |
81.80 |
訓練
有關訓練的詳細信息,請參考 GitHub 倉庫 (https://github.com/XuandongZhao/HPD)。
完整模型架構
SentenceTransformer(
(0): Transformer({'max_seq_length': 512, 'do_lower_case': False}) with Transformer model: BertModel
(1): Pooling({'word_embedding_dimension': 384, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False})
(2): Dense({'in_features': 384, 'out_features': 128, 'bias': True, 'activation_function': 'torch.nn.modules.activation.Tanh'})
)
引用
如果你在工作中使用了 HPD,請引用我們的論文:
@article{zhao2022compressing,
title={Compressing Sentence Representation for Semantic Retrieval via Homomorphic Projective Distillation},
author={Zhao, Xuandong and Yu, Zhiguo and Wu, Ming and Li, Lei},
journal={arXiv preprint arXiv:2203.07687},
year={2022}
}
📄 許可證
本項目採用 Apache-2.0 許可證。