Japanese SimCSE (BERT-base)
日本語のSimCSEの日本語モデルです。cl-tohoku/bert-base-japanese-v2
をベースに、日本語自然言語推論データセットであるJSNLIで、学習を行いました。
Usage (Sentence-Transformers)
sentence-transformersを使って、このモデルを簡単に利用することができます。
トークナイズのために、fugashiとunidic-liteが必要です。
下記のように、pipでsentence-transformersとfugashi, unidic-liteをインストールしてください。
pip install -U fugashi[unidic-lite]
pip install -U sentence-transformers
下記のようにモデルをロードして、文を密なベクトルに変換することができます。
from sentence_transformers import SentenceTransformer
sentences = [
"PKSHA Technologyは機械学習/深層学習技術に関わるアルゴリズムソリューションを展開している。",
"この深層学習モデルはPKSHA Technologyによって学習され、公開された。",
"広目天は、仏教における四天王の一尊であり、サンスクリット語の「種々の眼をした者」を名前の由来とする。",
]
model = SentenceTransformer('pkshatech/simcse-ja-bert-base-clcmlp')
embeddings = model.encode(sentences)
print(embeddings)
学習時の損失関数にcosine類似度を使っているため、下流のタスクでcosine類似度を類似度計算に使うことをおすすめします。
Model Detail
Tokenization
tohoku/bert-base-japanese-v2
と同じトークナイザーを使用しています。詳しくは、tohoku/bert-base-japanese-v2
のページをご覧ください。
Training
tohoku/bert-base-japanese-v2
を初期値に設定し、日本語自然言語推論データセットであるJSNLIのtrain setで学習を行いました。 20 epoch 学習を行い、JSTSのtrain setの一部を検証データにして最もSpearmanの順位相関係数が高かったモデルのチェックポイントを公開しています[^1]。
Training Parameters
Parameter | Value |
---|---|
pooling_strategy | [CLS] -> single fully-connected layer |
max_seq_length | 128 |
with hard negative | true |
temperature of contrastive loss | 0.05 |
Batch size | 200 |
Learning rate | 1e-5 |
Weight decay | 0.01 |
Max gradient norm | 1.0 |
Warmup steps | 2012 |
Scheduler | WarmupLinear |
Epochs | 20 |
Evaluation steps | 250 |
ライセンス
このモデルは Creative Commons Attribution-ShareAlike 4.0の下でライセンスされています。
[^1]: モデル学習時には、JGLUEのテストデータが公開されていなかったため、プライベートな評価データとしてJGLUEのdev setを使用していました。そのため、玉突き的にJGLUEのtrain setでcheckpointを選択しています。