Solving Semantic Textual Similarity task for KLUE Benchmark dataset within 12 days
3,4์ฃผ์ฐจ ๊ธฐ์ ๊ณผ์
- ํ๊ตญ์ด ๋ฌธ์ฅ์ ์ ์ฌ๋ ๋ถ์ ๋ชจ๋ธ ํ๋ จ ๋ฐ ์๋น์คํ
- semantic textual similarity (์๋ฏธ์ ํ ์คํธ ์ ์ฌ๋)
- input) 2๊ฐ์ ํ๊ตญ์ด ๋ฌธ์ฅ
- output) ์๋ฏธ์ ์ ์ฌ๋ ์ ์ ์ถ๋ ฅ
- KLUE-STS
- AIRBNB - ๋ฆฌ๋ทฐ
- policy - ๋ด์ค
- parakQC - ์ค๋งํธํ ์ฟผ๋ฆฌ
- Train set๋ง ์ฌ์ฉํ์ฌ train/val๋ก ๋๋์ด์ ํ๋ จ์ํค๊ธฐ
- ๊ณต๊ฐ๋ pretrained ๋ชจ๋ธ ์ฌ์ฉ ๊ฐ๋ฅ (์ถ์ฒ ๋ช ์)
- ํ์ต๋ ๋ชจ๋ธ (๋ชจ๋ธ ์์ ์ ํ) Pretrained KLUE RoBERTa Base
- ํ์ต ๋ฐฉ์ ๋ณด๊ณ ์
- ์ด๋ค ๋ชจ๋ธ์ ์ ํํ๋
- ์ด๋ค ํ๋ผ๋ฏธํฐ๋ฅผ ํ๋ํ๋
- ์ด๋ค ํ๋ จ ๊ณผ์ ์ ๊ฑฐ์ณค๋๊ฐ
- dev set score(dev set์ ๋ชจ๋ ๋ฌธ์ฅ์ pair์ ๋ํ ์ ์ฌ๋ ์ถ๋ก ๊ฒฐ๊ณผ์ F1 ์ ์)
- REST API๋ฅผ ํตํด ๋ชจ๋ธ์ ์ด์ฉํ์ฌ ๋ ๋ฌธ์ฅ์ ์ ์ฌ๋๋ฅผ ๋ถ์ํ๋ Server Code
- Data EDA (exploratory data analysis)
- Data Preprocessing
- Cleansing
- khaiii ํํ์ ๋ถ์๊ธฐ ์ฌ์ฉ
- Data Augmentation
- EDA (easy data augmentation)
- Pretrained Model ์ ์ , ๋ถ๋ฌ์ค๊ธฐ
- klue-RoBERTa-base
- Fine-Tuning
- transformers.Trainer ํด๋์ค๋ฅผ ์ด์ฉํ ํ๋ จ
- Hyperparameter Search
- Optuna
- Evaluation Metric
- Pearsonโs r score, f1 score
- Serving
- FastAPI
KLUE STS ๋ฐ์ดํฐ๋ STS task๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ํ๊ตญ์ด ๋ฐ์ดํฐ์ ์ด๋ฉฐ, AIRBNB(๊ตฌ์ด์ฒด ๋ฆฌ๋ทฐ), Policy(๊ฒฉ์์ฒด ๋ด์ค), ParaKQC(๊ตฌ์ด์ฒด ์ค๋งํธํ ์ฟผ๋ฆฌ)์ ์ธ ๊ฐ์ง ๋๋ฉ์ธ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ์ ์ฒด ๋ฐ์ดํฐ ๊ฐ์๋ ์ด 13,224๊ฐ๋ก, Train ๋ฐ์ดํฐ 11,668๊ฐ, Dev ๋ฐ์ดํฐ 519๊ฐ, Test ๋ฐ์ดํฐ 1,037๊ฐ์ธ ์ฝ 20:1:2์ ๋น์จ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ๋ณธ ๋ถ์์์๋ Train ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฆฌํ์ฌ Train๊ณผ Dev๋ก Dev ๋ฐ์ดํฐ๋ฅผ Test๋ก ๊ฐ์ฃผํ์ฌ ์งํํ์์ต๋๋ค. Train ๋ฐ์ดํฐ ๋ด์ Dev์ ๋น์จ์ด 9:1์ด ๋๋๋ก 11,668๊ฐ๋ฅผ 10494, 1167๊ฐ๋ก ๋ถ๋ฆฌํ์์ต๋๋ค.(๋น์จ ์ฐธ๊ณ ๋ ํผ๋ฐ์ค) ๊ทธ๋์ Train:Dev:Test์ ๋ฐ์ดํฐ ๊ฐ์๋ฅผ 10494:1167:519 ๊ฐ๋ก ์ฌ๊ตฌ์ฑํ์์ต๋๋ค. ๋ฐ์ดํฐ์ ์ guid, source, sentence1, sentence2, labels, annotations ์ด 6๊ฐ์ ์นผ๋ผ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ label์ real-label, label, binary-label 3๊ฐ์ง ๊ฐ์ ๊ฐ๊ณ ์์ต๋๋ค. real-label์ 0์์ 5๊น์ง ๋ฒ์์์ ๋ ๋ฌธ์ฅ์ ์ ์ฌ๋๋ฅผ ์ค์ํ์ผ๋ก ํํํ ๋ผ๋ฒจ์ด๋ฉฐ, label์ real-label์ ์์ซ์ ๋์งธ ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผ ํ ๊ฐ, ๊ทธ๋ฆฌ๊ณ binary-label์ threshold 3์ ๊ธฐ์ค์ผ๋ก ์ดํ๋ฉด 0, ์ด์์ด๋ฉด 1๋ก ํํํ ๊ฐ์ ๋๋ค.


