| ํญ๋ชฉ | ๋ด์ฉ |
|---|---|
| ํ๋ก์ ํธ ์ฃผ์ | ๊ธฐ๊ณ ๋ ํด MRC (Machine Reading Comprehension) ์ค โOpen-Domain Question Answeringโ ๋ฅผ ์ฃผ์ ๋ก,ย ์ฃผ์ด์งย ์ง์์ ๊ด๋ จ๋ ๋ฌธ์๋ฅผ ํ์ํ๊ณ , ํด๋น ๋ฌธ์์์ ์ ์ ํ ๋ต๋ณ์ ์ฐพ๊ฑฐ๋ ์์ฑํ๋ task๋ฅผย ์ํ |
| ํ๋ก์ ํธ ๊ตฌํ ๋ด์ฉ | โข Retrieval ๋จ๊ณ์ Reader ๋จ๊ณ์ two-stage ๊ตฌ์กฐ ์ฌ์ฉ โข ํ๊ฐ ์งํ๋ก๋ EMย Score(Exactย Matchย Score)์ด ์ฌ์ฉ๋์๊ณ ,ย ๋ชจ๋ธ์ด ์์ธกํ text์ ์ ๋ต text๊ฐ ๊ธ์ ๋จ์๋ก ์์ ํ ๋๊ฐ์ ๊ฒฝ์ฐ์๋ง ์ ์ ๋ถ์ฌ |
| ์งํ ๊ธฐ๊ฐ | 2024๋ 2์ 7์ผ ~ 2024๋ 2์ 22์ผ |
์ต์ข
๋ฆฌ๋๋ณด๋ ์์ 2์
Notion, Slack, Zoom ์ ํตํด ํ์๋ฅผ ์งํํ์ผ๋ฉฐ, Github์ ํตํด ์ฝ๋ ๊ณต์ ๋ฅผ ๋ฐ Issues ๊ธฐ๋ฅ์ ์ด์ฉํ ๊ด๋ฆฌ๋ฅผ ์งํ. Wandb๋ฅผ ์ด์ฉํด ์ค์๊ฐ์ผ๋ก ์คํ ๊ด๋ฆฌ.
| ๊ตฌํฌ์ฐฌ | ๊น๋ฏผ์ | ์์ ๋ฆผ | ์คํ์ฐ | ์ด์์ | ์ต์์ง |
|---|---|---|---|---|---|
์ ๋ฐ์ ์ธ ํ๋ก์ ํธ ๊ณผ์ ์ ๋ชจ๋ ๊ฒฝํํ ์ ์๋๋ก ๋ถ์ ์ ํ์ฌ ํ์ ์ ์งํํ์ผ๋ฉฐ, ์ด๊ธฐ ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถ ๋จ๊ณ๋ถํฐ Github์ ์ฐ๋ํ์ฌ ์ธ๋ถ task ๋ง๋ค issue์ branch๋ฅผ ์์ฑํ์ฌ ๊ฐ์์ task๋ฅผ ์ํํ๋ค. ์ด๋ฅผ ํตํด ์ฝ๋ ๋ฒ์ ๊ด๋ฆฌ์ ์ฝ๋ ๊ณต์ ๊ฐ ์ํํ๊ฒ ์ด๋ฃจ์ด์ง ์ ์์๋ค.
| ์ด๋ฆ | ์ญํ |
|---|---|
| ๊ตฌํฌ์ฐฌ | ๋ฒ ์ด์ค๋ผ์ธ ์ฝ๋ ๋ฆฌํฉํ ๋ง, ๊น ๊ด๋ฆฌ, Retrieverย ๋ชจ๋ธ ๊ฐ์ (DPR), Reader ๋ชจ๋ธ ๊ฐ์ (PLM ์ ์ ๋ฐ ํ์ดํผํ๋ผ๋ฏธํฐ ํ๋) |
| ๊น๋ฏผ์ | ๋ฒ ์ด์ค๋ผ์ธ ์ฝ๋ ๊ธฐ๋ฅ ์ถ๊ฐ(slack ์ฐ๋), ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ(Question row ์ผ๋ฐ๋ช
์ฌ ์ถ๊ฐ), Retrieverย ๋ชจ๋ธ ๊ฐ์ (DPR, SPR) |
| ์์ ๋ฆผ | EDA, Retrieverย ๋ชจ๋ธ ๊ฐ์ (SPR), Reader ๋ชจ๋ธ ๊ฐ์ (PLM ์ ์ ๋ฐ ํ์ดํผํ๋ผ๋ฏธํฐ ํ๋), ๋ฐ์ดํฐ ํ์ฒ๋ฆฌ, ์์๋ธ ์ฝ๋ ์์ฑ(Hard Voting) |
| ์คํ์ฐ | Retrieverย ๋ชจ๋ธ ๊ฐ์ (SPR), Reader ๋ชจ๋ธ ๊ฐ์ (Dataset Fine-Tuning, Curriculum Learning, CNN Layer ์ถ๊ฐ) |
| ์ด์์ | Retrieverย ๋ชจ๋ธ ๊ฐ์ (DPR), Reader ๋ชจ๋ธ ๊ฐ์ (Dataset Fine-Tuning, Curriculum Learning) |
| ์ต์์ง | ๋ฒ ์ด์ค๋ผ์ธ ์ฝ๋ ๊ธฐ๋ฅ ์ถ๊ฐ(wandb ์ฐ๋), Retrieverย ๋ชจ๋ธ ๊ฐ์ (ํ์ดํผํ๋ผ๋ฏธํฐ ํ๋), ์์๋ธ ์ฝ๋ ์์ฑ(Soft Voting) |
ย json ํ์์ย ๋ฐ์ดํฐ์ ์ด ์ ๊ณต๋์๊ณ , train ๋ฐ์ดํฐ์ ์ย ์ง๋ฌธ์ ๊ณ ์ id, ์ง๋ฌธ,ย ๋ต๋ณย ํ ์คํธ ๋ฐ ๋ต๋ณ์ ์์ ์์น,ย ๋ต๋ณ์ดย ํฌํจ๋ ๋ฌธ์,ย ๋ฌธ์์ย ์ ๋ชฉ,ย ๋ฌธ์์ย ๊ณ ์ id๋ฅผย ํฌํจํ๊ณ ์๋ค.ย ์ด๋ train_dataset ๊ฒฝ๋กย ๋ด ํ์ผ์ 3952๊ฐ์ย ์ํ์ ํฌํจํ๋ train ๋ฐ์ดํฐ์ย 240๊ฐ์ย ์ํ์ ํฌํจํ๋ validation ๋ฐ์ดํฐ์ ์ผ๋กย ๊ตฌ์ฑ๋์ด ์๋ค.
์ข์ธก์ train dataset, ์ฐ์ธก์ validation dateset ์๊ฐํ์ ๊ฒฐ๊ณผ์ด๊ณ , ๊ฐ๊ฐ contextย length,ย questionย length,ย answerย length๋ฅผ ์๋ฏธ.
-
๋ฐ์ดํฐ์ ์ ๋ํ ์ ๋ณด
train.csv: ์ด 3952๊ฐvaildation.csv: 240๊ฐtest_data.csv: ์ด 600๊ฐ (์ด์ค 240๊ฐ์ ๋ฐ์ดํฐ์ ์ ๋์์ผ๋ก ๋ฆฌ๋๋ณด๋ ์ ์ ์ฑ์ )
-
column 1: ๊ณ ์ id
-
column 2: ์ง๋ฌธ
-
column 3: ๋ต๋ณ text
-
column 4: ๋ต๋ณ์ด ํฌํจ๋ ๋ฌธ์
-
column 5: ๋ฌธ์์ ์ ๋ชฉ
-
column 6: ๋ฌธ์ ๊ณ ์ id
| ๋ถ๋ฅ | ๋ด์ฉ |
|---|---|
| Retriver ๋ชจ๋ธ ๊ฐ์ | โข Sparse Passage Retrieval : ๋จ์ด์ฌ์ (BoW)์ ๊ตฌ์ถํ์ฌ TF-IDF ๊ธฐ๋ฐ์ผ๋ก ์ค์๋๋ฅผ ๊ณ์ฐํ์ฌ ํ๊ฐ์งํ EM์ ์ฑ๋ฅ์ ๋์ด๊ธฐ ์ํด ์ ํํ ๋จ์ด๋ฅผ ๋น๊ตํ๊ธฐ ์ํ ๋ฐฉ๋ฒ. TF-IDF ๊ณ์ด ์ค SOTA๋ฅผ ๋ฌ์ฑํ ๊ฒ์ผ๋ก ์๋ ค์ง BM25 ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ์ฌ ์ฑ๋ฅ ๊ฐ์ ์ ์๋ํจ. ๋ชจ๋ ์ํฉ์์ ์ ์๋ฏธํ ์ฑ๋ฅ ๊ฐ์ ์ ๋ณด์. โข Dense Passage Retrieval : Sparse Embedding ์ ์ค์ํ ๋จ์ด๊ฐ ์ ํํ ์ผ์นํ๋ ์ํฉ์์ ์ ๋ฆฌํ๋, Dense Embedding์ ๋จ์ด์ ์ ์ฌ์ฑ ํน์ ๋งฅ๋ฝ ํ์ ์ ์ ๋ฆฌํ๊ณ ํ์ต์ผ๋ก ์๋ฒ ๋ฉ์ ๋ง๋ค์ด์ ์ถ๊ฐ์ ์ธ ํ์ต์ด ๊ฐ๋ฅํ๋ค๋ ํน์ง์ ๊ฐ์ง๊ณ ์์. ๋ฐ๋ผ์ ย postive passage์ ์ ์ฌ๋๋ฅผ ๋์ด๋ฉด์, negative passage์ ์ ์ฌ๋๋ฅผ ๋ฎ์ถ๋ ๋ฐฉ์์ผ๋ก ํ์ต์ ์๋ ํ์ผ๋, ์ค์ ๋ก๋ ๊ฒฐ๊ณผ๊ฐ ์ข์ง ๋ชปํ์. ์์ธ์ ๋ํด์๋ wrap-up report ์ฐธ์กฐ |
| Reader ๋ชจ๋ธย ๊ฐ์ - PLM๋ชจ๋ธ | โข ์คํํ ๋ชจ๋ธ : ์ต์ข
์ ์ผ๋ก klue/roberta-large ์ฌ์ฉklue/roberta-large, klue/roberta-base, monologg/koelectra-base-v3-finetuned-koquad,RoBertForQuestionAnswering |
| Reader ๋ชจ๋ธย ๊ฐ์ | โข Korquadย datasetย ์ถ๊ฐ : Reader ๋ชจ๋ธ ์ฑ๋ฅ ๊ฐ์ ์ ์ํด ๋ฐ์ดํฐ ์ฆ๊ฐ์ด ํ์ํ๋ค์ ํ๋จ. ๊ทธ์ค ๋ํ ๋ฐ์ดํฐ์
๊ณผ KorQuAD 1.0 ๋ฐ์ดํฐ์
์ด context ๊ธธ์ด๋ ๋ฐ์ดํฐ ์ถ์ฒ๊ฐ ์ ์ฌํ๋ค๊ณ ํ์
ํ์ฌ KorQuAD 1.0 ๋ฐ์ดํฐ์
์ ํ์ฉํด ๋ฐ์ดํฐ ์ถ๊ฐํ์ฌ ํ์ต์ ์งํ. ๊ธฐ๋ณธ ๋ฒ ์ด์ค๋ผ์ธ Roberta-large ๊ธฐ์ค EM 56.6700 โ 59.5800์ผ๋ก ์ฑ๋ฅ ์์น์ ํ์ธ ย โข Korquadย Fine-Tuning : ์์ KorQuAD 1.0 ๋ฐ์ดํฐ์ ์ ์ถ๊ฐํ์ฌ ํ์ตํ ๊ฒฝ์ฐ, ๋ฐฉ๋ฒ๋ก ์กฐํฉ์ ๋ฐ๋ผ ์ฑ๋ฅ ๋จ์ด์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด train ๋ฐ์ดํฐ๋ณด๋ค ์ง๋ฌธ ๊ธธ์ด๊ฐ ๊ธด ๋ฐ์ดํฐ๋ฅผ ์ ์ธํ๊ณ roberta-large๋ฅผ KorQuAD 1.0 ๋ก fine-tuning ์งํ. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ ๋๋ก๋ ๋จ์ด๋ฅผ ์ถ์ถํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์ต์ข ์ ์ถ์๋ ์ฌ์ฉํ์ง ์์. โข CNN Layer ์ถ๊ฐ : ๊ธฐ์กด RobertaForQuestionAnswering์ ๊ฒฝ์ฐ ๋ง์ง๋ง์ Linear layer๋ง์ ํต๊ณผํ๋๋ฐ, ์ด ์์ CNN layer ๋ฅผ ์ถ๊ฐํด ๊ทผ์ ๋ฐฑํฐ๊ฐ์ ์ฐ๊ฐ ์ ๋ณด๊น์ง ํ์ต๋๋๋ก ํจ. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ฝ 3์ ์ ์ฑ๋ฅ๊ฐ์ ์ ๋ณด์. |
| ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ | โข Entity Marker : ๋ช
์ฌ๋ค์ ์ผํ๋ก ๊ตฌ๋ถํด์ question ์์ ์ถ๊ฐ โข ํน์๊ธฐํธ ์ ๊ฑฐ : ์ผ๋ถ ํน์ ๊ธฐํธ(<>, ์ฑ ์ ๋ชฉ ๊ธฐํธ, ๋ถํ์ํ ๋ง๋ฐ์ดํ ๋ฑ) ์ ๊ฑฐ |
| ์์๋ธ ๋ฐฉ๋ฒ | โข ๋ชจ๋ธ์ ๋ค์์ฑ๊ณผ ์ฑ๋ฅ์ ๊ณ ๋ คํ์ฌ, Hard Voting๊ณผ Soft Voting์ ๋ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ์์๋ธ์ ์งํ. ์คํ ๊ฒฐ๊ณผ, ์ ๋ฐ์ ์ผ๋ก Hard Voting ๋ฐฉ์์ด ๋ ๋์ ์ฑ๋ฅ์ ์ ๋ํ์๊ณ , ์ด์ ๋ฐ๋ผ ์ต์ข
์ ์ถ ๊ฒฐ๊ณผ์๋ Hard Voting ๋ฐฉ์์ด ์ ์ฉ โข Hard Voting : ์์๋ธํ ํ์ผ์์ ๋จ์ํ ๊ฐ์ฅ ์์ฃผ ๋ฑ์ฅํ๋ ๋จ์ด๋ฅผ ์ ํํ๋ ๋ฐฉ์. ์ด๋, ์ต๋น๋ ๋จ์ด๊ฐ 2๊ฐ ์ด์์ผ ์ ๋๋ค์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅ โข Soft Voting: nbest_predictions.json์์ ์ ๊ณตํ๋ ๋จ์ด๋ณ ํ๋ฅ ๊ฐ์ ํ์ฉํด์, ๊ฐ ํ์ผ์์ ๋จ์ด์ ํ๋ฅ ๊ฐ์ ํ๊ท ๋ธ ํ ๊ฐ์ฅ ๋์ ๊ฐ์ ์ ํํ๋ ๋ฐฉ์ |
๐ฆlevel2-nlp-mrc-nlp-04
โโโ README.md
โโโ code
โ โโโ README.md
โ โโโ arguments.py
โ โโโ custom_model.py
โ โโโ inference.py
โ โโโ inference_bm25.py
โ โโโ inference_es.py
โ โโโ korquad_finetuning.ipynb
โ โโโ requirements.txt
โ โโโ retrieval.py
โ โโโ retrieval_bm25.py
โ โโโ retrieval_es.py
โ โโโ train.py
โ โโโ train_cnn.py
โ โโโ trainer_qa.py
โ โโโ utils
โ โ โโโ datetime_helper.py
โ โ โโโ file_name_utils.py
โ โ โโโ hyper_parameters.py
โ โ โโโ logging_utils.py
โ โ โโโ question ์ ์ฒ๋ฆฌ.ipynb
โ โโโ utils_qa.py
โโโ data
โโโ eval.sh
โโโ inference.sh
โโโ run.sh
โโโ train.sh- aistages์ ๋งํฌ๋ฅผ ํตํด ๋ฐ์ดํฐ ํด๋๋ฅผ ๋ค์ด๋ฐ๋๋ค.
tar -zxvf data.tar.gz๋ก ์์ถ์ ํด์ ํ๋ค.- data ํด๋๋ฅผ ๋ณต์ฌ + ๋ถ์ฌ๋ฃ๊ธฐ ํ๋ค.
sh run.shorchmod +x *.sh๋ก ์คํ๊ถํ ์ค์ ์ดํ์./run.sh
