akiFQC's picture
modified typo
7bca179

Japanese SimCSE (BERT-base)

日本語のSimCSEの日本語モデルです。cl-tohoku/bert-base-japanese-v2をベースに、日本語自然言語推論データセットであるJSNLIで、学習を行いました。

Usage (Sentence-Transformers)

sentence-transformersを使って、このモデルを簡単に利用することができます。

トークナイズのために、fugashiunidic-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を選択しています。