🚀 HPD-MiniLM-F128
このリポジトリには、論文 Compressing Sentence Representation for Semantic Retrieval via Homomorphic Projective Distillation の事前学習モデルが含まれています。文章埋め込みモデルはわずか2300万個のパラメータを持ち、モデルサイズはわずか87MBです。
🚀 クイックスタート
このリポジトリには、論文 Compressing Sentence Representation for Semantic Retrieval via Homomorphic Projective Distillation の事前学習モデルが含まれています。文章埋め込みモデルは、わずか2300万個のパラメータを持ち、モデルサイズはわずか87MBです。
✨ 主な機能
我々は、同型射影蒸留(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}
}
📦 インストール
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("")
📄 ライセンス
このモデルは、Apache-2.0ライセンスの下で提供されています。