يقوم هذا المستودع بتنفيذ زيادة حالة التبديل واسترجاعها السلبي الصعبة من الورقة "تحسين التعلم المتناقض لتضمينات الجملة مع إيجابيات مقدمة من الحالة والسلبيات المستردة". يؤدي الجمع بين النهجين مع SIMCSE إلى النموذج الذي يسمى التعلم التباين مع البيانات المعززة والاسترجاع لتضمين الجملة (البطاقات).
الجدول 1. مثال على جمل العينة التي تم تبديلها واسترجاعها.
| يكتب | جملة |
|---|---|
| إبداعي | تستمر قصة الكتاب الأول. |
| تبديل الحالات | تستمر قصة الكتاب الأول. |
| استرجاع | تبدأ القصة كقصة حب نموذجية. |
| عشوائي | هذا يقام كنتيجة مؤقتة. |
الجدول 2. الأداء في مهام تضمين الجملة
| ما قبل | الكون المثالى | STS12 | STS13 | STS14 | STS15 | STS16 | STSB | مريض R. | متوسط. |
|---|---|---|---|---|---|---|---|---|---|
| روبرتا قاعدة | Simcse + بطاقات | 72.65 | 84.26 | 76.52 | 82.98 | 82.73 | 82.04 | 70.66 | 78.83 |
| روبرتا لارج | Simcse + بطاقات | 74.63 | 86.27 | 79.25 | 85.93 | 83.17 | 83.86 | 72.77 | 80.84 |
رابط التنزيل: البطاقات-Roberta-Base (تنزيل ، 440 ميجابايت) ، بطاقات-روبتيتا-لارج (تنزيل ، 1.23 جيجابايت).
الجدول 3. الأداء في مهام الغراء
| ما قبل | الكون المثالى | mnli-m | QQP | qnli | SST-2 | كولا | STS-B | MRPC | RTE | متوسط. |
|---|---|---|---|---|---|---|---|---|---|---|
| DeBertav2-xxlarge | R-Drop + Switch-Case | 92.0 | 93.0 | 96.3 | 97.2 | 75.5 | 93.6 | 93.9 | 94.2 | 91.7 |
تم بناء هذا الريبو على أساس محولات Luggingface و Simcse. راجع المتطلبات. txt للحصول على إصدارات الحزمة.
# 1. Download wiki-1m dataset:
# - use wget -P target_folder in data/datasets/download_wiki.sh, and run
bash data/datasets/download_wiki.sh
# - modify train_file in scripts/bert/run_simcse_pretraining_v2.sh
# 2. preprocess wiki-1m dataset for negative retrieval
# - deduplicate the wiki-1m dataset, and (optionally) remove sentences with less than three words
# - modify paths in data/datasets/simcse_utils.py then run it to get model representations for all sentences in dataset
python data/datasets/simcse_utils.py
# 3. Download SentEval evaluation data:
# - use wget -P target_folder in data/datasets/download_senteval.sh, and run
bash data/datasets/download_senteval.shقبل تشغيل الكود ، قد يحتاج المستخدم إلى تغيير نقطة تفتيش النموذج الافتراضية ومسارات الإدخال/الإخراج ، بما في ذلك:
scripts/bert/run_simcse_grid.sh : السطر 42-50 (Train_file ، train_file_dedupl (اختياري) ، output_dir ، tensorboard_dir ، send_rep_cache_file ، sentval_data_dir)scripts/bert/run_simcse_pretraining.sh : السطر 17-20 (Train_file ، output_dir ، tensorboard_dir ، senteval_data_dir) ، السطر 45 (send_rep_cache_files) ، السطر 166-213 (model_name_orpath ، config_name). # MUST cd to the folder which contains data/, examples/, models/, scripts/, training/ and utils/
cd YOUR_CARDS_WORKING_DIRECTORY
# roberta-base
new_train_file=path_to_wiki1m
sent_rep_cache_file=path_to_sentence_representation_file # generated by data/datasets/simcse_utils.py
# run a model with a single set of hyper-parameters
# when running the model for the very first time, need to add overwrite_cache=True, this will produce a processed training data cache.
bash scripts/bert/run_simcse_grid.sh
model_type=roberta model_size=base
cuda=0,1,2,3 seed=42 learning_rate=4e-5
new_train_file= ${new_train_file} sent_rep_cache_file= ${sent_rep_cache_file}
dyn_knn=65 sample_k=1 knn_metric=cos
switch_case_probability=0.05 switch_case_method=v2
print_only=False
# grid-search on hyper-parameters
bash scripts/bert/run_simcse_grid.sh
model_type=roberta model_size=base
cuda=0,1,2,3 seed=42 learning_rate=1e-5,2e-5,4e-5
new_train_file= ${new_train_file} sent_rep_cache_file= ${sent_rep_cache_file}
dyn_knn=0,9,65 sample_k=1 knn_metric=cos
switch_case_probability=0,0.05,0.1,0.15 switch_case_method=v2
print_only=False
# roberta-large
bash scripts/bert/run_simcse_grid.sh
model_type=roberta model_size=large
cuda=0,1,2,3 seed=42 learning_rate=7.5e-6
new_train_file= ${new_train_file} sent_rep_cache_file= ${sent_rep_cache_file}
dyn_knn=9 sample_k=1 knn_metric=cos
switch_case_probability=0.1 switch_case_method=v1
print_only=False # provide train_file, output_dir, tensorboard_dir if different to the default values
model_name=name_of_saved_mdoel # e.g., roberta_large_bs128x4_lr2e-5_switchcase0.1_v2
bash ./scripts/bert/run_simcse_pretraining.sh
model_name_or_path= ${output_dir} / ${model_name} model_name= ${model_name} config_name= ${output_dir} / ${model_name} /config.json
train_file= ${train_file} output_dir= ${output_dir} /test_only tensorboard_dir= ${tensorboard_dir}
model_type=roberta model_size=base do_train=False
cuda=0 ngpu=1لأسباب غير معروفة ، كانت مجموعة من المعلمات المفرطة النموذجية الجيدة مختلفة عند العمل مع Transformers Huggingface V4.11.3 و V4.15.0. تم البحث عن الشبكة المفرطة المذكورة أعلاه على الشبكة على المحولات 4.11.3.
@inproceedings{cards,
title = "Improving Contrastive Learning of Sentence Embeddings with Case-Augmented Positives and Retrieved Negatives",
author = "Wei Wang and Liangzhu Ge and Jingqiao Zhang and Cheng Yang",
booktitle = "The 45th International ACM SIGIR Conference on Research and Development in Information Retrieval (SIGIR)",
year = "2022"
}