- μ΄ νλ‘μ νΈλ λ€μ΄λ² λΆμ€νΈ μΊ ν AI-Tech 7κΈ° NLP Level 2 κΈ°μ΄ νλ‘μ νΈ κ²½μ§λνλ‘, Daconκ³Ό Kaggleκ³Ό μ μ¬ν λνν λ°©μμΌλ‘ μ§νλμλ€.
- ODQA(Open-Domain Question Answering) taskλ μ£Όμ΄μ§ μ§λ¬Έμ λν΄ λκ·λͺ¨ λ¬Έμ μ§ν©μμ κ΄λ ¨ μ 보λ₯Ό κ²μνκ³ , κ·Έ μ 보λ‘λΆν° μ νν λ΅λ³μ μΆμΆνλ κ²μ΄ μ£Όμ λ‘, λͺ¨λ νμμ΄ λ°μ΄ν° μ μ²λ¦¬λΆν° μμλΈκΉμ§ AI λͺ¨λΈλ§μ μ κ³Όμ μ ν¨κ» νμ νλ€.
- Public Leader Board
- Private Leader Board
Team name : μ€λΉλΌν¨μ€λ°° [ NLP 13μ‘° ]
κΆμ§μ | κΉμ±μ | κΉνμ | μ΄νμ | μ μ£Όν |
---|---|---|---|---|
Github | Github | Github | Github | Github |
μ΄λ¦ | μν |
---|---|
κΆμ§μ |
λ°μ΄ν° EDA, LLMμ ν΅ν λ°μ΄ν° μ¦κ°, MRC λͺ¨λΈ νμ λ° parameter μ‘°μ , μμλΈ |
κΉμ±μ |
λ°μ΄ν° EDA(λ¬Έμ₯ κΈΈμ΄, Queryλ¬Έ), λ°μ΄ν° μ¦κ°(AEDA, Back translation, llm, lmqg), μμλΈ |
κΉνμ |
DPR ꡬν, Hybrid Retriever ꡬν λ° Score function μΈλΆν, Soft voting μμλΈ κ΅¬ν |
μ΄νμ |
Reader λͺ¨λΈ κ°μ , MRC λͺ¨λΈ νμ λ° parameter μ‘°μ , λ°μ΄ν° μ¦κ° λ° λ³ν μλ, Score Normalize λ₯Ό ν΅ν Retrieval λ°©λ² κ°μ , μμλΈ |
μ μ£Όν |
λ°μ΄ν° EDA, DPR ꡬν, Kfold ꡬν, MRC λͺ¨λΈ νμ λ° μμλΈ |
νλ‘μ νΈ μ£Όμ | Open-Domain Question Answering : μ¬μ μ ꡬμΆλμ΄μλ Knowledge resource μμ μ§λ¬Έμ λλ΅ν μ μλ λ¬Έμλ₯Ό μ°Ύκ³ , ν΄λΉ λ¬Έμμμ μ§λ¬Έμ λ§λ λ΅λ³μ μΆμΆνλ NLP Task |
---|---|
νλ‘μ νΈ κ΅¬νλ΄μ© | Dense Passage Retrieval (DPR) λͺ¨λΈμ νμ΅νμ¬ μ§λ¬Έκ³Ό λ¬Έμ κ°μ μλ² λ©μ μμ±νλ€. μ΄ν, Train datasetμ νμ©νμ¬ Machine Reading Comprehension (MRC) λͺ¨λΈμ νμ΅νκ³ , μ΄λ₯Ό ν΅ν΄ ODQA μμΈ‘ νμΌμ μμ±νλ€. λ§μ§λ§μΌλ‘, μ¬λ¬ μμΈ‘ κ²°κ³Όλ₯Ό μμλΈνμ¬ μ΅μ’ μ μΈ λ΅λ³μ λμΆνλ€. |
κ°λ° νκ²½ | β’ GPU : Tesla V100 μλ² 4κ° (RAM32G)β’ κ°λ° Tool : Jupyter notebook, VS Code [μλ² SSHμ°κ²°] |
νμ νκ²½ | β’ Github Repository : Baseline μ½λ 곡μ λ° λ²μ κ΄λ¦¬, κ°μΈ branchλ₯Ό μ¬μ©ν΄ μμ
μν© κ³΅μ β’ Notion : ODQA νλ‘μ νΈ νμ΄μ§λ₯Ό ν΅ν μν λΆλ΄, μ€ν κ°μ€ μ€μ λ° κ²°κ³Ό 곡μ β’ SLACK, Zoom : μ€μκ° λλ©΄/λΉλλ©΄ νμ |
- νμ΅ λ°μ΄ν° κ²½λ‘:Β
/data
- νμ΅ λ©μΈ μ½λ:
train.py
- νμ΅ λ°μ΄ν°μ
κ²½λ‘:
/data/train_dataset/train
- ν
μ€νΈ λ°μ΄ν°μ
κ²½λ‘:
/data/train_dataset/validation
script νμΌμ μμ±νμ¬, νμ΄νΌ νλΌλ―Έν°μ μ‘°μ λ° train,test,ensemble μ μ©μ΄νκ² νλ€.
- Dense Retriever Train :
dense_train.py
- Train :
train.sh
- Predict :
test.sh
- Ensemble :
softvoting.py
- μ΅μ’
μ μΆ νμΌ :
/ensemble/predictions.json
π¦ base
β£ π dense_model
β£ π ensemble
β β diff.py
β£ π models
β£ π nbest
β£ arguments.py
β£ dense_encoder.py
β£ dense_train.py
β£ dense_util.py
β£ eval.sh
β£ inference.py
β£ requirements.txt
β£ retrieval.py
β£ softvoting.py
β£ test.sh
β£ train.py
β£ train.sh
β£ trainer_qa.py
β utils_qa.py
ν νμ μ μν΄ νλ‘μ νΈ κ΄λ ¨ Ground Ruleμ μ€μ νμ¬ νλ‘μ νΈκ° μννκ² λμκ° μ μλλ‘ κ·μΉμ μ νμΌλ©°, λ μ§ λ¨μλ‘ κ°λ΅ν λͺ©νλ₯Ό μ€μ νμ¬ νμ μ μννκ² μ§νν μ μλλ‘ κ³ννμ¬ μ§ννλ€.
- a. Server κ΄λ ¨
: κΆμ§μ, κΉμ±μ, μ΄νμ, μ μ£Όν μΊ νΌλ κ°μ μλ²λ₯Ό μμ±ν΄ λͺ¨λΈ μ€νμ μ§ννκ³ , κΉνμ μΊ νΌλ μλ²κ° μ ν΄ μνμΈ μλ²μμ μ€νμ μ§ννλ€.
- b. Git κ΄λ ¨
: κ°μ branch μμ±ν΄ μμ
νκ³ , 곡ν΅μΌλ‘ μ¬μ©ν νμΌμ mainμ push νλ λ°©λ²μΌλ‘ νμ
νλ€.
- c. Submission κ΄λ ¨
: λν λ§κ° 5μΌ μ κΉμ§λ μμ λ‘κ² μ μΆνκ³ , 5μΌ μ λΆν°λ μΈλΉ 2νμ© λΆλ°°νλ€.
- d. Notion κ΄λ ¨
: μνν μμ΄λμ΄ λΈλ μΈμ€ν λ°κ³Ό λΆμ
μ μν΄ νμλ₯Ό ν κ²½μ° λ
Έμ
μ κΈ°λ‘νλ©°, μ°κ΅¬ λ° μ€νκ²°κ³Όμ κΈ°λ‘μ 곡μ νλ€.
(1~5 μΌμ°¨)
: κΈ°λ³Έ Baseline format ν΄μ λ° script ꡬν(6~12 μΌμ°¨)
: λ°μ΄ν° EDA λ° κ΅¬μ‘° νμ , λ°μ΄ν° μ μ²λ¦¬, MRC λͺ¨λΈ νμ(12~20 μΌμ°¨)
: MRC λͺ¨λΈ νμ΄νΌ νλΌλ―Έν° νλ(wandb), Dense Retriever ꡬν(20~25 μΌμ°¨)
: Dense Retriever κ³Ό Sparse Retriever μ μ¬μ©ν Hybrid Retriever ꡬν(26~28 μΌμ°¨)
: μμλΈ μ§ν
- μ°λ¦¬λ λ¨Όμ Retriever - Reader λͺ¨λΈμ ꡬννκΈ°μ μμ, KorQuad data μ λν΄μ pre-trained λ λͺ¨λΈμ μ¬μ©ν΄, λΆμ‘±ν Train dataset μ 보κ°νμ¬ νμ΅νκΈ°λ‘ νμλ€.
- Retriever λͺ¨λΈμ κ²½μ°, KorQuad data λ₯Ό ν΅ν΄ question, passage embedding μ 미리 νμ΅νλ κ³Όμ μ κ°μ§ Dense Retriever κ³Ό, BM25 λ₯Ό μ¬μ©ν Sparse Retriever μ κ²°ν©ν Hybrid Retriever μ μ¬μ©νλ€.
- Hybrid Retriever μ νλ λ°©μμ ν¬κ² 3κ°μ§ μΈλ°, μ΄ 3κ°μ§λ₯Ό λͺ¨λ νμ©νμ¬ passage μ question μ μ°κ΄μ±μ μ΅λλ‘ νμ΅νκ³ , μ¬μ©νκ³ μ νμλ€.
Score Function Type | Description |
---|---|
1. Ξ» x Dense Similarity + BM25 Score | Dense Retrieverμ BM25 μ μλ₯Ό κ²°ν©νμ¬ μ§λ¬Έκ³Ό λ¬Έμ κ°μ κ΄κ³λ₯Ό κ°νν©λλ€. Ξ»λ λ μ μ κ°μ κ°μ€μΉλ₯Ό μ‘°μ ν©λλ€. |
2. Reciprocal Rank Fusion (RRF) | μ¬λ¬ Retrieverμ λνΉμ κΈ°λ°μΌλ‘ κ° λ¬Έμμ reciprocal rankλ₯Ό ν©μ°νμ¬ μ΅μ’ μ μλ₯Ό κ³μ°ν©λλ€. |
3. (Ξ» x Dense Similarity + BM25 Score) β ko-reranker | 1λ²μ Score λ₯Ό νκ΅μ΄ re-rankerμ μ λ ₯νμ¬ μ΅μ’ λνΉμ μ μ νκ³ μ±λ₯μ ν₯μμν΅λλ€. |
- μ΅μ’ μ μΌλ‘ 3κ°μ json νμΌμ softvoting κΈ°λ²μ νμ©νμ¬ μ¬μ©νλ€.
File Name | Score Function |
---|---|
nbest_predictions_op1.json | Ξ» x Dense Similarity + BM25 Score |
nbest_predictions_op2.json | Reciprocal Rank Fusion (RRF) |
nbest_predictions_op3.json | (Ξ» x Dense Similarity + BM25 Score) β ko-reranker |
# νμ λΌμ΄λΈλ¬λ¦¬ μ€μΉ
pip install -r requirements.txt
# Dense Retriever λ₯Ό μν passage , question pt νμΌ μμ±
python3 dense_train.py
# train.sh μ½λ μ€ν : MRC λ₯Ό μν Train dataset μ λν script file μ€ν
chmod +x train.sh # κΆν μΆκ°
./train.sh
# test.sh μ½λ μ€ν : Retriever μ μ¬μ©ν΄μ ODQA task μν
chmod +x test.sh # κΆν μΆκ°
./test.sh
# μ΄ν, nbest_prediction.json λ€μ΄ ./nbest μ μ μ₯λ¨
# ./nbest μ μμ±λ json νμΌλ€μ λͺ¨λ νλ₯ κ°μ λ°λΌμ soft voting νμ¬ ensemble
python3 softvoting.py