ที่เก็บนี้ใช้การเพิ่มกรณีสวิตช์และการดึงข้อมูลเชิงลบอย่างหนักจากกระดาษ การรวมทั้งสองวิธีเข้ากับ SIMCSE นำไปสู่แบบจำลองที่เรียกว่าการเรียนรู้แบบตรงกันข้ามกับข้อมูลเพิ่มเติมและดึงข้อมูลสำหรับการฝังประโยค (การ์ด)
ตารางที่ 1. ตัวอย่างของการสลับเคสและการดึงประโยคตัวอย่าง
| พิมพ์ | ประโยค |
|---|---|
| ต้นฉบับ | เรื่องราวของหนังสือเล่มแรกยังคงดำเนินต่อไป |
| สลับเคส | เรื่องราวของหนังสือเล่มแรกยังคงดำเนินต่อไป |
| ที่ได้มา | เรื่องราวเริ่มต้นเป็นเรื่องราวความรักทั่วไป |
| แบบสุ่ม | สิ่งนี้จัดขึ้นเป็นผลลัพธ์ชั่วคราว |
ตารางที่ 2. ประสิทธิภาพของงานฝังประโยค
| การผ่าตัดก่อน | การทำให้หมดแรง | STS12 | STS13 | STS14 | STS15 | STS16 | STSB | SICK-R | AVG |
|---|---|---|---|---|---|---|---|---|---|
| เบสโรเบอร์ต้า | Simcse + การ์ด | 72.65 | 84.26 | 76.52 | 82.98 | 82.73 | 82.04 | 70.66 | 78.83 |
| Roberta-large | Simcse + การ์ด | 74.63 | 86.27 | 79.25 | 85.93 | 83.17 | 83.86 | 72.77 | 80.84 |
ดาวน์โหลดลิงค์: Cards-Roberta-Base (ดาวน์โหลด, 440MB), Cards-Roberta-Large (ดาวน์โหลด, 1.23GB)
ตารางที่ 3. ประสิทธิภาพของงานกาว
| การผ่าตัดก่อน | การทำให้หมดแรง | mnli-m | qqp | qnli | SST-2 | โคล่า | STS-B | MRPC | rte | AVG |
|---|---|---|---|---|---|---|---|---|---|---|
| debertav2-xxlarge | r-drop + สวิตช์กรณี | 92.0 | 93.0 | 96.3 | 97.2 | 75.5 | 93.6 | 93.9 | 94.2 | 91.7 |
repo นี้สร้างขึ้นบนพื้นฐานของ Transformers Huggingface และ 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ก่อนที่จะเรียกใช้รหัสผู้ใช้อาจต้องเปลี่ยนจุดตรวจสอบรุ่นเริ่มต้นและเส้นทาง I/O รวมถึง::
scripts/bert/run_simcse_grid.sh : บรรทัด 42-50 (train_file, train_file_dedupl (ไม่บังคับ), output_dir, tensorboard_dir, sent_rep_cache_file, senteval_data_dir)scripts/bert/run_simcse_pretraining.sh : บรรทัด 17-20 (train_file, output_dir, tensorboard_dir, senteval_data_dir), บรรทัด 45 (sent_rep_cache_files), บรรทัด 166-213 # 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ด้วยเหตุผลที่ไม่ทราบสาเหตุชุดของพารามิเตอร์ไฮเปอร์แบบจำลองที่ดีนั้นแตกต่างกันเมื่อทำงานกับ HuggingFace Transformers v4.11.3 และ v4.15.0 พารามิเตอร์ไฮเปอร์ที่ระบุไว้ข้างต้นได้รับการค้นหากริดบน Transformers 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"
}