ํน์ง | ์ค๋ช |
---|---|
๋ํ ์ฃผ์ฒด | ๋ค์ด๋ฒ ๋ถ์คํธ์บ ํ AI-Tech 6๊ธฐ NLPํธ๋์ level1 ๋๋ฉ์ธ ๊ธฐ์ด ๋ํ์ ๋๋ค. |
๋ํ ์ค๋ช | ๋ ๋ฌธ์ฅ์ด ์ฃผ์ด์ก์ ๋ ๋ ๋ฌธ์ฅ์ ๋ํ STS(Semantic Text Simliarity)๋ฅผ ์ถ๋ก ํ๋ ๋ํ๋ก Kaggle๊ณผ Dacon๊ณผ ๊ฐ์ด competition ํํ๋ก ์งํ๋์์ต๋๋ค. |
๋ฐ์ดํฐ ๊ตฌ์ฑ | ๋ฐ์ดํฐ๋ slack ๋ํ, ๋ค์ด๋ฒ ์ํ ํ๊ธฐ, ๊ตญ๋ฏผ ์ฒญ์ ๋ฌธ์ฅ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. Train(9324๊ฐ), Dev(550๊ฐ), Test(1100๊ฐ) |
ํ๊ฐ ์งํ | ๋ชจ๋ธ์ ํ๊ฐ์งํ๋ ํผ์ด์จ ์๊ด๊ณ์(Pearson correlation coefficient)๋ก ์ธก์ ํ์ต๋๋ค. |
- Team๋ช : 369 [NLP 3์กฐ]
๊น๋ํ | ๊น์ ๋ฏผ | ๋ฐ์ฐ์ผ | ์ด์ข ์ | ํฉ๊ธฐ์ค | ํฉ์์ |
---|---|---|---|---|---|
Github | Github | Github | Github | Github | Github |
ํ ๋จ์์ ํ๋ก์ ํธ์ธ๋งํผ ์ต๋ํ ๋ค์ํ ์๋๋ฅผ ๋ถ์ ํ์ฌ ์๋ก์ ๋ด์ฉ์ด ๊ฒน์น์ง ์๋๋ก ์งํํ์์ต๋๋ค. ์ด๋ ์ ๋ฌด๋ฅผ ์ ํํ ๊ธฐ์ค์ผ๋ก ๊ตฌ๋ถํ๊ธฐ๋ณด๋ค ๋ชจ๋๊ฐ ์์ ๋กญ๊ฒ EDA๋ถํฐ ์ ์ฒ๋ฆฌ, ๋ชจ๋ธ ์คํ, ๋ชจ๋ธ ํ๋๊น์ง end-to-end๋ก ๊ฒฝํํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ์ ํ์์ต๋๋ค. โํ๋์ ๊ฝํ๋ฉด ๋๊น์ง ํ๋คโ๋ ๊ณตํต์ ์ ๊ฐ์ง ์ ํฌ ํ์๋ค์ ๊ฐํ ์ฑ ์๊ฐ๊ณผ ์์ด๋์ด๋ฅผ ํฅํ ๋์ง๊ธด(?) ์ ์ ๋๋ถ์ ์ฑ๊ณต์ ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ๋ง๋ฌด๋ฆฌํ ์ ์์์ต๋๋ค.
Member | Role |
---|---|
๊น๋ํ | EDA(๋ฐ์ดํฐ ์
ํน์ฑ ๋ถ์ ), ๋ฐ์ดํฐ ์ฆ๊ฐ(back translation ), ๋ชจ๋ธ๋ง ๋ฐ ํ๋(Bert, Roberta, Albert, SBERT, WandB ) |
๊น์ ๋ฏผ | EDA(label-pred ๋ถํฌ ๋ถ์ ), ๋ฐ์ดํฐ ์ฆ๊ฐ(back translation/nnp_sl_masking/์ด์๋์น/๋จ์๋ณต์ ), ๋ชจ๋ธ ํ๋(roberta-large, kr-electra-discriminator ) |
๋ฐ์ฐ์ผ | EDA(label ๋ถํฌ ๋ฐ ๋ฌธ์ฅ ๊ธธ์ด ๋ถ์ ), ๋ฐ์ดํฐ ์ฆ๊ฐ(sentence swap ), ๋ชจ๋ธ๋ง ๋ฐ ํ๋(KoSimCSE-roberta, ํด๋น ๋ชจ๋ธ ๊ธฐ๋ฐ Siamese Network ์ ์ฉ ๋ชจ๋ธ ) |
์ด์ข ์ | EDA(label ๋ถํฌ ๋ถ์, label-pred ๋ถํฌ ๋ถ์ ), ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ(hanspell ), ๋ฐ์ดํฐ ์ฆ๊ฐ(/swap sentence/copied sentence/SR/random masking ), ๋ชจ๋ธ ํ๋(roberta-large, electra-kor-base, kr-electra-discriminator ), ์์๋ธ(soft voting, weight voting ), ์ฝ๋ ๋ฆฌํฉํ ๋ง |
ํฉ๊ธฐ์ค | ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ(๋์ด์ฐ๊ธฐ ํต์ผ ), ๋ฐ์ดํฐ ์ฆ๊ฐ(๋ถ์ฌ/๊ณ ์ ๋ช
์ฌ ์ ๊ฑฐ Augmentation ), ๋ชจ๋ธ๋ง(KoSimCSE-roberta ), ์์๋ธ(variance-based ensemble ) |
ํฉ์์ | ๋ชจ๋ธ๋ง ๋ฐ ํ๋(RoBERTa, T5, SBERT ), ๋ชจ๋ธ ๊ฒฝ๋ํ(Roberta-large with deepspeed ) |
๊ฐ์ | Description |
---|---|
ํ๋ก์ ํธ ์ฃผ์ | STS(Semantic Text Similarity) : ๋ ๋ฌธ์ฅ์ ์ ์ฌ๋ ์ ๋๋ฅผ ์์น๋ก ์ถ๋ก ํ๋ Task |
ํ๋ก์ ํธ ๋ชฉํ | ๋ ๋ฌธ์ฅ(sentence1, sentence2)์ด ์ฃผ์ด์ก์ ๋, ์ด ๋ ๋ฌธ์ฅ์ ์ ์ฌ๋๋ฅผ 0~5์ฌ์ด์ ์ ์๋ก ์ถ๋ก ํ๋ AI ๋ชจ๋ธ ์ ์. |
ํ๋ก์ ํธ ํ๊ฐ์งํ | ์ค์ ๊ฐ๊ณผ ์์ธก๊ฐ์ ํผ์ด์จ ์๊ด ๊ณ์(Pearson Correlation Coefficient) |
๊ฐ๋ฐ ํ๊ฒฝ | GPU : Tesla V100 Server 6๋, IDE : Vscode, Jupyter Notebook |
ํ์ ํ๊ฒฝ | Notion (์งํ ์ํฉ ๊ณต์ ), Figma (์งํ ์ํฉ ์๊ฐํ ๊ณต์ ), Github (์ฝ๋ ๋ฐ ๋ฐ์ดํฐ ๊ณต์ ), Slack (์ค์๊ฐ ์ํต) |
- ํ๋ก์ ํธ๋ 2023-12-11 ~ 2023 12-21 ์ฝ 11์ผ๊ฐ ์งํ๋์์ต๋๋ค.
- ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๋จ๊ณ๋ณ๋ก ์คํํด ๋ณด๊ณ ์ ์ฉํด ๋ณธ ๋ด์ฉ๋ค์ ์๋์ ๊ฐ์ต๋๋ค.
Process | What we did |
---|---|
EDA | ๋ฐ์ดํฐ ๋ถํฌ ๋ถ์, Baseline ๋ชจ๋ธ ์์ธก๊ณผ ์ค์ ๊ฐ ์ฐจ์ด ๋ถ์ |
Preprocessing | emotion normalize , repeat normalize , ํน์๋ฌธ์ ์ ๊ฑฐ , ์์ด ์๋ฌธ์ ์ฒ๋ฆฌ , hanspell(๋ง์ถค๋ฒ๊ฒ์ฌ) |
Augmentation | SR(Synonym Replacement) , Swap Sentence , Copied Sentence , NNP, SL Masking , Back Translation , ์ด์ ๋์น , ๋จ์ ๋ณต์ |
Experiment Model | klue/RoBERTa-base , klue/RoBERTa-large , klue/bert-base , monologg/KoELECTRA-base , KETI-AIR/ke-t5-base , xlm-roberta-large , snunlp/KR-SBERT-V40K-klueNLI-augSTS , kykim/electra-kor-base , snunlp/KR-ELECTRA-discriminator , BM-K/KoSimCSE-roberta , rurupang/roberta-base-finetuned-sts |
Hyper paramter tunning & Mornitoring | Wandb Sweep |
Ensemble | weight voting , soft voting |
Version | Description |
---|---|
AugmentationV1 | ์๋ณธ ๋ฐ์ดํฐ์์ label>=4์ธ ๋ฐ์ดํฐ ๋จ์ ์ฆ๊ฐ. |
AugmentationV2 | ์๋ณธ ๋ฐ์ดํฐ + ๋ง์ถค๋ฒ ๊ฒ์ฌ ๋ฐ์ดํฐ + SR + Swap Sentence + Copied Sentence |
AugmentationV3 | AugmentationV2 + NNP, SL Masking |
- ๋ฐ์ดํฐ ์ฆ๊ฐ ๊ณผ์ ์์ ๋ผ๋ฒจ ๋ถํฌ๋ฅผ ๊ท ํ์๊ฒ ๋ง์ถ๊ณ ์ ๋ผ๋ฒจ๋ณ ์ฆ๊ฐ ๋น์จ์ ์กฐ์ ํ์์ต๋๋ค.
- ์ต์ข ์ ์ผ๋ก 5๊ฐ์ ๋ชจ๋ธ์ ์์๋ธ์ ์ฌ์ฉํ์์ต๋๋ค.
Model | Learing Rate | Batch Size | loss | epoch | Data Cleaning | Data Augmentation | Public Pearson | Scheduler | Ensemble Weight |
---|---|---|---|---|---|---|---|---|---|
klue/RoBERTa-large | 1e-5 | 16 | L1 | 5 | Spell Check | AugmentationV2 | 0.9125 | 0.9125 | |
klue/RoBERTa-large | 1e-5 | 16 | MSE | 2 | Spell Check | AugmentationV3 | 0.9166 | 0.9166 | |
kykim/electra-kor-base | 2e-5 | 32 | L1 | 23 | Spell Check | AugmentationV2 | 0.9216 | CosineAnnealingWarmRestarts | 0.9216 |
snunlp/KR-ELECTRA-discriminator | 1e-5 | 32 | L1 | 15 | AugmentationV1 | 0.9179 | 0.9179 | ||
snunlp/KR-ELECTRA-discriminator | 2e-5 | 32 | L1 | 15 | Spell Check | AugmentationV2 | 0.9217 | CosineAnnealingWarmRestarts | 0.9217 |
- ํ์ต ๋ฐ์ดํฐ ๊ฒฝ๋ก :
./data
- ํ์ต ์ฝ๋ ๊ฒฝ๋ก :
./code
- ๋ชจ๋ธ Config ๊ฒฝ๋ก :
./code/config
- ํ์ต๋ ๋ชจ๋ธ ์์ฑ ๊ฒฝ๋ก :
./model
- ์ถ๋ก ๋ฐ ์์๋ธ ๊ฒฐ๊ณผ ์์ฑ ๊ฒฝ๋ก :
./result
-
๋ฐ์ดํฐ ์ฆ๊ฐ ์ฝ๋ ์์น :
./code/augmentation.py
- ์ฆ๊ฐ ๋ฐ์ดํฐ ์์ฑ ๊ฒฝ๋ก :
./data/
- ์ฆ๊ฐ ๋ฐ์ดํฐ ์์ฑ ๊ฒฝ๋ก :
-
Config ์ค์ ์ฝ๋ ๊ฒฝ๋ก :
./code/config/
-
Model Train ์ฝ๋ ์์น :
./code/train.py
- ๋ชจ๋ธ .ptํ์ผ ์์ฑ ๊ฒฝ๋ก :
./model/
- ๋ชจ๋ธ .ptํ์ผ ์์ฑ ๊ฒฝ๋ก :
-
Infer & Ensemble ์ฝ๋ ์์น :
./code/infer.py
- ์ถ๋ก ๊ฒฐ๊ณผ .csvํ์ผ ์์ฑ ๊ฒฝ๋ก :
./result/
- ์ถ๋ก ๊ฒฐ๊ณผ .csvํ์ผ ์์ฑ ๊ฒฝ๋ก :
๐level1_semantictextsimilarity-nlp-3
โโcode
โ โ augmentation.py
โ โ dataloader.py
โ โ dataset.py
โ โ inference.py
โ โ learner.py
โ โ model.py
โ โ train.py
โ โ utils.py
โ โ
โ โโconfig
โ โ kr_electraV1_config.py
โ โ kr_electraV2_config.py
โ โ kykim_config.py
โ โ roberta_large_config.py
โ โ roberta_large_nnp_config.py
โ โ
โ โโwrappers
โ config_wrapper.py
โ train_wrapper.py
โ
โโdata
โ dev.csv
โ dev_spellcheck.csv
โ sample_submission.csv
โ test.csv
โ test_spellcheck.csv
โ train.csv
โ train_augmentV1.csv
โ train_augmentV2.csv
โ train_augmentV3.csv
โ wordnet.pickle
โ
โโmodel
โ klue-roberta-large-nnp.pt
โ klue-roberta-large.pt
โ kykim-electra-kor-base.pt
โ snunlp-KR-ELECTRA-discriminator-V1.pt
โ snunlp-KR-ELECTRA-discriminator-V2.pt
โ
โโresult
ensemle.csv
klue-roberta-large-nnp.csv
klue-roberta-large.csv
kykim-electra-kor-base.csv
snunlp-KR-ELECTRA-discriminator-V1.csv
snunlp-KR-ELECTRA-discriminator-V2.csv
# ๋ฐ์ดํฐ ์ฆ๊ฐ
> python ./code/augmentation.py
# ./code/config ์์ ํ๋ จ ๋ชจ๋ธ์ config ์ค์
> python ./code/train.py
# Infer
> python ./code/inference.py --mode inference
# Ensemble
> python ./code/inference.py --mode ensemble