KLUE STS Task์์ f1-score metric์ ํ๊ฒ ๊ฐ์ผ๋ก ์ฌ์ฉํ Binary label์ 0.55 : 0.45์ ๋น์จ๋ก ๋ค์ balanced ๋์ด ์๋ ๋ฐ์ดํฐ์ ์ด์์ต๋๋ค. Train์ ์์ ์ค๋ณต ํ์ ๋ฐ๊ฒฌํ์ฌ ํ๋์ฉ๋ง ๋จ๊ธฐ๊ณ ์ ๊ฑฐํด ์ฃผ์์ต๋๋ค. โSentence1โ๊ณผ โSentence2โ ๋ด์ฉ์ด ๊ฐ์ผ๋ฉด์ labels ๊น์ง ๋ชจ๋ ๊ฐ์ด ๊ฐ์ ์ค๋ณต ๋ฐ์ดํฐ๊ฐ 5๊ฐ๊ฐ ์กด์ฌํ์ต๋๋ค. ๊ฒฐ์ธก์น๋ ์กด์ฌํ์ง ์์์ต๋๋ค.
KLUE STS ๋ฐ์ดํฐ์ ์๋ ์ผ๋ฐ์ธ์ด ์ง์ ์ด AirBnB(๋ฆฌ๋ทฐ)๊ฐ ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์, ๋ง์ถค๋ฒ์ด๋ ๋์ด์ฐ๊ธฐ ๊ต์ ์ด ์ ์๋ฏธํ ๊ฒ์ด๋ค ํ๋จํ์ฌ ์ด์ ๋ํ ์ ์ฒ๋ฆฌ๋ฅผ ์ํํ์์ต๋๋ค. ํ์ง๋ง ์คํ๋ ค ์๋ฏธ๋ฅผ ํด์น๊ฑฐ๋, ํ๊ท 0.56๊ฐ์ ๋ง์ถค๋ฒ ์๋ฌ๋ฅผ ๊ณ ์นจ์ผ๋ก์จ ์๊ฐ ๋๋น ์ฑ๋ฅ์ด ๋์ค์ง ์์ ์ต์ข ๋ฐ์ดํฐ์ ์ ๋ฐ์ํ์ง ์์์ต๋๋ค. ํ๊ตญ์ด์ ์๋ฏธ์ ์ ์ฌ๋๋ฅผ ์ธก์ ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ํ๊ตญ์ด๋ฅผ ์ ์ธํ ์์ด, ํ์, ์ผ๋ณธ์ด, ํน์๋ฌธ์ ๋ฑ ์๋ฏธ๋ฅผ ํด์น ์ ์๋ ๋ฌธ์๋ค์ ์ ๊ฑฐํ์์ต๋๋ค. ๋ ์ด๋ฒ ํ๋ก์ ํธ์์ ํํ์ ๋ถ์์ ๊ฐ์ฅ ๋ง์ ์๊ฐ์ ํฌ์ํ์์ต๋๋ค. ์ด๋ ๋ฌธ์ฅ์ ์๋ฏธ์ ์ ์ฌ๋๋ฅผ ๋น๊ตํ๊ธฐ ์ํด์ ์ค์ํ ์๋ฏธ๋ฅผ ๋ด๊ณ ์๋ ๋ช ์ฌ, ๋์ฌ ์์ฃผ์ ํํ์ ๋ถ๋ฆฌ๊ฐ ํ์ํ๋ค๊ณ ํ๋จํ์์ต๋๋ค. ์ข์ ํํ์ ๋ถ์๊ธฐ๋ฅผ ํ์ฉํ๋ค๋ฉด ๋ง์ ์ฑ๋ฅ์ ๋์ด์ฌ๋ฆด ์ ์๋ค๊ณ ์๊ฐํ์์ต๋๋ค. ์ ์ฒ๋ฆฌ๋ฅผ ์ํํ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
-
pyKoSpace๋ฅผ ์ด์ฉํด ๋์ด์ฐ๊ธฐ์ ๋ํ ์ ์ฒ๋ฆฌ๋ฅผ ์ํํ์์ง๋ง ์คํ๋ ค ์๋ฏธ๋ฅผ ํด์น๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ์ฌ ์ ์ฉํ์ง ์์์ต๋๋ค. -
py-hanspell์ ์ด์ฉํด ๋ง์ถค๋ฒ์ ์์ ํ์์ต๋๋ค.- ์ ์ฒด ๋ฐ์ดํฐ์ ์ ์ ์ฉํ ํ ๊ณ ์น ๋ถ๋ถ์ด ์์์ error๋ก ํ์ํ์๋๋ฐ, ํ๊ท 0.56๊ฐ์ ๋ง์ถค๋ฒ ์๋ฌ๊ฐ ๋ฐ์ํ์๊ณ , ํ๊ท ์ ์ผ๋ก ์๋ฌ๊ฐ 1๊ฐ๋ ์์ง ์๋ค๋ ๋ป์ด๊ธฐ ๋๋ฌธ์ ์ ์ฉํ์ง ์์์ต๋๋ค.
-
๊ฐ์ข ํน์ ๋ฌธ์ ๋ฐ ์์ด, ์ผ๋ณธ์ด, ํ์๋ฅผ ์ ๊ฑฐํ์์ต๋๋ค.
-
์นด์นด์ค์ ํํ์ ๋ถ์๊ธฐ์ธ โKhaiiiโ๋ฅผ ์ด์ฉํ์ฌ ํํ์๋ฅผ ๋ถ๋ฆฌํ์์ต๋๋ค.
- ๋ถ์ฉ์ด๋ก ์ ์์ฌ, ์กฐ์ฌ ๋ฑ์ ๋ฌธ์ฅ์ ์๋ฏธ์ ํฐ ์ํฅ์ ๋ผ์น์ง ์๋๋ค ํ๋จ๋๋ ๋ถ๋ถ์ ์ ๊ฑฐํ์์ต๋๋ค. ํ์ฌ๋ฆฌ์คํธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ๊ฐ์ข ์กฐ์ฌ์ ์ด๋ฏธ๋ฅผ ์ ๊ฑฐํ์ต๋๋ค.
-
ํ์ด์ฌ ํ๊ตญ์ด ํจํค์ง konlpy์ ์ฝ๋ชจ๋(komoran), ๊ผฌ๊ผฌ๋ง(Kkma), Okt(open korean text)๋ ํ๋๋, mecab ๋ฑ์ ๋ค์ํ ํํ์ ๋ถ์๊ธฐ ์ธ์ ๋ฅ๋ฌ๋ ๊ธฐ๋ฐ khaiii๋ฅผ ์ ํํ ์ด์ ๋ ์คํ์ ํตํ ์ฑ๋ฅ ๋น๊ต ๋๋ฌธ์ ๋๋ค. ํด๋น ํฌ์คํธ๋ฅผ ์ฐธ๊ณ ํ์์ต๋๋ค.
- ๋ถ์ ์๊ฐ
๋ฌธ์ฅ์ ๊ฐฏ์๊ฐ ๋์ด๋ ์๋ก, ๊ผฌ๊ผฌ๋ง ๋ถ์๊ธฐ๊ฐ ๋ถ์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๊ณ ๊ผฌ๊ผฌ๋ง๋ฅผ ์ ์ธํ์๋ mecab ๋ถ์๊ธฐ๊ฐ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ํํ์ ๋ถ์์ ํ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ๊ทธ ๋ค์์ผ๋ก ๋ฅ๋ฌ๋ ๊ธฐ๋ฐ ๋ถ์๊ธฐ์ธ khaiii๊ฐ ๋น ๋ฅธ ๊ฒ์ ํ์ธํ์์ต๋๋ค. ํ ๋ฌธ์ฅ์ ๋ถ์ํ๋ ์๋์ ๊ฒฝ์ฐ, Komoran์ ์ ์ธํ ๋ค๋ฅธ ๋ถ์๊ธฐ๋ค ๋ชจ๋ 0.0016์ด์์ 0.0001์ด ์ฌ์ด๋ก ๋น ๋ฅธ ๊ฒ์ ํ์ธ ํ ์ ์์ต๋๋ค.
-
์ฑ๋ฅ
KLUE STS ๋ฐ์ดํฐ์ ์ ๋ฌธ์ฅ๋ค์ ๋๋ถ๋ถ ๋ง์ถค๋ฒ๊ณผ ๋์ด์ฐ๊ธฐ๊ฐ ์ ๋๋ก ๋์ด ์์ต๋๋ค. ๋ฐ์ดํฐ์ ์ ๋ฌธ์ฅ ์ผ๋ถ๋ฅผ ์ฌ์ฉํ์ฌ ํํ์ ๋ถ์๊ธฐ์ ์ฑ๋ฅ์ ํ ์คํธํ์์ต๋๋ค.
๋ถ์๊ธฐ ๋ฌธ์ฅ1 '๊ทธ๋ฅ ๋ชจ๋ ๊ฒ ๋ค ์๋ฒฝํ๋ ์์ด๋น์๋น ์์ด์โ ๋ฌธ์ฅ2 '๋๊ฐ ์๊ฐํ๊ธด ๊ฑฐ์ค์ ๊ฐ์ฅ ํจ๊ณผ์ ์ผ๋ก ์ฒญ์ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ๋ ๊ฒ ๊ฐ์?โ ์ ๊ฑฐ ๋ฌธ์ฅ Okt [('๊ทธ๋ฅ', 'Noun'), ('๋ชจ๋ ', 'Noun'), ('๊ฒ', 'Josa'), ('๋ค', 'Adverb'), ('์๋ฒฝํ๋', 'Adjective'), ('์์ด', 'Noun'), ('๋น์๋น', 'Noun'), ('์์ด์', 'Verb')] [('๋', 'Noun'), ('๊ฐ', 'Josa'), ('์๊ฐ', 'Noun'), ('ํ๊ธด', 'Verb'), ('๊ฑฐ์ค', 'Noun'), ('์', 'Josa'), ('๊ฐ์ฅ', 'Noun'), ('ํจ๊ณผ', 'Noun'), ('์ ', 'Suffix'), ('์ผ๋ก', 'Josa'), ('์ฒญ์', 'Noun'), ('ํ๋ ค๋ฉด', 'Verb'), ('์ด๋ป๊ฒ', 'Adjective'), ('ํด์ผ', 'Verb'), ('๋ ', 'Verb'), ('๊ฒ', 'Noun'), ('๊ฐ์', 'Adjective'), ('?', 'Punctuation')] 1. ๊ทธ๋ฅ ๋ชจ๋ ๋ค ์๋ฒฝํ๋ ์์ด ๋น์๋น ์์ด์ 2. ๋ ์๊ฐ ํ๊ธด ๊ฑฐ์ค ๊ฐ์ฅ ํจ๊ณผ ์ ์ฒญ์ ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ๋ ๊ฒ ๊ฐ์ ? kkma [('๊ทธ๋ฅ', 'MAG'), ('๋ชจ๋ ', 'MDT'), ('๊ฒ', 'NNB'), ('์ด', 'JKS'), ('๋ค', 'MAG'), ('์๋ฒฝ', 'NNG'), ('ํ', 'XSV'), ('์', 'EPT'), ('๋', 'EPT'), ('ใด', 'ETD'), ('์์ด', 'NNG'), ('๋น', 'NNG'), ('์', 'JKM'), ('๋', 'JX'), ('๋น', 'NNG'), ('์ด', 'VCP'), ('์', 'EPT'), ('์ด์', 'EFN')] [('๋', 'NP'), ('๊ฐ', 'JKS'), ('์๊ฐ', 'NNG'), ('ํ', 'XSV'), ('๊ธฐ', 'ETN'), ('๋', 'JKS'), ('๊ฑฐ์ค', 'NNG'), ('์', 'JKO'), ('๊ฐ์ฅ', 'MAG'), ('ํจ๊ณผ์ ', 'NNG'), ('์ผ๋ก', 'JKM'), ('์ฒญ์', 'NNG'), ('ํ', 'XSV'), ('๋ ค๋ฉด', 'ECE'), ('์ด๋ป', 'VA'), ('๊ฒ', 'ECD'), ('ํ', 'VV'), ('์ด์ผ', 'ECD'), ('๋', 'VV'), ('ใน', 'ETD'), ('๊ฒ', 'NNB'), ('๊ฐ', 'VA'), ('์', 'ECD'), ('?', 'SF')] 1. ๊ทธ๋ฅ ๋ชจ๋ ๋ค ์๋ฒฝ ์ ๋ ใด ์์ด ๋น ์ ๋น ์ด ์ ์ด์ 2. ๋ ์๊ฐ ๊ฑฐ์ค ๊ฐ์ฅ ํจ๊ณผ์ ์ผ๋ก ์ฒญ์ ๋ ค๋ฉด ์ด๋ป ๊ฒ ํ ์ด์ผ ๋ ใน ๊ฐ ์ ? khaiii [('๊ทธ๋ฅ', 'MAG'), ('๋ชจ', 'VA'), ('๋ ', 'MM'), ('๊ฒ', 'JKB'), ('๋ค', 'MAG'), ('์๋ฒฝ', 'NNG'), ('ํ', 'XSA'), ('์', 'EP'), ('๋', 'ETM'), ('์์ด๋น์๋น', 'NNG'), ('์ด', 'VCP'), ('์', 'EP'), ('์ด์', 'EC')] [('๋', 'NP'), ('๊ฐ', 'JKS'), ('์๊ฐ', 'NNG'), ('ํ', 'XSV'), ('๊ธฐ', 'ETN'), ('ใด', 'JX'), ('๊ฑฐ์ค', 'NNG'), ('์', 'JKO'), ('๊ฐ์ฅ', 'MAG'), ('ํจ๊ณผ', 'NNG'), ('์ ', 'XSN'), ('์ผ๋ก', 'JKB'), ('์ฒญ์', 'NNG'), ('ํ', 'XSV'), ('๋ ค๋ฉด', 'EC'), ('์ด๋ป', 'VA'), ('๊ฒ', 'EC'), ('ํ', 'VV'), ('์ฌ์ผ', 'EC'), ('๋', 'XSV'), ('ใน', 'ETM'), ('๊ฒ', 'NNB'), ('๊ฐ', 'VA'), ('์', 'EF'), ('?', 'SF')] 1. ๊ทธ๋ฅ ๋ชจ ๋ ๋ค ์๋ฒฝ ์์ด๋น์๋น ์ด 2. ๋ ์๊ฐ ๊ฑฐ์ค ๊ฐ์ฅ ํจ๊ณผ ์ฒญ์ ์ด๋ป ํ ๊ฐ ? mecab [('๊ทธ๋ฅ', 'MAG'), ('๋ชจ๋ ', 'MM'), ('๊ฒ', 'NNB+JKS'), ('๋ค', 'MAG'), ('์๋ฒฝ', 'NNG'), ('ํ', 'XSA+EP'), ('๋', 'ETM'), ('์์ด', 'NNG'), ('๋น', 'XPN'), ('์๋น', 'NNG'), ('์', 'VCP+EP'), ('์ด์', 'EF')] [('๋', 'NP'), ('๊ฐ', 'JKS'), ('์๊ฐ', 'NNG'), ('ํ', 'XSV'), ('๊ธด', 'ETN+JX'), ('๊ฑฐ์ค', 'NNG'), ('์', 'JKO'), ('๊ฐ์ฅ', 'MAG'), ('ํจ๊ณผ', 'NNG'), ('์ ', 'XSN'), ('์ผ๋ก', 'JKB'), ('์ฒญ์', 'NNG'), ('ํ', 'XSV'), ('๋ ค๋ฉด', 'EC'), ('์ด๋ป๊ฒ', 'MAG'), ('ํด์ผ', 'VV+EC'), ('๋ ', 'VV+ETM'), ('๊ฒ', 'NNB'), ('๊ฐ', 'VA'), ('์', 'EF'), ('?', 'SF')] 1. ๊ทธ๋ฅ ๋ชจ๋ ๊ฒ ๋ค ์๋ฒฝ ํ ์์ด ๋น ์๋น ์ 2.๋ ์๊ฐ ๊ธด ๊ฑฐ์ค ๊ฐ์ฅ ํจ๊ณผ ์ฒญ์ ์ด๋ป๊ฒ ํด์ผ ๋ ๊ฐ ? ๋๋ฉ์ธ์ด ๋ค๋ฅธ ๋ ๋ฌธ์ฅ์ ๋ํด ํํ์ ๋ถ์ํ ๊ฒฐ๊ณผ ์ข ๋ ์ฑ๋ฅ์ด ์ข๋ค๊ณ ๋๋ผ๋ ๋ถ์๊ธฐ๋ ๋ช ์ฌํ์ ์ ๋๋ก ์ธ์ํ๊ณ , ๋ ์ถ์ฝ๋๋ khaiii์์ต๋๋ค. ์ด๋ฒ์ ์ฌ์ฉํ๊ธฐ ์ข ๋ ์ฉ์ดํ khaiii๋ฅผ ์ฌ์ฉํ์ง๋ง, ํํ์ ๋ถ์๊ธฐ๋ก ์ข ๋ ํ๋ฐํ๊ฒ ์ฌ์ฉ๋๊ณ ์๋ mecab์ ๋ค์ ํ๋ก์ ํธ๋๋ ์ฌ์ฉํด๋ณด๊ณ ์ ํ์ต๋๋ค. ์ด๋ฒ์ khaiii ๋ถ์๊ธฐ๋ฅผ ์ ํํ์ฌ ์ ์ฒด ๋ฐ์ดํฐ์ ์ ๋ํ ํํ์ ๋ถ๋ฆฌ๋ฅผ ์งํํ์์ต๋๋ค.
KLUE STS ๋ฐ์ดํฐ ์ ์ ๋ํด ์ด 4๋จ๊ณ์ ์ ์ฒ๋ฆฌ๋ฅผ ์ ์ฉํ ๋ฐ์ดํฐ์ ์ ๊ฐ์ง๊ณ ํ๋ จ์ ์งํํ์์ต๋๋ค. ๊ฐ ๋จ๊ณ๋ณ๋ก ๋ชจ๋ธ์ ๊ตฌ๋ถํ์ฌ Wandb๋ก ์ฑ๋ฅ์ ๋ชจ๋ํฐ๋ง ํ์์ต๋๋ค. ์๋ ๊ฒฐ๊ณผ์์ ํ์ธํ ์ ์๋ฏ์ด Batch_size 128๊ฐ ๋ชจ๋ธ๋ก khaiii ํํ์ ๋ถ์๊ธฐ๋ฅผ ๊ฑฐ์น ๋ฐ์ดํฐ์ ์ด ๊ฐ์ฅ ๋์ validation score๋ฅผ ๊ธฐ๋กํ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
- ์ ์ฒ๋ฆฌ ํ ๋ฐ์ดํฐ์ ๊ฐฏ์ : train, val (10494, 1167)
KLUE-STS ๋ฐ์ดํฐ์ ์ 1๋ง์ฌ๊ฐ์ ํ๊ตญ์ด ๋ฌธ์ฅ ์์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ํ์ง๋ง ๋ค๋ฅธ STS Task ํ๋ก์ ํธ์์ ํ๋ จํ๋ ๋ฐ์ดํฐ์ ์ ํฌ๊ธฐ๊ฐ 30k, 40k ์ ๋๋ก ํ์ฐํ ํฌ๊ธฐ ๋๋ฌธ์, ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ์ฑ๋ฅ๊ณผ ๊ณผ์ ํฉ์ ๋ฐฉ์งํ๊ณ ๋ชจ๋ธ์ ์ผ๋ฐํ๋ฅผ ๋๊ธฐ ์ํด EDA(Easy Data Augmentation) ๊ธฐ๋ฒ์ ์ ํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฆ๊ฐํ์์ต๋๋ค([EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks(2019)]). CV ํ๋ก์ ํธ์์๋ ์์ฃผ ์ฌ์ฉํ๋ ์ผ์ ๋ ธ์ด์ฆ๋ ์๋ฏธ๋ฅผ ํด์น์ง ์๋ ๋ณํ์ ๋ถ์ฌํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋๋ฆฌ๋ ๋ฐฉ์์ ๋๋ค. NLP์์๋ ๋ค์ 4๊ฐ์ง ๋ฐฉ๋ฒ ์ค ํ๋๋ฅผ ๊ฐ๊ฐ์ ๋ฌธ์ฅ์ ์์๋ก ์ ํํ์ฌ ๋ฐ์ดํฐ์ ์ ๊ฐ์ ๋ก ์ฆ๊ฐํฉ๋๋ค.
- SR(Synonym Replacement) : ๋ถ์ฉ์ด๊ฐ ์๋ n๊ฐ์ ๋จ์ด๋ค์ ์ ํํด ์์๋ก ์ ํํ ๋์์ด๋ก ๋ฐ๊พผ๋ค.
- RI(Random Insertion) : ๋ถ์ฉ์ด๊ฐ ์๋ ์์์ ๋จ์ด๋ฅผ ์ ํํด ํด๋น ๋จ์ด์ ์์์ ์ ์์ด๋ฅผ ์์์ ํฌ์ง์ ์ ์ฝ์ ํ๋ค. ์ด๋ฅผ n๋ฒ ๋ฐ๋ณตํ๋ค.
- RS(Random Swap) : ๋ฌธ์ฅ ๋ด ์์์ ๋ ๋จ์ด์ ์์น๋ฅผ ๋ฐ๊พผ๋ค. ์ด๋ฅผ n๋ฒ ๋ฐ๋ณตํ๋ค.
- RD(Random Deletion) : ๋ฌธ์ฅ ๋ด ์์์ ๋จ์ด๋ฅผ p์ ํ๋ฅ ๋ก ์ญ์ ํ๋ค.
n๊ฐ์ ๋จ์ด๋ฅผ ์ ํํ๋ ๋ฐฉ์์ ๋ฌธ์ฅ์ ๊ธธ์ด์ ๋ฐ๋ผ ๋ฌธ์ฅ ์๋ฏธ์ ๋ณ์ง ์ ๋๊ฐ ๋ฌ๋ผ์ง๋ฏ๋ก, SR, RI, RS๋ ๋ฌธ์ฅ์ ๊ธธ์ด l์ ์ฌ์ฉํ์ฌ ๋ค์์ ๊ณต์ n=ฮฑl์ ๋ฐ๋ผ n์ ๊ฒฐ์ ํ๊ฒ ๋ฉ๋๋ค. ฮฑ๋ RD์์ p์ ๊ฐ์ ๊ฐ์ ๊ฐ๋, ๋ฌธ์ฅ ๋ด ๋ณํ๋ ๋จ์ด๋ค์ ๋น์จ์ ์ง์นญํ๋ ๋งค๊ฐ๋ณ์์ ๋๋ค. ์ฐธ๊ณ ๋ ผ๋ฌธ์์๋ ์ด ฮฑ๊ฐ์ train ๋ฐ์ดํฐ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ถ์ฒํ๋ฉฐ, ํด๋น ํ๋ก์ ํธ์์ ์๋ณธ ๋ฐ์ดํฐ๊ฐ 1๋ง์ฌ๊ฐ์ด๋ฏ๋ก ฮฑ๋ฅผ 0.1๋ก, ์ฆ๊ฐํ ๋ฌธ์ฅ์ ์๋ณธ ๋ฌธ์ฅ๋น 4๊ฐ๋ก ์งํํ์์ต๋๋ค.
์ ์ฒด ๋ฐ์ดํฐ์ ์ ํฌ๊ธฐ๊ฐ ์์์๋ก(500) ์ฑ๋ฅ ํฅ์์ด ๋ ๋์ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ฆ๊ฐ ๊ธฐ๋ฒ ์ค RI, SR์ ๊ฒฝ์ฐ ๋์์ด๋ฅผ ์ฐพ์ wordnet์ด ํ์ํฉ๋๋ค. ์๊ธฐ ๋ ผ๋ฌธ์ ํ๊ตญ์ด๋ก ๋ณํํ KorEDA ํ๋ก์ ํธ ์์๋ ํด๋น wordnet์ KAIST์์ ๋ฐฐํฌํ Korean WordNet(KWN)์ ์ฌ์ฉํ๊ณ , ๊ทธ๋๋ก ์ ์ฉํด ๋ณด์์ผ๋ ๋์์ด๋ก ์ ๋๋ก ๋ณํ๋์ง ์์๊ณ ์ค๋ณต ๋ฌธ์ฅ์ด ๋ค์ ๋ฐ์ํ๋ ๋ฑ์ ์ด๋ ค์์ด ์์์ต๋๋ค. ๋ฐ๋ผ์ ์๋ก์ด ์ ์์ด ์ฌ์ ์ด ํ์ํ์๊ณ ๊ตญ๋ฆฝ๊ตญ์ด์์์ ์ ๊ณตํ๋ ๋ชจ๋์ ๋ง๋ญ์น - ์ดํ ๊ด๊ณ ์๋ฃ: NIKLex๋ฅผ ์ ์์ด ์ฌ์ ์ผ๋ก ํ์ฉํ์ฌ RI, SR์ ์ด์ฉํ์์ต๋๋ค.NKLex ์๋ฃ๋ ๋น์ทํ๋ง, ๋ฐ๋๋ง, ์์์ด, ํ์์ด ๋ฑ ์ดํ ๊ด๊ณ๋ฅผ ์ด 5๋ง๋ช ์ ์ธ์ด ์ฌ์ฉ์๊ฐ ํ๊ฐํ ์๋ฃ๋ก์ ์ดํ ๊ด๊ณ ๊ธฐ์ด ์๋ฃ 20๋ง ์ ์ค ๋น์ทํ ๋ง 60,000์์ผ๋ก ์ ๊ณตํ๋ ๋จ์ด ์๊ฐ 9714๊ฐ์ธ KWN๋ณด๋ค ๋ ํ๋ถํ ๊ฐ์ฒด์๋ฅผ ๊ฐ๊ณ ์์ด ๊ธฐ์กด ์ด๋ ค์์ ํด๊ฒฐํ์์ต๋๋ค. KorEDA ํ๋ก์ ํธ์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ์ฌ Sentence1์ ๋ฌธ์ฅ์ ์๋ฏธ๋ฅผ ๋ณ์งํ์ง ์์ผ๋ฉด์ ๋ณํํ์ฌ ์ฆ๊ฐํ์์ต๋๋ค. ๊ธฐ์กด Sentence1 ๋ฌธ์ฅ์ ์ง์ธ Sentence2๋ฅผ ์ฆ๊ฐ๋ ๋ฌธ์ฅ์ ์์ผ๋ก ์ถ๊ฐํ์์ต๋๋ค. ์ ์ฒ๋ฆฌ ๋ Train ๋ฐ์ดํฐ ์ ์ ํฌ๊ธฐ๊ฐ 10,494๊ฐ์ ๋ฌธ์ฅ์์ ๊ฐ๊ณ ์์๋๋ฐ, 61,389๊ฐ์ ๋ฐ์ดํฐ์ ์ผ๋ก ์ฆ๊ฐ์ํฌ ์ ์์์ต๋๋ค. ์ฆ๊ฐ ํ ์ค๋ณต๋๋ ๋ฌธ์ฅ์ ์ญ์ ํ์์ต๋๋ค.
๋น๋ก ํ๋ก์ ํธ ๋ง๊ฐ ๋ด์ ์ฆ๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ฉ ํ๊ฒฝ์ ํ๊ณ๋ก ๋๊น์ง ๋๋ ค๋ณผ ์ ์์์ง๋ง, ํ๋ก์ ํธ ๋๋๊ณ ๋ณด๊ฐํ๋ ๊ณผ์ ์์ ์ํํด๋ณผ ์ ์์์ต๋๋ค.
์ด๋ค ๋ชจ๋ธ์ ์ฌ์ฉํ ๊ฒ์ธ๊ฐ์ ๋ํ ๋ ผ์๋ฅผ ํ ๋, STS task ๊ด๋ จํ ๋ค์ํ ์ฐ๊ตฌ ๋ฐ ๋ ผ๋ฌธ์ ์์นํ์ฌ ๊ฐ์ฅ ์ฑ๋ฅ์ด ๋์ ๋ชจ๋ธ์ ๊ณต๋ถํ์์ต๋๋ค. KLUEโs benchmark scores, Tunib-Electraโs benchmark scores, KoElectraโs benchmark scores ๋ฑ๋ฑ์ ๋ฒค์น๋งํฌ ์ค์ฝ์ด๋ฅผ ๋ฐํ์ผ๋ก๋ ๊ณ ๋ฏผ ํด ๋ณด์์ผ๋ฉฐ, ๋ค๋ฅธ ์ธ์ด์ STS Task๋ฅผ ์ ์ํํ๋ค๊ณ ํ๊ฐ๋ฐ์ Sentence Transformers๋ฅผ ์ด์ฉํ ๋ชจ๋ธ๋ ์๋ํ์ต๋๋ค. ๊ฒฐ๊ตญ pretrained model๋ก KLUE-RoBERTa-Base ๋ชจ๋ธ์ ์ฌ์ฉํ์์ต๋๋ค. ํด๋น ๋ชจ๋ธ์ ์ ์ ํ๋ ๋ฐ ์์ด์ ํ๊ตญ์ด ์ ํฉ์ฑ, ๋ชจ๋ธ ํฌ๊ธฐ ๋ฐ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ธฐ์ค์ผ๋ก ๊ณ ๋ คํ์์ต๋๋ค.
-
ํ๊ตญ์ด ์ ํฉ์ฑ
ํด๋น ๋ชจ๋ธ์ KLUE ์ฝํผ์ค๋ฅผ ์ฌ์ ํ์ตํ RoBERTa base ์๋ฒ ๋ฉ ๋ชจ๋ธ๋ก์ KLUE ๋ฐ์ดํฐ์ ์ ํ๊ธ ๋ฌธ์ฅ ์ ์ฌ๋ ์ธก์ ์ ํ ๋ ์ต์ ํ๋ ๋ชจ๋ธ์ด๋ฉฐ ๋์ ์ฑ๋ฅ์ ๋ณด์ผ ๊ฒ์ด๋ผ ํ๋จํ์์ต๋๋ค. ๋ KLUE STS task์ ๋ฒค์น๋งํฌ ๋ฆฌ๋๋ณด๋์์ ๊ฐ์ฅ ๋์ ์ฑ๋ฅ์ ๋ณด์ธ ๋ชจ๋ธ์ด๊ธฐ ๋๋ฌธ์, ํ์ธ ํ๋์ ๋ชฐ์ ํ์ฌ ์ฑ๋ฅ์ ๊ฐ์ ํ ์ ์๋ค๊ณ ์๊ฐํ์์ต๋๋ค. ๋ค์ค์ด ๋ชจ๋ธ ๊ธฐ์ค STS๋ฅผ ํฌํจํ ๋ค์ํ task์์ ๋์ ์ฑ๋ฅ์ ๊ธฐ๋กํ multi-use Sentence-BERT ๊ธฐ๋ฐ ๋ชจ๋ธ all-mpnet-base-v2, all-MiniLM-L6-v2 ๋ฑ์ pretrained model๋ก ์๋ํด ๋ณด์์ต๋๋ค. ํด๋น ๋ชจ๋ธ์ **
[microsoft/mpnet-base](https://huggingface.co/microsoft/mpnet-base)**๋ชจ๋ธ์ ์ฌ์ ํ์ตํ์ฌ 1B ๋ฌธ์ฅ ์์ผ๋ก ํ์ธ ํ๋ํ ๋ชจ๋ธ์ ๋๋ค. Contrastive learning์ ์ฌ์ฉํ ๋ชจ๋ธ๋ก ์ด๋ ๋ฌธ์ฅ ํ์ด ์ค ํ๋๊ฐ ์ฃผ์ด์ง๋ฉด ๋ชจ๋ธ์ ๋๋คํ๊ฒ ์ํ๋ง๋ ๋ฌธ์ฅ๋ค ์ค ์ ์ฌํ์ง ์์ ๋ฌธ์ฅ์ ๊ฑธ๋ฌ๋ด๊ณ ์ ์ผ ์ ์ฌํ ํ์ด๋ฅผ ์์ธกํ๋ ๋ฌธ์ฅ ๋ฒกํฐํ ๋ฐฉ๋ฒ๋ก ์ ๋๋ค. ์ฃผ๋ก unbalanced label์ ๊ฐ๊ณ ์๋ ๋ฐ์ดํฐ์ ์ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๋ ๋ฐฉ๋ฒ์ธ๋ฐ ํ๊ตญ์ด context๋ฅผ ํ์ตํ ๋ชจ๋ธ์ ๋นํด ์ ํฉ์ฑ์ด ๋จ์ด์ง๋ ๊ฒ์ ํ์ธํ์์ต๋๋ค. -
๋ชจ๋ธ ํฌ๊ธฐ ๋ฐ ๊ฐ๋ฐ ํ๊ฒฝ
KLUE ๋ฐ์ดํฐ์ ์ ์ฌ์ ํ์ตํ ๋ชจ๋ธ์ ๊ฒฝ์ฐ BERT base ๋ชจ๋ธ๊ณผ RoBERTa base ๋ชจ๋ธ์ด ์์๊ณ ๊ฐ๊ฐ ์๋ฒ ๋ฉ ์ฌ์ด์ฆ์ ๋ ์ด์ด, ํค๋ ์๋ก large, small๋ก ๋ถ๋ฅ๋์์ต๋๋ค. ์ด ์ค KLUE ๋ฒค์น๋งํฌ baseline ๋ชจ๋ธ ์ค STS task์์ ๊ฐ์ฅ ๋์ ์ ์์ธ pearsonsโ r 93.35๋ฅผ ๊ธฐ๋กํ ๋ชจ๋ธ์ RoBERTa-large ๋ชจ๋ธ์ด์์ต๋๋ค. ํ์ง๋ง ๊ฐ์ธ ๋ฉํ(๋งฅ๋ถ ํ๋ก intel 2019 ๋ชจ๋ธ)์์ ๊ตฌ๊ธ colab์ผ๋ก ๋ชจ๋ธ์ ํ๋ จ์ํค๋ ํ๊ฒฝ ์ large ๋ชจ๋ธ์ ๊ฒฝ์ฐ batch size๋ฅผ ์กฐ์ ํด๋ ๊ณ์ ๋ฉ๋ชจ๋ฆฌ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ์์์ต๋๋ค. ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ์์ ์์์ ํจ์จ์ ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์งํํ๊ธฐ ์ํด base ๋ชจ๋ธ ์ค BERT ๋ณด๋ค 1.65 ์ ๋ ๋ ๋์ ์ฑ๋ฅ์ ๊ธฐ๋กํ 92.5 ์ค์ฝ์ด์ RoBERTa-base๋ฅผ ์ ํํ๊ฒ ๋์์ต๋๋ค. ๋ API ์๋ต ์๋๋ฅผ ๊ณ ๋ คํ์ฌ layer ์๊ฐ ์ ์ ํ๋ฉด์ ์ต๋ํ ๊ฐ๋ฒผ์ด ๋ชจ๋ธ์ ๋ถ๋ฌ์ฌ ์ ์๋๋ก ๊ฒฐ์ ํ์์ต๋๋ค.
Model Embedding Size Hidden Size # Layers # Heads KLUE-BERT-base 768 768 12 12 KLUE-RoBERTa-base 768 768 12 12 KLUE-RoBERTa-small 768 768 6 12 KLUE-RoBERTa-large 1024 1024 24 16
๋จผ์ , ์ค๋ฌด์์ ํ์ฌ ํ๋ฐํ๊ฒ ์ฌ์ฉํ๊ณ ์๋ค๋ ๋ง์ NLP ์ค๋ฌด์์ธ ๊ฐ์ ํ์์๊ฒ ๋ค์๊ณ ์ฒ์ ์ ํด ๋ณด์๊ธฐ์ ํ๋ก์ ํธ์์ ํ์ฉํ๊ณ ์ถ์ด ์ ํํ๊ฒ ๋์์ต๋๋ค. ๊ณต์ ๋ํ๋จผํธ์ ๋ชจ๋ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฑด๋๋ ค๋ณด์๋ค๊ณ ํด๋ ์ข์ ์ ๋๋ก ์ฌ๋ ์๊ฒ ํ์ฉํด ๋ณผ ์ ์์์ต๋๋ค. ๋๋ฒ์งธ๋ก, TrainingArgument๋ผ๋ batch size, optimizer, evaluator ๋ฑ์ ๋ค์ํ ํ๋ผ๋ฏธํฐ๋ค์ ์ ๋ ฅํ์ฌ ์ฝ๊ฒ ํ์ตํ ์ ์๋ ์ ์ด ๊ฐ์ฅ ํฐ ์ฅ์ ์ด์์ต๋๋ค. layer๋ฅผ freeze ๋ f1_score, pearsonr ์ ๊ณ์ฐํ ๋ ๋ณ์ ํ๋๋ง์ผ๋ก ์ฝ๊ฒ ๋ชจ๋ธ์ ๋ฐ๋ก ํ์ต์ํฌ ์ ์์ด์ ํธ๋ฆฌํ์ต๋๋ค. ๋ค์์ผ๋ก Trainer์ ๊ฒฝ์ฐ docs๋ ํํ ๋ฆฌ์ผ์ ์ค๋ช ์ด ๋งค์ฐ ์ ๋์ด ์์ด์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ํ๊ณ ์ถ์ ์์ ์ด ์์๋๋ง๋ค ์ฝ๊ฒ ์ดํดํ๋ฉฐ ํ์ธ ํ๋์ ์งํํ ์ ์์์ต๋๋ค. ์ ๋ NLP๋ฅผ ๊ณต๋ถํ๋ ํ์์ ์ ์ฅ์์ ๋ชจ๋ธ ํ์ต ๊ณผ์ ๋ฟ๋ง ์๋๋ผ, ๊ทธ ๊ณผ์ ์์ ๋งค๊ฐ๋ณ์์ ์ญํ ๋ํ ์ง๊ด์ ์ผ๋ก ๋ฐ์๋ค์ด๋ฉฐ ๊ณต๋ถํ ์ ์์ด์ ์ข์์ต๋๋ค.
TrainingArgument์๋ ํฌ๊ฒ Dataset, Optimizer, Regularization, Evaluation ๊ด๋ จ ๋งค๊ฐ์ธ์ ๊ฐ์ ์ง์ ํ ์ ์์ต๋๋ค. ์ ๋ ํ์ต epoch๋ฅผ 10์ผ๋ก ์ก๊ณ , eval epoch๋ 8๋ก ๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ ๊ณ ๋ คํ์ฌ ๊ทธ๋ณด๋ค ๋ ์ ๊ฒ ์ก์์ต๋๋ค. objective function์ผ๋ก๋ Cosine Similarity ๊ธฐ๋ฐ MSE Loss๋ฅผ ์ฌ์ฉํ์์ต๋๋ค. Optimizer๋ AdamW๋ฅผ ์ง์ ํ์์ต๋๋ค. ํ์ต๋ฅ Learning rate 6e-5, weight decay๋ 0.01๋ก trainer class์ default ๊ฐ์ผ๋ก ์ง์ ํ์์ต๋๋ค. ํ์ต์ด ๋ชจ๋ ๋๋๋ฉด, push_to_hub ํ๋ผ๋ฏธํฐ๋ก HuggingFace Hub์ ์ ๋ก๋ ๋๋๋ก ํ๊ณ ๋์ค์ ํ๋ จ์ด ๋๋ ๋ชจ๋ธ์ ๋ฐ๋ก ํ๋ธ์์ ๊ฐํธํ๊ฒ ๋์ด์ฌ ์ ์๋๋ก ํ์์ต๋๋ค.
fp16 ํ๋ผ๋ฏธํฐ๋ฅผ ์ฒ์ ์ ํ๋๋ฐ, ๋ชจ๋ธ์ด ํ์ตํ ๋ 32-bit Floating Point๊ฐ ์๋, 16-bit Floating Point๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ผ๊ณ ํฉ๋๋ค. True ๊ฐ์ ์ค์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ๋ชจ๋ธ ํ์ต์ ์ฑ๋ฅ์ ๋น์ทํ์ง๋ง ์ฝ 60% ๊ฐ๋ ํฅ์๋ ์๋๋ก ํ์ต์ ์งํํ ์ ์๋ค๋ ์ฅ์ ์ด ์์์ต๋๋ค.
Trainer์ ์กด์ฌํ๋ hyperparameter_search๋ผ๋ ๋ฉ์๋๋ฅผ ์ด์ฉํด Hyperparameter tuning์ ์ํ ์ต์ ๊ฐ์ ์ฐพ์์ต๋๋ค. Trainer์๋ raytune, optuna, sig0pt๊ณผ ๊ฐ์ ํ์ดํผํ๋ผ๋ฏธํฐ ์ต์ ํ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ ๋ optuna๋ฅผ ์ ํํ์์ต๋๋ค. ๊ทธ ์ด์ ๋ t์ค์น๋ถํฐ ์ฌ์ฉ์ด ๊ฐํธํ๊ณ ํ๋ ์์ํฌ์ ํฌ๊ธฐ ๋ฐ ๊ตฌ์กฐ๊ฐ ๊ฐ๋ณ์ต๋๋ค. ๋ ์กฐ๊ฑด ๋ฐ ๋ฃจํ๊ฐ ์น์ํ python ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ์์น ๋ฒ์๋ฅผ ์ง์ ํ ์ ์์ผ๋ฉฐ, ์ฝ๋๋ฅผ ๊ฑฐ์ ๋ณ๊ฒฝํ์ง ์๊ณ ํ์ ๋ชจ๋๊ฐ ์ดํดํ ์ ์๋๋ก ๊ฐ๊ฒฐํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ด optuna๊ฐ ์ฐพ์ hyperparameter๋ค์ ํจ์๋ก ์ ์ํ์ต๋๋ค.
ํ์ดํผ ํ๋ผ๋ฏธํฐ ์์น์ ๋ฐ๋ฅธ ์ฌ๋ฌ ๋ชจ๋ธ์ ์ฑ๋ฅ ํ๊ฐ๋ Weights&Bias(Wandb)๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ํฐ๋ง ํ์์ต๋๋ค. ํ์ดํผ ํ๋ผ๋ฏธํฐ ๊ฐ์ ๋ฐ๋ฅธ ์ฑ๋ฅ ์ถ์ด๋ฅผ ์๊ฐํํ์ฌ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ํ์ต์ด ์ ์ด๋ค์ง๊ณ ์๋์ง, ์ต์ ์ ํ๋ผ๋ฏธํฐ ์กฐํฉ์ ๋ฌด์์ธ์ง ์ ์ ์์ต๋๋ค. Sweep ๊ธฐ๋ฅ ๋ฑ ๊ฐ ํ์ดํผ ํ๋ผ๋ฏธํฐ ๋ณ๋ก ๋ฒ์๋ฅผ ์ง์ ํ๊ฑฐ๋ ์ํฅ๋ ฅ์ ์ง๊ด์ ์ผ๋ก ์ ์ ์๋ ๊ธฐ๋ฅ์ ๋ํด ๋ค๋ฆ๊ฒ ์๊ฒ ๋์ด ์์ฌ์ ๊ณ , ๋ค์ ํ๋ก์ ํธ๋ ๊ผญ ์ฌ์ฉํด๋ณด๊ณ ์ ํฉ๋๋ค.
optuna๋ hyperparameter search ๋ฐฉ์์ธ grid search, random search, Bayesian method ์ค ๋ฒ ์ด์ง์ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด์, ์๋๊ฐ ๊ต์ฅํ ๋น ๋ฅธ ํธ์ ๋๋ค.
optuna๋ฅผ ์ฌ์ฉํด์ ์กฐ์ ํ parameter๋ learning_rate, train_epochs, batch_size, weight_decay, warmup_steps์ ๋๋ค. ์ ๋ค์ฏ ๊ฐ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ณ ๋ฅธ ์ด์ ๋ Wandb ์น์ฌ์ดํธ์ โHuggingFace Transformers๋ฅผ ์ํ Hyperparameter ์ต์ ํโ ์นผ๋ผ์์ ์ฐธ๊ณ ํ์์ต๋๋ค.
13๊ฐ์ hyperparameter ์์น๋ฅผ 60ํ ํธ๋ผ์ด์ผ ๋์ ์งํํ๋ฉด์ warmup_steps์ ์ค์๋๊ฐ ๊ฐ์ฅ ๋๊ฒ ๋์จ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์์ ์๊ด๊ด๊ณ๊ฐ ์ ์ผ ๋์ผ๋ฉฐ, warmup_steps๊ฐ ๋ฎ์์๋ก accuracy๋ ๋๊ฒ ๋์ต๋๋ค. ํด๋น ์คํ์ ํตํด ๊ฐ์ฅ ์ค์ํ ๋ค์ฏ๊ฐ์ง ํ๋ผ๋ฏธํฐ๋ฅผ ๊ตฌํ ์ ์์์ผ๋ฉฐ, ๊ฐ์ฅ ์ํฅ์ ํฌ๊ฒ ์ฃผ๋ ๋ฒ์๋ก ์ง์ ํ์ฌ hyperparameter search๋ฅผ ์งํํ์์ต๋๋ค.
learning_rate๋ ๋๋ฌด ์์ผ๋ฉด ์๋ ดํ๊ธฐ๊น์ง ๋ง์ iteration์ด ํ์ํด ๋นํจ์จ์ ์ด์ง๋ง, ๋๋ฌด ๋ง์ iteration์ ์์นซํ๋ฉด ํ์ต ๋ฐ์ดํฐ์ ์ ๊ณผ์ ํฉ๋์ด robustํ ๋ชจ๋ธ์ ๋ง๋ค ์ ์๋ค๋ ๋จ์ ์ด ์กด์ฌํฉ๋๋ค. ๋๋ฌด ํฌ๋ฉด global minimum์ ์๋ ดํ์ง ๋ชปํ๊ณ ๋ฐ์ฐํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ์ ์ด ์์ ๊ณผ์ ํฉ์ ๋ฐฉ์งํ๊ธฐ ์ํด batch size๋ฅผ ํฌ๊ฒ ์ค์ ํ์๊ธฐ ๋๋ฌธ์, ์ด์ ๋ง๋ learning rate๋ฅผ ์ฐพ๋ ๊ฒ์ด ์ค์ํ์์ต๋๋ค. num_train_epochs๋ ๋๋ฌด ๋ง์ ํ์ต์ ํ์ต๋ฐ์ดํฐ์ ๊ณผ์ ํฉ๋ ์ ์๊ธฐ ๋๋ฌธ์, ๋๋ฌด ํฐ ๊ฐ์ผ๋ก ์ค์ ํ๋ฉด ์๋ฉ๋๋ค. per_device_batch_size๋ ๋๋ฌด ํฌ๋ฉด ๋ฉ๋ชจ๋ฆฌ์ ์ํด ์ ํ๋ ์ ์๊ณ , ๋๋ฌด ์์ผ๋ฉด ๊ฐ์ค์น๋ฅผ ๋ ๋ง์ด ์ ๋ฐ์ดํธ ํ๊ฒ ํ๊ธฐ ๋๋ฌธ์, ์ ์ ํ ์ฌ์ด์ฆ์ฌ์ผํ๋ค๊ณ Reference ์์ ์ธ๊ธํ๊ณ ์์ต๋๋ค. warmup steps๋ Reference ๋ฅผ ์ดํด๋ณด๋ฉด, ํ์ต์ ์์ ์ ํ์ learning rate๊ฐ ๋ฎ์ ๋, warmup steps์ ๋จ๊ณ๋ฅผ ์ง๋ regularํ learning rate๋ฅผ ๊ฐ๊ฒํ๋ ์์น์ ๋๋ค. ์ด๋ ์ ํฌ๊ฐ ์ฐ๊ณ ์๋ Adam๊ฐ์ optimizer๊ฐ ์ ํํ๊ฒ gradient์ ํต๊ณ๋์ ๊ณ์ฐํ ์ ์๊ฒ ํด์ค๋๋ค. Reference๋ฅผ ๋ณด๋ฉด weight decay๋ฅผ Gradient exploding์ ํผํ๊ณ , Overfitting์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค๊ณ ์ธ๊ธํ๊ณ ์์ต๋๋ค. ๋ณดํต SGD optimizer๋ Adam optimizer๋ฅผ ์ธ๋ ์ฌ์ฉํ๊ฒ ๋๋ Parameter์ธ๋ฐ ์ ํฌ์ ๋ชจ๋ธ์ optimizer๋ Adam์ด๊ธฐ ๋๋ฌธ์, ์ง์ ํด์ค์ผํ๋ค๊ณ ์๊ฐํ์ต๋๋ค. ๊ทธ๋์ ์ด Hyperparameter๋ค์ ๋ํ ์ต์ ํ์์ ์ํํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก hyperparameter tuning์ ์งํํ์์ต๋๋ค.
๐ก Pearsonsโr score of 0.932
F1 score of 0.728
ํ๋ จ์ ์ฌ์ฉ๋์ง ์์ ์ ๊ณต๋ Validation set์ Evaluation์ ์ฌ์ฉํ์ฌ, ์ต์ข ์ค์ฝ์ด๋ฅผ ์์ ๊ฐ์ด ๊ธฐ๋กํ์์ต๋๋ค. F1 score์ ๊ฒฝ์ฐ, Trainer class์ metric์ โf1โ์ผ๋ก ์ง์ ํ์ฌ ๋ชจ๋ธ์ ํฌ๊ฒ ์์ ํ์ง ์๊ณ ๋ชจ๋ธ์ ํ๋ จํ์๋๋ฐ ๊ทธ ๊ณผ์ ์์ ์ ๋๋ก ํ๋ จ๋์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์ ํ๋๊ฐ ๋งค์ฐ ๋ฎ์ ๊ฒ์ผ๋ก ์๊ฐ๋์์ต๋๋ค. Pearsonr metric์ ๊ฒฝ์ฐ KLUE-STS Leaderboard์์ 2๋ฑ ์ฑ์ ์ ๊ธฐ๋กํ์์ต๋๋ค. threshold๊ฐ 3์ ์ธ ๊ฒ์ ํ์ฉํ์ฌ, ์ ์ฌ๋ ์ ์ 3์ ๋๊ธธ ๊ฒฝ์ฐ 1, ์ดํ์ผ ๊ฒฝ์ฐ 0์ผ๋ก binary-label์ ์์ธกํ๋ค๋ฉด f1 score๊ฐ ์์นํ ๊ฒ์ผ๋ก ์๊ฐ๋ฉ๋๋ค.
FastAPI ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ Fine-Tuningํ Klue-RoBERTa-Base ๋ชจ๋ธ์ ์๋นํ์ต๋๋ค. ์ ๋ ฅ๊ฐ์ผ๋ก ํ๊ตญ์ด ๋ฌธ์ฅ 2๊ฐ๋ฅผ ๋ฃ์ผ๋ฉด ๋ชจ๋ธ์ด ์ ์ฌ๋๋ฅผ ์ธก์ ํ์ฌ inference ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํฉ๋๋ค. STS task๋ฅผ ์ํ Rest API ์๋ฒ ์ฝ๋๋ https://github.com/honeybeat1/klue-sts-serving ํด๋น ๊นํ์์ ํ์ธํ์ค ์ ์์ต๋๋ค. Fine-Tuning๋ model, tokenizer๋ฅผ huggingface์์ ๋ฐ์์ค๊ธฐ ๋๋ฌธ์ ์ฒซ ์ ์์ ๋ก๋ฉ์ด ์์ต๋๋ค. ์๋ฒ ์ฝ๋๋ฅผ ์คํํ๊ณ ๋ก์ปฌ IP address(http://127.0.0.1:8000/docs)๋ก ์ ์ํ๋ฉด post method๋ฅผ ํตํด ๋น๊ตํ๊ณ ์ ํ๋ Sentence1, Sentence2๋ฅผ json ํ์์ผ๋ก ์ ์กํฉ๋๋ค. Inference ๊ฒฐ๊ณผ๋ ๋น๊ตํ ๋ ๋ฌธ์ฅ, Cosine Similarity๋ก ์ธก์ ํ ์ค์ํ ์ ์ฌ๋ ๊ฐ, threshold 3์ ์ ๊ธฐ์ค์ผ๋ก ํ๋ โ๋ ๋ฌธ์ฅ์ด ๋น์ทํ๊ฐ?โ์ ๋ํ ๋ต์ธ ์ด์งํ ๋ผ๋ฒจ ๊ฐ์ด ๋ฐํ๋ฉ๋๋ค. ์ฝ์ฌ์ธ ์ ์ฌ๋ ๊ฐ์ด 3 ์ด์์ผ์ โYesโ๋ฅผ, ์ดํ์ผ์ โNoโ๋ฅผ ๋ฐํํฉ๋๋ค.
- 12์ผ์ด๋ผ๋ ์๊ฐ์ ์๋ฐ๊ณผ ์์์ ํ๊ณ๋ก ์ธํด Trainer ๋ชจ๋์ ์ฌ์ฉํ์ฌ Fine-tuning์ ์งํํ๋๋ฐ, ๋ค์์๋ ๋ณ๋ LSTM๊ณผ ๊ฐ์ bidirectional layer๋ฅผ ์ถ๊ฐํ์ฌ ๋ชจ๋ธ์ ์ฑ๋ฅ ํฅ์์ ์๋ํด๋ณด๊ณ ์ถ์ต๋๋ค. ๋ NLP ํ๋ก์ ํธ๋ ์ฒ์์ด๋ผ ํ์ฌ ์ค๋ฌด์๋ก ์ผํ๊ณ ์๋ ์ ๋ฐฐ์๊ฒ ์ค์ฉ์ ์ด๊ณ SOTA ๋ชจ๋ธ์ ๋ํด ๋ง์ ์ง๋ฌธ์ ํ์๋๋ฐ, pretrained ๋ชจ๋ธ์ ์ฌ์ฉํ์ง์๊ณ ํ ํฌ๋์ด์ ๋ถํฐ ์๋ก ๋ง๋ค์ด ์ด๋ค๋ฉด sentencepiece ๋ชจ๋ธ์ ํ์ฉํด ๋ณด๋ ๊ฒ๋ ๋ค์์ ์๋ํ๊ณ ์ ํฉ๋๋ค.
- ๋ชจ๋ธ epoch๊ฐ ์ง๋ ์๋ก ๊ณผ์ ํฉ์ด ๋ฐ์ํ์ฌ Validation loss๋ ๋์ด๋๊ณ train loss๋ ์ค์ด๋๋ ์ํฉ์ด ๋ฐ์ํ์๋, ๋ชจ๋ธ ์์ฒด์ early stopping ํ๋ผ๋ฏธํฐ๋ฅผ ์ถ๊ฐํ์ง ์์ ์๊ฐ์ด ๋ญ๋น๋๋ ์ํฉ์ด ๊ณ์ ๋ฐ์ํ์ต๋๋ค. ์ด ๋ ๋ชจ๋ธ์ ๋๋ ค๋๊ณ ๊ทธ ์๊ฐ๋์ ํ์ดํผ ํ๋ผ๋ฏธํฐ๋ ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ ๊ฒ์์ ๊ณ์ ํ๋ ์ํฉ์ด๋ผ ์ผ์์ด ๋ถ์กฑํ์ฌ ์ด๋ฐ ์ผ์ด ๋ฐ์ํ์ต๋๋ค. ๋ค์์๋ ํ๋ก์ ํธ ์์ฐ์ฑ์ ์ด์ ์ ๋ง์ถฐ๋ณด๋ฉด์ ์งํํ ์์ ์ ๋๋ค.
- Wandb๋ฅผ ์ด๋ฒ์ ์ฒ์์ผ๋ก ์ฌ์ฉํ๋ฉด์ wandb๊ฐ ์ ๊ณตํ๋ ๋ค์ํ ์๊ฐํ ๊ธฐ๋ฅ๋ค์ ์ฌ๋ ์๊ฒ ์ฌ์ฉํ์ง ๋ชปํด ์์ฌ์ ์ต๋๋ค. ํ๋ผ๋ฏธํฐ์ ์ํฅ๋ ฅ๊ณผ accuracy์ ๋ฏธ์น๋ ์ํฅ ๋ฑ์ ๋ค์์๋ ์ฑ๋ฅ๊ณผ ํจ๊ป ๋ชจ๋ํฐ๋ง ํ๊ณ ์ ํฉ๋๋ค.
- Data Augmentation ๋ถ๋ถ์์ EDA๋ฟ๋ง ์๋๋ผ Round-trip translation / Back Translation๋ ์์ฃผ ์ฐ์ด๋ ๋ฐฉ์์ธ ๊ฒ์ ์ด๋ฒ์ ์๊ฒ ๋์ด, ๋ค์์๋ ๊ผญ ์ ์ฉํด๋ณด๊ณ ์ถ์ต๋๋ค.
Role : ๋ ผ๋ฌธ ๋ฆฌ์์น / ๋ชจ๋ธ๋ง / ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ / ๋ฐ์ดํฐ ์ฆ๊ฐ / ํ์ดํผ ํ๋ผ๋ฏธํฐ ํ๋ / ๊ธฐํ ์ฝ๋ ์์ / ๋ณด๊ณ ์ ์์ฑ
์ ๋ ์ด๋ฒ NLP ํ๋ก์ ํธ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฒ๋ฆฌํ๋ ๊ฐ์ฅ ์ฒซ ์ฝ๋๋ถํฐ ๋ง์ง๋ง API ์๋ฒ ์ฝ๋๊น์ง ์์ฑํด๋ณธ ๊ท์คํ ๊ฒฝํ์ ํ์ต๋๋ค. ์ด์ ๊ป ํ ํ๋ก์ ํธ์์ ์คํฌ๋์น๋ถํฐ ์๋ฒ ์ฝ๋๊น์ง ๋ง์ ธ๋ณธ ์ ์ ์์๋๋ฐ, ์ฒ์์ผ๋ก ๋ชจ๋ ๋ถ๋ถ์ ์งํํ์ต๋๋ค. ์์ฐ์ด์ฒ๋ฆฌ ํ๋ก์ ํธ๋ ์ด๋ฐ ํ๋ก์ธ์ค๋ฅผ ๊ฑฐ์น๋ ๊ฒ์ด๊ตฌ๋ ์ง์ ์๊ฒ ๋์ด ํ๋ก์ ํธ ๋ง๋ฏธ์ธ ์ง๊ธ ์ด๋ค ์ฐ๋ด์ฐ๋ฆฌ์ ๋์ฐฉํ ๋๋์ ๋๋ค. ๊ณต๋ถํ๋ฉด ํ ์๋ก ์ฌ๋ฐ๊ณ ๋ ์ ์ฉํ๊ณ ์ถ์ ๋ถ๋ถ์ด ์๊ฒจ์ ๋๋ฌด๋ ์ฌ๋ฐ๊ฒ ํ๋ก์ ํธ๋ฅผ ์งํํ์ต๋๋ค. ํนํ ์๋ก์ด Tool์ docs๋ฅผ ์ด์ฌํ ์ฝ์ด๊ฐ๋ฉฐ ์ฌ์ฉํด๋ณธ ๊ฒฝํ์ด ์ข์์ต๋๋ค. ์ฒ์์ Wandb์ ์กด์ฌ๋ ๋ชฐ๋ผ์ Notion์ ๋ณ๋๋ก try๋ฅผ ์ ๋ฆฌํ๋ ์์ค์ด์์ต๋๋ค. ํ์ง๋ง ์ด์ ๋ Wandb๋ก ๋ค์ํ try๋ค์ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง์ด ๊ฐ๋ฅํฉ๋๋ค.
์ด๋ฒ ์ฌํ ๊ณผ์ ์ ์ฐธ์ฌํ๋ฉด์, ์ข์๋ ์ ์ NLP ํ๋ก์ ํธ๊ฐ ์ฒ์์ด์์ง๋ง 5์ฃผ๊ฐ ์ฐจ๊ทผ ์ฐจ๊ทผ ํํ ๋ฆฌ์ผ์ฒ๋ผ ๊ธฐ์ด๋ถํฐ ์๋ ค์ฃผ์ ๋๋ถ์ ๋ฐ๋ผํ ์ ์์๋ ์ ์ ๋๋ค. ์ ๊ฐ ๋ ผ๋ฌธ๊ณผ ๊ตฌ๊ธ๋ง์ ํตํด ํด๋ณด๊ณ ์ถ์๋ ์ ์ฒ๋ฆฌ๋, ๋ชจ๋ธ ๋ฑ์ ์๊ฐ ๋ด์ ๋ค ์ ์ฉํด ๋ณผ ์ ์์์ง๋ง ํ๋ก์ ํธ ๋ณด๊ณ ์๋ฅผ ์ ๋ฆฌํ๋ฉด์ 3์ฃผ๊ฐ ์ผ์ผ ๊ณผ์ ๋ฅผ ํตํด ๋ฐฐ์ ๋ ๊ธฐ์ด๋ฅผ ๋ฐํ์ผ๋ก ์ง์ค์ ์ผ๋ก, ํนํ sts task์ ๋ํ์ฌ ๋๊น์ง ํ๋ณธ ๊ธฐ๋ถ์ด๋ผ ๋ฟ๋ฏํ์ต๋๋ค. ์ฒซ import ์ฝ๋๋ถํฐ api ์ฝ๋๊น์ง ํ์ ๋ชจ๋ ๊ณผ์ ์ ์ฐธ์ฌํด๋ณธ ์ ์ ์ฒ์์ด๋ผ์ ๋ชธ์ด ๊ณ ๋๋ ์ ๋ง ๋ง์ด ๋ฐฐ์ ๋ค๋ ์๊ฐ์ ๋ณด๋์ฐผ๋ ๊ธฐ๊ฐ์ด์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
- A disciplined approach to neural network hyper-parameters https://arxiv.org/abs/1803.09820
- How to Tune Hyper-Parameters in Deep Learning | by Neil Zhang | Medium
- Sentence Transformers https://arxiv.org/abs/1908.10084
- Why do high learning rate diverges the weight updates? https://medium.com/@prash24goel/why-do-high-learning-rate-diverges-the-weight-updates-c39d9b3b326d
- Learning rate์ Max, Min https://arxiv.org/pdf/1506.01186.pdf
- ์นด์นด์ค ํํ์ ๋ถ์๊ธฐ Khaiii https://brunch.co.kr/@kakao-it/308
- KLUE benchmark https://arxiv.org/pdf/2105.09680.pdf
- Weight decay https://medium.com/analytics-vidhya/deep-learning-basics-weight-decay-3c68eb4344e9#:~:text=Weight decay is a regularization,weights and not the bias.
- KoELECTRA https://github.com/monologg/KoELECTRA
- tunib-electra https://github.com/tunib-ai/tunib-electra
- EDA : Easy Data Augmentation for Boosting Performance on Text Classification Tasks https://github.com/jasonwei20/eda_nlp
- [konlpy] ํํ์ ๋ถ์๊ธฐ๋ณ ๋ช ์ฌ(noun) ๋ถ์ ์๋ ๋น๊ต https://needjarvis.tistory.com/691










