license: apache-2.0
HPD-MiniLM-F128
本仓库包含我们论文《通过同态投影蒸馏压缩语义检索的句子表示》的预训练模型。该句子嵌入模型仅包含2300万参数,模型大小仅为87MB。
概述
我们提出**同态投影蒸馏(HPD)**方法来学习压缩的句子嵌入。我们的方法通过为小型Transformer编码器模型添加可学习的投影层来生成紧凑的表示,同时模仿大型预训练语言模型以保持句子表示的质量。
详情
这是一个sentence-transformers模型:它将句子和段落映射到一个128维的密集向量空间,可用于聚类或语义搜索等任务。
教师模型是princeton-nlp/sup-simcse-roberta-large
,学生模型是nreimers/MiniLM-L6-H384-uncased
。
使用方法
安装sentence-transformers后,使用此模型变得非常简单:
pip install -U sentence-transformers
安装完成后,只需加载我们的模型:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('Xuandong/HPD-MiniLM-F128')
然后,您可以使用我们的模型将句子编码为嵌入向量:
sentences = ['他弹吉他。', '一个街头小贩在外面。']
sentence_embeddings = model.encode(sentences)
for sentence, embedding in zip(sentences, sentence_embeddings):
print("句子:", sentence)
print("嵌入向量:", embedding)
print("")
评估结果
我们在语义文本相似度(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={通过同态投影蒸馏压缩语义检索的句子表示},
author={赵宣栋 and 余志国 and 吴明 and 李磊},
journal={arXiv preprint arXiv:2203.07687},
year={2022}
}