# VumBleBot Wrap Up Report

:::info
[:paperclip: HackMD์์ ๋ณธ๋ค๋ฉด ์ข ๋ ํธํ๊ณ ํ๋ถํ ๋ด์ฉ์ ๋ณด์ค ์ ์์ต๋๋ค!!](https://hackmd.io/@9NfvP9AZQL2Psilxs3oNBA/SyH-EkVt_)
:::
## ๋ชฉ์ฐจ
- **[Link](#-Link)**
- **[ํ์ ์๊ฐ](#-ํ์-์๊ฐ)**
- **[ํ ๋ชฉํ](#-ํ-๋ชฉํ)**
- [ํ์
](#-ํ์
)
- [ํ๋์ ์ฝ๋](#-ํ๋์-์ฝ๋)
- [์ฒด๊ณ์ ์ธ ์คํ](#-์ฒด๊ณ์ ์ธ-์คํ)
- **[Data EDA](#-Data-EDA)**
- [KLUE & KorQuAD dataset](#-KLUE-amp-KorQuAD-dataset)
- [ETRI dataset](#-ETRI-dataset)
- [Wikipedia dataset](#-Wikipedia-dataset)
- [Model Prediction Analysis](#-Model-prediction-analysis)
- **[Model](#-Model)**
- [Retriever](#-Retriever)
- [Reader](#-Reader)
- **[Ensemble](#-Ensemble)**
- [K-Fold Cross Validation & Bagging](#-K-Fold-Cross-Validation-amp-Bagging)
- [Soft Voting](#-Soft-Voting)
- [Hard Voting](#-Hard-Voting)
- **[ํ๊ณ ](#-ํ๊ณ )**
- [ํ ํ๊ณ ](#-ํ-ํ๊ณ )
- [๊ฐ์ธ ํ๊ณ ](#-๊ฐ์ธ-ํ๊ณ )
:::info
**์ฝ๊ธฐ ์ ์**
๋ค์ฏ๋ช
์ ํ์๋ค์ด ํจ๊ป ์์ฑํ๊ธฐ ๋๋ฌธ์ ์ฉ์ด๋ค์ด ํต์ผ๋์ง ์์ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ๊ทธ๋์ ํท๊ฐ๋ฆด ์๋ ์๋ ์ฉ์ด๋ค์ ๋ฏธ๋ฆฌ ์ ์ด๋์ต๋๋ค. :)
๋ฌธ์: document, context
์ง๋ฌธ: question, query
Dense Vector: CLS Token Vector, Dense Embedding
:::
---
## :link: Link
**[odqa baseline wiki](https://github.com/VumBleBot/odqa_baseline_code/wiki)**
**[odqa baseline source code](https://github.com/VumBleBot/odqa_baseline_code)**
**[group activity](https://github.com/VumBleBot/Group-Activity)**
---
## :school: ํ์ ์๊ฐ
- :face_palm: **[์ ์ง์](https://github.com/ebbunnim)** :dash:
- :smirk: **[๊ตฌ๊ฑด๋ชจ](https://github.com/ggm1207) (ํ์จ ์กด)**
- :man-facepalming: **[๊น์ฑ์ต](https://github.com/SeongIkKim) :dash:**
- :angel: **[์ด์์ฐ](https://github.com/sooyounlee)**
- :thinking_face: **[๊น์ข
ํ](https://github.com/olenmg)**
---
## :atom_symbol: ํ ๋ชฉํ
### :atom_symbol: ํ์
ํ์๋ค ๋๋ถ๋ถ ํ์
์ ๊ฒฝํ์ด ์ ๋ฌดํ๊ธฐ ๋๋ฌธ์ **PR์ด๋ Merge์** ๋ํ ๋๋ ค์์ด ์์์ง๋ง **ํ์
์ ์ํ๋ ๊ฒ์ด ๊ฐ๋ฐ์์๊ฒ ์ค์**ํ๋ค๊ณ ํ๋จํ๊ธฐ ๋๋ฌธ์ ์ด๋ฒ Stage์์๋ ์ด์ ๊ณผ๋ ๋ฌ๋ฆฌ ๊ฐ๋ ๋์ ํ์
์ ํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
**์ต์ํ์ง๋ ์์ง๋ง ํ์
์ ==์ ํ๋ ค๊ณ ==๋
ธ๋ ฅํ์ต๋๋ค.**
#### Issue ๊ด๋ฆฌ (์นธ๋ฐ ๋ณด๋)
**Zenhub ์นธ๋ฐ ๋ณด๋**๋ฅผ ์ฌ์ฉํ์ฌ **Issue์ ์ข
๋ฅ๋ฅผ ๋๋ ๊ด๋ฆฌ**ํ๊ณ ์ ํ์ต๋๋ค.

[Issue template](https://github.com/VumBleBot/Group-Activity/tree/main/.github/ISSUE_TEMPLATE)๊ณผ [git message](https://github.com/VumBleBot/Group-Activity/tree/main/documents)์ ์ฌ์ฉํ์ฌ ์ ๋ ์ฌ๋์ ๋ถ๋ด์ ์ค์ด๊ณ , ํ๋์ ์ด๋ค Issue/commit์ธ์ง ์์๋ณผ ์ ์๋๋ก ํ์์ต๋๋ค.
- **Question**
๊ถ๊ธํ ์ ์ด๋, ๊ถ๊ธํ์์ง๋ง ํด๊ฒฐ๋ ์ ๋ค์ ๊ธฐ๋กํฉ๋๋ค.
- **Bug**
ํ๋ก์ ํธ์์ ๋ฐ๊ฒฌํ ๋ฒ๊ทธ๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
- **Suggest**
ํ๋ก์ ํธ์ ์ถ๊ฐ๋์์ผ๋ฉด ํ๋ ๊ธฐ๋ฅ์ ์ ์ํ๊ณ ๋
ผ์ํฉ๋๋ค.
- **Todo**
๊ฐ์ธ/ํ๋ณ ์ํํ Task๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
#### Issue ์ ๋ฆฌ
๋งค์ฃผ ๋ชฉ์์ผ์ **๋ค ๊ฐ์ด ์ด๋ฒ ์ฃผ์ Issue๋ฅผ ์ฒดํฌ**ํ๊ณ **Closeํ๋ ์๊ฐ**์ ๊ฐ์ก์ต๋๋ค. ํด๋น ์ฃผ์ฐจ์ ํ ์ผ์ Milestone์ ํ ๋นํด๋์ด ํด๋น ์ฃผ์ฐจ์ ๋ชฉํ ๋ฌ์ฑ์ฌ๋ถ๋ฅผ ๊ด๋ฆฌํ ์ ์์์ต๋๋ค.

#### Gather Town
**PeerSession** ์ดํ **==๊ฐ์ธ/ํ==์ผ๋ก ๋ชจ์ฌ์ ์ง ํ๋ก๊ทธ๋๋ฐ ๋๋ ํ ์**ํ๋ ์๊ฐ์ ๊ฐ์ก์ต๋๋ค.

#### ํ์๋ก ๋ฐ documents ๊ด๋ฆฌ
- [ํ์๋ก](https://github.com/VumBleBot/Group-Activity)
- [Documents](https://github.com/VumBleBot/Group-Activity/tree/main/documents)
ํผ์ด์ธ์
ํ์์ ์งํ๋ ํ์ ๋ด์ฉ์ ๋ชจ๋ ์ ๋ฆฌํ์ฌ ํ์๋ก์ผ๋ก ๋จ๊ธฐ๊ณ , ์ธ์ ๋ ๋ค์ ์ด๋ํ ์ ์๋๋ก github์ ๊ณต์ ํ์์ต๋๋ค. competition์ ์ํ [๋
ผ๋ฌธ review](https://github.com/VumBleBot/Group-Activity/tree/main/documents/Paper%20Review), [EDA](https://github.com/VumBleBot/Group-Activity/tree/main/documents/EDA), [further reading follow-up](https://github.com/VumBleBot/Group-Activity/tree/main/documents/further_reading)๋ฑ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ณต์ ํ์ฌ ํ์ธํ ์ ์๊ฒ ํ์ต๋๋ค.

### :atom_symbol: ํ๋์ ์ฝ๋
> **"ํ๋์ ์ฝ๋๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ด๋จ๊น์? ๊ทธ๊ฒ ์ง์ง ํ์
๊ฐ์๋ฐ"**

#### :pushpin: ์ถ์ํ
ํ๋์ ์ฝ๋๋ก ์์ฑํ๊ธฐ ์ํด ์ ํฌ๊ฐ **์ง์ผ์ผ ํ๋ ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ์ถ์ํ**์
๋๋ค. ๊ตฌํํด์ผ ํ ๋ชจ๋ธ์ ํฌ๊ฒ **Retriever**์ **Reader**๊ฐ ์์๊ณ ์ถ์ํ๋ฅผ ์ํด **Retriever**์ **Reader**์ ์ญํ ์ด ๋ฌด์์ธ์ง ๋์ดํ๊ณ ํ๋ฆ์ ํ์
ํ์ฌ ์ฝ๋๋ฅผ ๊ตฌํํ์ต๋๋ค.
##### :pushpin: Retriever ํด๋์ค ๋ค์ด์ด๊ทธ๋จ
**Retriever ํ๋ฆ**
1. Embedding๋ฐ Encoder๋ฅผ ๊ฐ์ ธ์จ๋ค. ( ์์ผ๋ฉด ๋ง๋ ๋ค. )
2. Encoder๋ฅผ ์ฌ์ฉํ์ฌ Query Embedding์ ์์ฑํ๋ค.
3. Query๋น TOP-K๊ฐ์ ๋ฌธ์๋ฅผ ๋ฐํํ๋ค.
```mermaid
classDiagram
HybridRetrieval *-- SparseRetrieval: ํฉ์ฑ
HybridRetrieval *-- DenseRetrieval: ํฉ์ฑ
HybridLogisticRetrieval *-- SparseRetrieval: ํฉ์ฑ
HybridLogisticRetrieval *-- DenseRetrieval: ํฉ์ฑ
Retrieval <|-- SparseRetrieval : ์์
Retrieval <|-- HybridRetrieval : ์์
Retrieval <|-- HybridLogisticRetrieval : ์์
Retrieval <|-- DenseRetrieval : ์์
HybridLogisticRetrieval *-- LogisticRegression: ํฉ์ฑ
Retrieval : encoder
Retrieval : embedding
Retrieval : retrieve()
HybridRetrieval: encoder
HybridRetrieval: embedding
HybridRetrieval: get_embedding()
HybridRetrieval: get_relevant_doc_bulk()
HybridRetrieval: _rank_fusion_by_hybrid()
HybridLogisticRetrieval: encoder
HybridLogisticRetrieval: embedding
HybridLogisticRetrieval: get_embedding()
HybridLogisticRetrieval: get_relevant_doc_bulk()
HybridLogisticRetrieval: _exec_logistic_regression()
HybridLogisticRetrieval: _get_logistic_regression()
LogisticRegression: fit()
LogisticRegression: transform()
DenseRetrieval: encoder
DenseRetrieval: embedding
DenseRetrieval: get_embedding()
DenseRetrieval: get_relevant_doc_bulk()
SparseRetrieval: encoder
SparseRetrieval: embedding
SparseRetrieval: get_embedding()
SparseRetrieval: get_relevant_doc_bulk()
DenseRetrieval <|-- DprRetrieval
DenseRetrieval <|-- ColBertRetrieval
DprRetrieval <|-- DprBert
DprRetrieval <|-- DprKoBert
ColBertRetrieval <|-- ColBert
SparseRetrieval <|-- BM25Retrieval
SparseRetrieval <|-- TfidfRetrieval
BM25Retrieval <|-- Bm25Plus
BM25Retrieval <|-- Bm25L
BM25Retrieval <|-- ATIREBM25
BM25Retrieval: _exec_embedding()
TfidfRetrieval: _exec_embedding()
DprRetrieval: _exec_embedding()
ColBertRetrieval: _exec_embedding()
```
##### :pushpin: Reader ํด๋์ค ๋ค์ด์ด๊ทธ๋จ
**Reader ํ๋ฆ**
1. ๋ฐ์ดํฐ ์
์ ์ฒ๋ฆฌ๋ฅผ ํ๋ค.
2. ์ ์ฒ๋ฆฌ ๋ ๋ฐ์ดํฐ์
์ ์ฌ์ฉํ์ฌ ์์ธก์ ํ๋ค.
3. ํ์ฒ๋ฆฌ๋ฅผ ํตํด ์ ๋ต์ ์์ฑํ๋ค.
```mermaid
classDiagram
BaseReader <|-- CustomHeadReader: ์์
CustomModel *-- DprQAHead
CustomModel *-- CnnQAHead
CustomModel *-- LstmQAHead
CustomModel *-- ComplexCnnQAHead
CustomModel *-- CnnLstmQAHead
CustomHeadReader *-- CustomModel : ํฉ์ฑ
CustomHeadReader: model
CustomHeadReader: get_trainer()
BaseReader: model
BaseReader: metric
BaseReader: set_dataset()
BaseReader: preprocess_dataset()
BaseReader: post_processing_function()
CustomModel: backbone
CustomModel: head_input_size
CustomModel: forward()
CustomModel: random_masking()
CustomModel: get_exact_match_token()
DprQAHead: forward()
CnnQAHead: forward()
LstmQAHead: forward()
ComplexCnnQAHead: forward()
CnnLstmQAHead: forward()
```
#### :pushpin: ๊ผผ๊ผผํ ์ฝ๋ ๋ฆฌ๋ทฐ
**์ง์ ๋ Reviewer**๊ฐ ํ์์ ์ฝ๋๋ฅผ ์ฝ๊ณ ๋ถ์ํ๊ณ ํ
์คํธํจ์ผ๋ก์จ ==๊ธฐ์ ๋ถ์ฑ==๊ฐ ๋ฐ์ํ์ง ์๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ค๊ณ ๋
ธ๋ ฅํ์ต๋๋ค.

#### :pushpin: ๋์ผ๋ก ์ฝ์ ์ ์๋ ์ฝ๋

์์ ๋ ์ฝ๋๋ **๋์ผํ ๊ธฐ๋ฅ์ ์ํํ๋ ์ฝ๋**์
๋๋ค.
**๋จ์ผ ๊ธฐ๋ฅ ๋ถ๋ฆฌ**๋ฐ **์ธ๋ถ ๊ธฐ๋ฅ์ ์จ๊ธฐ์ง ์์**์ผ๋ก์จ ๋์ผ๋ก ์ฝ๊ฒ ์ฝ์ ์ ์๋ ์ฝ๋๋ฅผ ์์ฑํ์์ต๋๋ค.
#### :pushpin: ๊พธ์คํ ๋ฆฌํฉํ ๋ง
**์ด๋ฏธ ๊ตฌํ๋ ๊ธฐ๋ฅ์ ์์ง๋ ฅ, ๊ฒฐํฉ๋ ฅ์ ๊ณ ๋ คํ์ฌ ์ฌ์์ฑํ๊ณ ๋ฐฉ์ด์ ์ธ ์ฝ๋**๋ฅผ ์์ฑํ๊ธฐ ์ํด ๊พธ์คํ ๋ฆฌํฉํ ๋ง์ ํ์์ต๋๋ค.

### :atom_symbol: ์ฒด๊ณ์ ์ธ ์คํ
#### :pushpin: Key, Value๋ก ๊ด๋ฆฌํ๋ ์คํ ์ ๋ต
**JSON**์ ์ฌ์ฉํ์ฌ **์คํ ํ๊ฒฝ์ ๊ด๋ฆฌ**ํ์์ต๋๋ค.

EX) **Retriever ๋จ์ผ ๋ชจ๋ธ ๋น๊ต ์คํ**
- **TFIDF**: RET_01_TFIDF.json
- **BM25**: RET_02_BM25.json
- **DPRBERT**: RET_03_DPRBERT.json
- **ATIREBM25**: RET_04_ATIREBM25.json
```wrap
python -m run_retrieval --strategies RET_01_TFIDF,RET_02_BM25,RET_03_DPRBERT,RET_04_ATIREBM25 --run_cnt 1 --debug False --report False
```

#### :pushpin: Slack Bot์ ์ฌ์ฉํ ์คํ ๊ณต์

**Slack Bot์ ์๋ฆผ์ฉ์ผ๋ก ๊ตฌ์ถ**ํ์ฌ **์ค์๊ฐ์ผ๋ก ์คํ ๊ณต์ **๋ฅผ ํ์ต๋๋ค.
#### :pushpin: ์ ์ค๊ณํ ๋ชจ๋ธ ๊ฒ์ฆ ์ ๋ต
**Reader**๋ชจ๋ธ์`EM`๊ณผ `F1`์ ์๋ก ์ฑ๋ฅ์ ํ๊ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ **Retriever**๋ชจ๋ธ์ ๊ฒ์ํ Top-K๊ฐ์ ๋ฌธ์์ค์ ์ ๋ต ๋ฌธ์๊ฐ ์ผ๋ง๋ ํฌํจ๋๋์ง๋ก ์ฑ๋ฅ์ ํ๊ฐํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ **๋ชจ๋ธ์ ์ ๊ตฌ์ถํ๋์ง์ ํ๋จ์ ๊ฒ์ฆ ์ ๋ต์ ์ด๋ป๊ฒ ํ๋์ ๋ฐ๋ผ์ ๋ฌ๋ผ์ง๊ฒ ๋ฉ๋๋ค.**
##### Reader ๋ชจ๋ธ ๊ฒ์ฆ ์ ๋ต
`transformer`์์ ์ ๊ณตํ๋ `metric`๊ณผ **Competition์์ ์ ๊ณตํ๋ ์ ์ฒ๋ฆฌ ์ฝ๋**๋ฅผ ์ฌ์ฉํ์ฌ ๋ํ์ ๋๊ฐ์ ๊ฒ์ฆ ์ ๋ต์ ์ฌ์ฉํ์์ต๋๋ค.
##### Retriever ๋ชจ๋ธ ๊ฒ์ฆ ์ ๋ต
**Retriever**๋ ๊ฒ์ฆ ๋ฐฉ์์ด ๋ํ์์ ๋ฐ๋ก ์ฃผ์ด์ง์ง ์์์ต๋๋ค. ๊ทธ๋์ **Retriever๊ด๋ จ ๋
ผ๋ฌธ์์ ๊ฒ์ฆํ๋ ๋ฐฉ์**์ ๊ฐ์ ธ์ Retriever ๋ชจ๋ธ์ ๊ฒ์ฆํ์ต๋๋ค.
๋ํ ๊ฒ์ ๋ฐ์ดํฐ์
์ธ Wiki์ **๋น์ทํ์ง๋ง ์ฝ๊ฐ ๋ค๋ฅธ** ์ค๋ณต ๋ฌธ์๊ฐ ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐ๊ฐ ์์ด์ ๊ฒ์ฆํ ๋ `fuzzywuzzy` ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ **๋ฌธ์๊ฐ์ [Levenshtein Distance](https://en.wikipedia.org/wiki/Levenshtein_distance)๋น์จ๋ก ๋ฌธ์๋ฅผ ์ ๊ฐ์ ธ์๋์ง ํ๋จ**ํ์ต๋๋ค.
---
## :books: Data EDA
### :books: KLUE & KorQuAD dataset
**[๐ป MRC/KorQuAD ๋ฐ์ดํฐ ์๊ฐํ](https://github.com/VumBleBot/Group-Activity/blob/main/documents/EDA/01-data_eda.ipynb)**
**[๐ป MRC/KorQuAD EDA ์ ๋ฆฌ](https://hackmd.io/@cdll-lo-ol-lo-ol/S1sZi8pw_)**
์ฃผ์ด์ง Wikipedia ๋ฐ์ดํฐ์
๊ณผ KorQuAD ๋ฐ์ดํฐ์
์ ๋น๊ต ๋ฐ ๋ถ์ํ์ฌ ๊ฐ๊ฐ์ ๋ฐ์ดํฐ์
๋ค์ด ์ด๋ค ํน์ง์ ๊ฐ์ง๊ณ ์๋์ง ์๊ฐํํ์์ต๋๋ค. ์ธ๋ถ์ ์ผ๋ก ์ํํ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. Document(context) ๋ด answer์ ์์น ์๊ฐํ
2. validation์์ ์ ๋ต์ด n๊ฐ์ธ ๊ฒฝ์ฐ check
3. Document [CLS] Token vector - TSNE๋ก ์๊ฐํ
4. dataset์ ์ ์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ ํต๊ณผ ์ฌ๋ถ ์ฒดํฌ
5. Exact Match์ ์ํฅ์ ๋ผ์น๋ Token ์ฒดํฌ
#### 1. Document(context) ๋ด answer์ ์์น ์๊ฐํ
์๊ฐํ๋ฅผ ์ฉ์ดํ๊ฒ ํ๊ธฐ์ํด feature๋ฅผ ์ ์ฒ๋ฆฌํ์ฌ dataframe์ผ๋ก ๋ง๋ค์ด์ ์งํํ์์ต๋๋ค.

๋จผ์ Answer๊ฐ Document์์ ์์นํ๋ ๊ณณ์ Wiki ๋ฐ์ดํฐ์
์ด๋ KorQuAD ๋ฐ์ดํฐ์
๋ชจ๋ **๋น๊ต์ ๋ฌธ์์ ์์ชฝ ๋ถ๋ถ์์ ์ ๋ต์ด ๋ฑ์ฅ**ํ์ต๋๋ค.

๊ทธ๋ฌ๋ KorQuAD ๋ฐ์ดํฐ์
์ด ์ฃผ์ด์ง Wiki ๋ฐ์ดํฐ์
์ ๋นํ์ฌ **ํ๊ท ์ ์ผ๋ก ๋ฌธ์์ ๊ธธ์ด๊ฐ ๋ ์งง์์ต๋๋ค(400 vs 800)**. ์ด์ ๋ฐ๋ผ ์ ๋ต์ด ์์ํ๋ ๊ตฌ๊ฐ๋ Wiki ๋ฐ์ดํฐ์
์ ๋นํ์ฌ ๋น๊ต์ ์์ชฝ์ ์์นํ์ต๋๋ค. ๋ฐ๋ผ์ Wiki ๋ฐ์ดํฐ์
์ด MRC์ ์ข ๋ ์ด๋ ค์ด ๋ฐ์ดํฐ๋ผ๋ ๊ฒ์ ์์ธกํ ์ ์์์ต๋๋ค. ๋ํ, Wiki ๋ฐ์ดํฐ์
์ ๊ฒฝ์ฐ ๊ธธ์ด 500 ์ดํ์ ๋ฌธ์๋ค์ (์๋์ ์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง) ์ ๊ฑฐ๋์ด ์์์ต๋๋ค.
์ด๋ฌํ ๋ถ์์ ๊ธฐ๋ฐ์ผ๋ก, ์ถํ KorQuAD ๋ฐ์ดํฐ์
์ ํ์ต ๋ฐ์ดํฐ์
์ผ๋ก ์ถ๊ฐํ ๋ ์ฌ๋ฌ ๋ถํฌ๋ฅผ ๊ณ ๋ คํ์ฌ samplingํ๋๋ก ๊ตฌํํ์ต๋๋ค.
#### 2. validation์์ ์ ๋ต์ด n๊ฐ์ธ ๊ฒฝ์ฐ check
๋ ๋ฐ์ดํฐ์
๋ด์์ answer๊ฐ 2๊ฐ ์ด์์ธ ๊ฒฝ์ฐ๋ฅผ ์ฒดํฌํ์์ผ๋, ์ ๋ต์ด ์ฌ๋ฌ ๊ฐ๋ก ์ฃผ์ด์ง๋ ๊ฒฝ์ฐ๋ ์์์ต๋๋ค. ๋์ค์ ๋ง์คํฐ์ธ์
์์ ์๊ฒ ๋์์ง๋ง, ODQA์ฉ์ผ๋ก ์ ์๋ ๋ฐ์ดํฐ์
์ด ์๋์๊ธฐ ๋๋ฌธ์ ์ ๋ต์ด n๊ฐ์ธ ๊ฒฝ์ฐ๊ฐ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค.
#### 3. Document [CLS] Token vector - TSNE๋ก ์๊ฐํ

CLS Token vector๋ ํด๋น ์ง๋ฌธ์ ์๋ฏธ๋ฅผ ๋ฒกํฐ๊ฐ์ผ๋ก ๋ณํํ ๊ฒ์ด๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค. ๋ฌธ์๋ค์ ์๋ฒ ๋ฉ ๊ณต๊ฐ์ ์๊ฐํํ๊ธฐ ์ํด ๋ค๊ตญ์ด BERT Dense Retriever๋ฅผ ์ด์ฉํ์ฌ ๋ฌธ์๋ค์ CLS token vector๋ฅผ ๋ฝ์๋ธ ๋ค, ์ด๋ฅผ TSNE๋ก 2์ฐจ์ ํ๋ฉด์์ ์๊ฐํํ์์ต๋๋ค.
์๋ฒ ๋ฉ ๊ณต๊ฐ์์, **๋ฌธ์๊ฐ์ ๊ตฐ์ง๋ค์ด ์ด๋์ ๋ ์กด์ฌํ๋ ๊ฒ์ ํ์ธ**ํ ์ ์์ต๋๋ค. ๊ตฐ์ง์ด ์ฌ๋ฟ ํ์ฑ๋์๋ค๋ ๊ฒ์ Dense Retriever๊ฐ ํท๊ฐ๋ฆด ๋งํ ๋ฌธ์๊ฐ ๋ง๋ค๋ ๋ป์ด๋ฏ๋ก, ์ด ์ํ์์๋ **TOP-1์ ๋ฌธ์๋ฅผ ๋ฐํํ๋ Dense Retriever๊ฐ ์ง๋ฌธ์ ๋์ํ๋ ์ ํํ ๋ฌธ์๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ ๊ฒ**์
๋๋ค.
๋ฐ๋ผ์ Reader๊ฐ ์ฌ๋ฐ๋ฅธ ๋ฌธ์๋ฅผ ๋ฐ๊ธฐ ์ํด์๋ **Retriever๊ฐ ๋ ๋ง์ ๋ฌธ์ ํ๋ณด๋ฅผ ๋ฐํํ ํ์๊ฐ ์๋ค๋ ๊ฒ**์ ์ ์ ์์ต๋๋ค.
#### 4. dataset์ ์ ์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ ํต๊ณผ ์ฌ๋ถ ์ฒดํฌ
๋ฐ์ดํฐ์
์ ์ ์ฒ๋ฆฌ ํ์์ฑ์ ์์๋ณด๊ธฐ ์ํ์ฌ ์ ์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ์ ํจ์๋ณ๋ก ๋๋์ด ํต๊ณผ ํ์๋ฅผ ์ฒดํฌํ์ต๋๋ค. ์ํํ ์ ์ฒ๋ฆฌ๋ `html ์ ๊ฑฐ`, `๋ฌธ์ฅ ๋ถ๋ฆฌ`, `์ด๋ฉ์ผ ์ ๊ฑฐ`, `URL ์ ๊ฑฐ`, `์ธ๋ก ์ ๋ณด ์ ๊ฑฐ`, `์๋ฏธ์๋ ๊ดํธ ์ ๊ฑฐ` ๋ฑ์ด์์ต๋๋ค.
์ ์ฒด ๋ฌธ์ ์งํฉ์์ ์ํ๋์ง ์์ ์ ์ฒ๋ฆฌ๋ `html ์ ๊ฑฐ`, `๋ฌธ์ฅ ๋ถ๋ฆฌ`, `์ด๋ฉ์ผ ์ ๊ฑฐ` ์ ๋๋ก ๋ณด์๋๋ฐ, ์ด๊ฒ ์ญ์๋ ์ฌ๋ฐ๋ฅด๊ฒ Counting๋์ง๋ ๋ชปํ์ต๋๋ค. **Wiki ๋ฐ์ดํฐ ์
**, **KLUE MRC ๋ฐ์ดํฐ ์
**, **KorQuAD ๋ฐ์ดํฐ์
** ์ ๋ถ ์ ์ฒ๋ฆฌ๊ฐ ์ํ๋์ง ์์๊ธฐ ๋๋ฌธ์ ์ด ์ ์ฒ๋ฆฌ๊ฐ ์ฑ๋ฅ ๊ฐ์์ ์ํฅ์ด ์์๊ฑฐ๋ผ ํ๋จํ์๊ณ , ๋ฐ๋ผ์ ๋ฐ๋ก ์ ์ฒ๋ฆฌ๋ฅผ ์ํํ์ง ์์์ต๋๋ค.
#### 5. Exact Match์ ์ํฅ์ ๋ฏธ์น๋ Token ์ฒดํฌ
Mecab, hannanum, kkma ๋ฑ์ ํํ์ ๋ถ์๊ธฐ๋ฅผ ์ด์ฉํ์ฌ **prediction ๋ฐ ground truth ํ ํฐ์ ํํ์ ํ์ฒ๋ฆฌ๋ก ์ฒ๋ฆฌํ ์ ์๋์ง๋ฅผ ๋ถ์**ํ์์ต๋๋ค.
EM์ผ๋ก ์ฒ๋ฆฌ๋์ง ์์ ์ค๋ต์ ํํ์๋ฅผ ๋ถ์ํ์ฌ ์ ๋ต๊ณผ ํํ์๊ฐ ์ผ๋ง๋ ๊ฒน์น๋์ง ๋ถ์ํ๊ธฐ๋ ํ๊ณ , ํํ์ ๋ถ์์ ํตํ์ฌ ์์ธก์ ํ์ฒ๋ฆฌํ ์ ์๋ ๊ฒฝ์ฐ์ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ๋ฅผ ๋น๊ตํ์ต๋๋ค.
์ด ๋ถ์์ ํตํด, ์์ธก ์ฑ๋ฅ์ ๋์ด๊ธฐ ์ํ **๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ์ ํ์ฒ๋ฆฌ์ ํ์์ฑ์ ์ฒ์์ผ๋ก ํ์ธ**ํ์ต๋๋ค.
### :books: ETRI dataset
#### [๐ป ETRI Dataset EDA](https://github.com/VumBleBot/Group-Activity/blob/main/documents/EDA/ETRI_DATASET_EDA.ipynb)
ETRI์์ ์ ๊ณตํ๋ MRC ๋ฐ์ดํฐ์
์ ํ์ฉํ๊ณ ์ ๋ฌธ์์ ๊ธธ์ด, ๋ต๋ณ์ ๊ธธ์ด, ๋ต๋ณ ์์ ์์น, ๋ต๋ณ ์ข
๋ฃ ์์น๋ฅผ ํ์
ํ๋ EDA๋ฅผ ์งํํ์ต๋๋ค.
ETRI ๋ฐ์ดํฐ๋ KLUE์ ๋นํด ๋ฌธ์์ ๊ธธ์ด๊ฐ ํ๊ท ์ ์ผ๋ก ์งง์๊ณ , ๊ทธ๋ก ์ธํด ๋ต๋ณ์ด ์๋์ ์ผ๋ก ์์ ์์นํ๋ค๋ ํน์ง์ ๋ณด์์ต๋๋ค. ๋ต๋ณ์ ๊ธธ์ด๋ KLUE ๋ฐ์ดํฐ์
์ ๋นํด ๊ธด ๊ฒ์ผ๋ก ํ์
๋์์ต๋๋ค. ๋ํ KLUE ๋ฐ์ดํฐ์
์ **ํ ์ง๋ฌธ ๋น ์ง๋ฌธ์ ๊ฐ์๊ฐ ์ต๋ 4๊ฐ์๋ ๊ฒ์ ๋นํด ETRI ๋ฐ์ดํฐ์
์์๋ ํ ์ง๋ฌธ ๋น ์ง๋ฌธ์ ๊ฐ์๊ฐ 7~8๊ฐ์ธ ๊ฒฝ์ฐ**๋ ์๋ค๋ ๊ฒ์ ํ์
ํ์์ต๋๋ค.
EDA ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก, ๋ค์๊ณผ ๊ฐ์ ์ํ๋ง ๊ธฐ์ค์ ์ ์ฉํ์์ต๋๋ค.
1) KLUE ๋ฐ์ดํฐ์
์ ๋ฌธ์ ๊ธธ์ด๊ฐ 500 ์ด์์ด๋ผ๋ ์ ์ ๊ฐ์ํ์ฌ ETRI ๋ฐ์ดํฐ์
์ผ๋ก๋ถํฐ 500 ์ด์ ๊ธธ์ด์ ๋ฌธ์๋ค๋ง์ ์ํ๋งํ์์ต๋๋ค.
2) ๋ต๋ณ ์์ ์ง์ ์ด KLUE์ ์ ์ฌํ ๋ฐ์ดํฐ์ ๋์ฑ ๊ฐ์ค์น๋ฅผ ์ฃผ์ด์ ์ํ๋งํ์ต๋๋ค.
3) ํ ๋ฌธ์ ๋น ์ง๋ฌธ์ ๊ฐ์๊ฐ 4๊ฐ ์ด์์ด ๋์ง ์๋๋ก ํํฐ๋ง์ ์ ์ฉํ์์ต๋๋ค.
์์ ๊ฐ์ ๊ธฐ์ค์ ์ ์ฉํ์ฌ KLUE ๋ฐ์ดํฐ์
๊ณผ ETRI ๋ฐ์ดํฐ์
์ ๋น์ค์ ๋ฌ๋ฆฌ ํ์ฌ ์ฌ๋ฌ ๋ฒ์ ์ ํ์ต ๋ฐ์ดํฐ์
์ ์์ฑํ์์ต๋๋ค.
### :books: Wikipedia dataset
**[๐ป ์ํคํผ๋์ ๋ฉํ ์ ๋ณด ๋ถ์](https://github.com/VumBleBot/Group-Activity/blob/main/documents/EDA/wikidocs_eda.ipynb)**
Retriever๊ฐ ์ฐพ์์ผํ๋ context์ ํน์ง์ ๋ถ์ํ๊ณ ์ ์ฃผ์ด์ง ์ํคํผ๋์ ๋ฐ์ดํฐ์
์ ๋ํ EDA๋ฅผ ์งํํ์ต๋๋ค. ์งํํ EDA๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. ์ ์ ํ top-k์ k๊ฐ(๋น์ทํ ์ฃผ์ ๋ก ๋ฌถ์ ์ ์๋ context์ ํ๊ท ๊ฐ์)
2. context/answer์ ํ๊ท ์ ์ธ ๊ธธ์ด์ ์ด์์น
3. ๋ฌธ์์ ํํ
4. (EDA ์์ ๊น์ง ๊ฐ๋ฐ๋) retriever ์ฑ๋ฅ๊ณผ topk ์์ธก ๊ฒฐ๊ณผ
5. ๊ฐ context์์ ํต์ฌ ๋จ์ด์ ์ฃผ๋ชฉ๋
#### ๐ ์ ์ ํ top-k์ k๊ฐ
๋จผ์ , query๊ฐ ํน์ context์์๋ง specificํ ๊ฒฝ์ฐ๋ ์์ง๋ง, ์ฌ๋ฌ context์ ๊ฑธ์ณ ๋ฑ์ฅํ๋ ์ธ๋ฌผ/์ฌ๊ฑด/์ฅ์ ๋ฑ์ ๋ํด ๋ฌป๋ ๊ฒฝ์ฐ๋ ์์์ต๋๋ค. ์ด ๊ฒฝ์ฐ retriever๊ฐ context๋ฅผ ์ฐพ๋ ๊ฒ์ด ์ด๋ ค์ธ ์ ์์ต๋๋ค. query๊ฐ generalํ ๊ฒฝ์ฐ, ๋ฌธ๋งฅ์ ๋์ผํ title์ ๊ฐ์ง context๋ค์ retrieveํ๊ธฐ ์ฝ๋ค๋ ํ๋จํ์ **uniqueํ title์ ๊ฐ์์, ํ title์ ์ํ context์ ๊ฐ์๋ถํฌ**๋ฅผ ์กฐ์ฌํ์ฌ ==์ด์์ ์ธ top-k ๊ธฐ๋ณธ์น==๋ฅผ ์ค์ ํ๊ณ ์ ํ์ต๋๋ค.
์ด 31755๊ฐ์ title์ ๊ธฐ์ค์ผ๋ก, ํ title์ ํด๋นํ๋ context ๊ฐ์ ๋ถํฌ๋ฅผ ํ์ธํ ๊ฒฐ๊ณผ ์ฝ 3๋ง๊ฐ(์ฝ 95%)์ title์ด 5๊ฐ ์ดํ์ subcontext๋ค์ ๊ฐ์ง๊ณ ์์์ต๋๋ค. ๋ฐ๋ผ์ ์ ์ฒด ๋ฌธ์๋ฅผ ๋ณด๊ธฐ ์ํด์๋ **retriever์ top-k๊ฐ ==5~10๊ฐ== ์ ๋๋ก ์ถฉ๋ถํ๋ค**๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค.
<u>์ค์ ๋ก ์ดํ predict์์๋ retriever์ top-k๋ฅผ ์ ํฌ๊ฐ ์ต์ ์ด๋ผ๊ณ ํ๋จํ 3~10 ์ฌ์ด๋ก ์ค์ ํ์์ต๋๋ค.</u>
#### ๐ Retriever ์ฑ๋ฅ๊ณผ top-k ์์ธก ๊ฒฐ๊ณผ
๋, TF-IDF retriever ๊ธฐ์ค์ผ๋ก top-10์ context๋ฅผ ๋ฝ์์ ๋ retriever์ ์ฑ๋ฅ๊ณผ ๋ฌธ์ ์ ์ ์ ์ฑ์ ์ผ๋ก ํ์
ํ์ต๋๋ค. ์ฝ 3600๊ฐ์ query ์ค 3200๊ฐ(์ฝ 90%) ๊ฐ๋์ top-10์ผ๋ก ์ฐพ์ ์ ์์์ต๋๋ค. ๋ค๋ง ๋ฌธ์ ๊ฐ ๋๋ ๋ถ๋ถ์, **query์์ ๋ณธ๋์ context์ paraphrase๋ ๋จ์ด๊ฐ ๋ฑ์ฅํ์ ๊ฒฝ์ฐ retriever์ ์ฑ๋ฅ์ด ๊ธ๊ฒฉํ๊ฒ ๋จ์ด์ง๋ค**๋ ๊ฒ์ด์์ต๋๋ค.
Q. ์ข
๊ต์ ๋ชฉ์ ์ผ๋ก ํ๋ฆฌ ๋ํ๊ต์ ๊ตํฉ์ด ์ธ์ด ๊ต์ก ๊ธฐ๊ด์?
A. ๋๋ฐฉ ์ธ์ด ํ์
> ...**ํ๋ฆฌ ๋ํ๊ต**์๋ **๊ตํฉ**์ ์ํด **๋ฌด์ฌ๋ฆผ๋ค์ ๊ฐ์ข
๊ณผ ๋๋ฐฉ ์ ๊ตํ์์ ์ฌ์ผ์น**๋ฅผ ์ํด ๊ทธ๋ค์ ์ธ์ด๋ฅผ **๊ฐ๋ฅด์น๋ ค๋** ๋ชฉ์ ์ผ๋ก **๋๋ฐฉ ์ธ์ด ํ์**์ด ์ค๋ฆฝ๋์๋ค...
์์ ์์๋ฅผ ๋ณผ ๋, context์ `๋ฌด์ฌ๋ฆผ๋ค์ ๊ฐ์ข
๊ณผ ๋๋ฐฉ ์ ๊ตํ์์ ์ฌ์ผ์น`๋ผ๋ ๋ถ๋ถ์ด query์์๋ `์ข
๊ต์ ๋ชฉ์ `์ด๋ผ๋ ์ด๊ตฌ๋ก paraphrase๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์ด์ฒ๋ผ ๊ฒน์น๋ ๋จ์ด๊ฐ ๋ฑ์ฅํ์ง ์๊ณ ๋ณํ๋ ์ด๊ตฌ๊ฐ ๋ฑ์ฅํ ๋, TF-IDF retriever์ ํน์ฑ ์ ์คํ๋ ค query์ ๋ค๋ฅธ ๋ถ๋ถ์ ์ฃผ๋ชฉํ๊ฒ ๋์ด ๊ฒฐ๊ณผ์ ์ผ๋ก top-10์ผ๋ก๋ ์๋ฌธ์ ์ฐพ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ์์์ต๋๋ค.
์๊ฐ๋ณด๋ค ์ค์ํ TF-IDF์ ์ฑ๋ฅ์๋ ๋ถ๊ตฌํ๊ณ ์ด๋ฌํ ๋ฌธ์ ์ ๋๋ฌธ์ **๋ฌธ๋งฅ์ ์ ์ฌํ ์ด๊ตฌ๋ฅผ ์ ํฌ์ฐฉํด๋ผ ์ ์๋ ==Dense Retriever==๋ฅผ ๋ณ์ฉํ ํ์์ฑ**์ ๋๋ผ๊ฒ ๋์์ต๋๋ค.
### :books: Model prediction analysis
#### [๐ป ์์ธก๊ฐ ํ๋กํ์ผ๋ง](https://github.com/VumBleBot/Group-Activity/blob/main/documents/EDA/prediction_eda.ipynb)
240๊ฐ validation example์ ๋ํ ํด๋น ์์ ์ Best MRC model prediction๊ณผ ground truth๋ฅผ ๋น๊ตํ์ฌ ๋ชจ๋ธ์ ๋ฌธ์ ์ ์ ํ์
ํ๊ณ ๋ชจ๋ธ ๊ฐ์ ์ ๋ฐฉํฅ์ฑ์ ๊ณ ๋ฏผํ์์ต๋๋ค.
์ด 240๊ฐ example์์ **์ค๋ต์ ๊ฐ์๋ 96๊ฐ**์๋๋ฐ, ์ด๋ฅผ ๋ถ๋ฅํ์์ ๋ ๋ค์๊ณผ ๊ฐ์ ํํ๋ก ์ ๋ฆฌํ ์ ์์์ต๋๋ค.
1. ==์ ์ฌ๊ด๊ณ== : ํ์์ ๋ง์ง๋ง ๋ํ
์ผ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ
> ์์ธก : 1967๋
8์ 16์ผ
> ์ ๋ต : 1967๋
11์ 15์ผ
2. ==ํฌํจ๊ด๊ณ== : ์ ๋ต ์ด๊ตฌ์ ์ผ๋ถ๋ถ๋ง์ ์์ธกํ๊ฑฐ๋ ์ ๋ต ์ด๊ตฌ๋ฅผ ํฌํจํ ์ด๊ตฌ๋ฅผ ์์ธกํ ๊ฒฝ์ฐ
> ์์ธก : **๋๋ก์ค**
> ์ ๋ต : ๋ํ ํญ๊ณต๋ชจํจ **๋๋ก์ค**
> ์์ธก : **๋ง๊ฑฐ๋ฆฟ ๋์ฒ** ์ ์๊ตญ ์์
> ์ ๋ต : **๋ง๊ฑฐ๋ฆฟ ๋์ฒ**
3. ==์๋ฏธ/๋ถ๋ฅ์ ๋น์ทํ ๊ด๊ณ==
> ์์ธก : ๋๋ถ์
> ์ ๋ต : ์ฌ์ฑํ์ฌ
5. ==query์ ์ ํ ๊ด๋ จ์๋ ๋ถ์ฉ์ด==
> ์์ธก : ๋น๋ก
> ์ ๋ต : ๊ฐ๋ฃจ์
6. ==์์ ํ==
> ์์ธก : **"์ด๋ค ๊ฒฝ์ฐ์๋ ํํ ์"**
> ๋ต๋ณ : ๋ณธ๊ตญ ์ํ๊ฐ ์๋ฏผ์ง์ ๋ํ ์
๋ฒ์ **โ์ด๋ค ๊ฒฝ์ฐ์๋ ํํ ์โ** ์๋๋ก ํ์๋ค
##### 1. ์ ์ฌ๊ด๊ณ
๋ชจ๋ธ์ด ๋ฌธ๋งฅ์ ์ ํํ ์ดํดํ์ง ๋ชปํ๊ณ '๋ ์ง' ๋ฑ์ ํค์๋์ ์ง์คํ์ฌ ๋
ํดํ์๋ค๊ณ ํ๋จํ์์ต๋๋ค. ๋ฐ๋ผ์ feature๋ฅผ ๋๋ฆฌ๋ , ๋ชจ๋ธ ์ฌ์ด์ฆ๋ฅผ ๋๋ฆฌ๋ ๋ชจ๋ธ ์์ฒด ๋
ํด ๋ฅ๋ ฅ์ ๊ฐ์ ์ด ํ์ํ์ต๋๋ค.
##### 2. ํฌํจ๊ด๊ณ
์ด 48๊ฐ๋ก **์ค๋ต์ ์ ๋ฐ์ ์ฐจ์งํด ์ฒ๋ฆฌ๊ฐ ๊ผญ ํ์ํ ์ ํ**์ด์์ต๋๋ค. EDA ์์ ์ best ๋ชจ๋ธ์ EM ์ค์ฝ์ด์ F1 ์ค์ฝ์ด๊ฐ ์ฝ 16%๊ฐ๋ ์ฐจ์ด๋ฌ๋๋ฐ, ๋ค๋ฅธ ํ์ ๋นํด ์ ๊ฒ๋ 3~4%, ๋ง๊ฒ๋ 6~7%์ ๋ ๊ฐญ์ด ํฐ ์ํ์์ต๋๋ค. ์ฌ์ค ์ด ์ ํ์ ์ค๋ต ์ค ๋๋ถ๋ถ์ ๋ฌธ๋งฅ์ผ๋ก ๋ดค์ ๋ ์ฌ์ค์์ ์ ๋ต์ด์์ง๋ง, EM์ผ๋ก ์ธ์ ๋์ง ์๋ ๊ฒ์ ํฌ์ฐฉํ๊ณ ์ด๋ฅผ ๊ฐ์ ํ๊ณ ์ **์กฐ์ฌ, ๊ด์ฌ ๋ฑ์ ์ ๊ฑฐํ๋ ๋ฑ ๋ชจ๋ธ์ ์์ธก์ ํ์ฒ๋ฆฌ**ํ๋ ๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋์์ต๋๋ค. ๋, ๋น๋ก ์ค์ฝ์ด ๊ฐ์ ์๋ ํจ๊ณผ๊ฐ ์์์ง๋ง MRC ๋ชจ๋ธ์ด ๋ฝ์ ์ ๋ต์ด ์๋ ๋ฌธ์ฅ์ ๋ณต์ํ์ฌ ํด๋น ๋ฌธ์ฅ์ ๋ํด ๋ค์ ๋
ํด๋ฅผ ์ํํ๋ [sentence pick technique](#Sentence-Pick-&-Re-predict)์ ์ ์ํ๊ธฐ๋ ํ์ต๋๋ค.
##### 3.์๋ฏธ/๋ถ๋ฅ์ ๋น์ทํ ๊ด๊ณ
๊ธฐ์กด ๋จ์ผ BERT ๋ชจ๋ธ์ด ํ์
ํ์ง ๋ชปํ๋ ๋ฌธ๋งฅ์ด ์๋ค๊ณ ํ๋จํ์๊ณ , ์ถํ **๊ฐ์ query์ ๋ํด ์์ดํ ๋ต๋ณ์ ๋ด๋๋ ๋ค๋ฅธ ๋ชจ๋ธ๊ณผ์ ensemble**์ ์ํํ๋ ๊ฒ์ผ๋ก ์ด์ด์ก์ต๋๋ค.
##### 4.query์ ์ ํ ๊ด๋ จ์๋ ๋ถ์ฉ์ด
paraphrase๋ query๋ฅผ ๋ช
ํํ ์ดํดํ์ง ๋ชปํ์ฌ ๋ฒ์ฉ์ฑ์ด ๋์ ๋ต๋ณ์ ๋ด๋๋๋ค๊ณ ํ๋จํ์ต๋๋ค. nbest prediction์ ํ์ธํ์์ ๋ ์ ๋ต์ด score์์์ ๋ถ์ฉ์ด์ ๋ฐ๋ ค ์์๊ถ ํ์์ ์กด์ฌํ๋ ๊ฒ์ ํฌ์ฐฉํ์ต๋๋ค. ๋ฐ๋ผ์ ์ฌ์ค์ query์ ๋ํด ์ ๋ต์ผ ๊ฐ๋ฅ์ฑ์ด ๊ฑฐ์ ์๋ ๋ถ์ฌ ๋ฑ์ ๋ถ์ฉ์ด๋ค์ **POS ํ๊น
์ผ๋ก ๋ถ์ํ์ฌ nbest rerankํ๋ ํ์ฒ๋ฆฌ**๋ก ์ด์ด์ก์ต๋๋ค.
##### 5. ์์ ํ
์ฌ์ค์ ๊ฐ์ฅ ๊ฐ์ ํ๊ธฐ ์ด๋ ต๋ค๊ณ ํ๋จํ๋ ์ค๋ต์ผ๋ก, ๊ธฐ์กด valdation set์ example๋ค์ด ๋๋ถ๋ถ์ ๋ต๋ณ์ ๋จ๋ตํ์ผ๋ก ์๊ตฌํ๋ ๊ฒ๊ณผ๋ ๋ฌ๋ฆฌ, ๋ฌธ์ฅํ์ผ๋ก ๋ต๋ณ์ ์๊ตฌํ๋ ๊ฒฝ์ฐ์์ต๋๋ค. vaild set์ ์ ๋ต์ ๋ถํฌ์ ๊ฐ๊ฑดํ๊ฒ ํ์ต์ํค๊ธฐ ์ํ **K-fold cross validation**์ผ๋ก ์ด์ด์ก์ต๋๋ค.
#### [๐ป ์์ธก score ๋ถ์](https://github.com/VumBleBot/Group-Activity/blob/main/documents/EDA/predict_checker.ipynb)
240๊ฐ validation set์ ๋ํด ๋ชจ๋ธ์ best-5 prediction์ ๋ฝ๊ณ , **best-5 ๋ด์ ์ ๋ต ์กด์ฌ ์ฌ๋ถ**์ **prediction score/probability**๋ฅผ ํ์ธํ์ต๋๋ค.
๋จผ์ LB score์ ๊ธฐ์ค๊ณผ ๋์ผํ๊ฒ evaluateํ๊ธฐ ์ํ์ฌ ๊ธฐํธ, ๋์ด์ฐ๊ธฐ, ๋ฌธ์ฅ๋ถํธ ๋ฑ์ ์ ๊ฑฐํ์ฌ ground truth์ prediction์ ๋น๊ตํ์ต๋๋ค. **top-5 ์์ผ๋ก ์ ๋ต์ ์ฐพ์ง ๋ชปํ example์ 240๊ฐ์ค ์ด 45๊ฐ**์์ต๋๋ค. evaluate๋ฅผ ์ํํ์ง ์๊ณ top-1 predict๋ฅผ ์ํํ์๋์ ๋น๊ตํ์ฌ ์ ๋ฐ์ผ๋ก ๋จ์ด์ง ์์น๋ก, ๋ชจ๋ธ์ ์์ธก์ด ์๊ฐ๋ณด๋ค ์ ๋ต๊ณผ ๋๋จ์ด์ ธ ์์ง ์๊ณ , **์ ์ ํ reranking์ด๋ ํ์ฒ๋ฆฌ๋ก ์ถฉ๋ถํ ๊ฐ์ ํ ์ ์์์ ํ์ธ**ํ์ต๋๋ค. ์ดํ [POS ํ๊น
์ ํตํ์ฌ ๋ถ์ ์ ํ ๋ต์ ๊ฑธ๋ฌ๋ด๋ ํ์ฒ๋ฆฌ](https://github.com/VumBleBot/odqa_baseline_code/issues/94)๋ฅผ ์ถ๊ฐํจ์ผ๋ก์จ EM ์ค์ฝ์ด๋ฅผ ์ฌ๋ฆด ์ ์์์ต๋๋ค.
score์ ์ฃผ๋ชฉํ์ฌ ์ค๋ต์ ์ดํด๋ณด์์ ๋, **๋๋ถ๋ถ์ best prediction score๊ฐ `8`์ ๋์ด๊ฐ์ง ๋ชปํ๋ ๊ฒ์ ํ์ธ**ํ ์ ์์ต๋๋ค. ๊ธฐ์กด์ ์ ๋ต๊ตฐ prediction score๋ ํ๊ท `12~15` ์ฌ์ด์ด๋ฏ๋ก, **prediction score๊ฐ ์ด๋ ์ ๋์ ์์น๋ฅผ ๋๊ธฐ์ง ๋ชปํ๋ค๋ฉด ์ฌ์ค์ ์ค๋ต์ผ ๊ฐ๋ฅ์ฑ์ด ๋๋ค**๋ ์ ์ ์์ฌํ์ต๋๋ค.
๋ฐ๋ผ์ **๋ฎ์ prediction score๋ฅผ ๊ฐ์ง๋ ์ ๋ต๋ค์ nbest ๋ด์ ์ ๋ต์ผ๋ก ๋์ฒดํ๊ธฐ ์ํ ๋ค๋ฅธ ๋ชจ๋ธ๊ณผ์ ensemble**๋ก๋ ์ด์ด์ก์ต๋๋ค.
์๋ฅผ ๋ค์ด, [Pororo MRC ๋ชจ๋ธ๊ณผ์ ensemble](https://github.com/VumBleBot/odqa_baseline_code/pull/75)๋ฅผ ๊ผฝ์ ์ ์์ต๋๋ค. ==Pororo ๋ผ์ด๋ธ๋ฌ๋ฆฌ MRC ๋ชจ๋ธ==์ Roberta๋ฅผ ๋ฒ ์ด์ค๋ก ํ๋ ๋ชจ๋ธ์ธ๋ฐ, ๋ด๋๋ ๋ต์ ๊ธฐ์กด ๋ชจ๋ธ๊ณผ ๊ฝค ์ฐจ์ด๊ฐ ์์์ง๋ง **์ฌ๋ฐ๋ฅด๊ฒ ์์ธกํ ๊ฒฝ์ฐ top-1 prediction์ score๊ฐ `13~16`์ ๋๋ก ๊ธฐ์กด ๋ชจ๋ธ๊ณผ ๊ฑฐ์ ๋น์ทํ์ต๋๋ค.**
๋ฐ๋ผ์ ๊ธฐ์กด ๋ชจ๋ธ์ nbest ์ค, ๋ชจ๋ธ์ด ์ ๋ต์ ํ์ ํ์ง ๋ชปํด best prediction score๊ฐ `8`์ดํ๋ก ๋ฎ์ผ๋ฉด์, ๋๋จธ์ง nbest prediction ์ค (pororo๊ฐ ๋ด๋์) ์ ๋ต์ด ์๋ ๊ฒฝ์ฐ pororo prediction score๋ฅผ ๋ํด์ฃผ๋ ํํ๋ก ์์ธก์ ensembleํ์ต๋๋ค. ๋น๋ก ์์๋ธ ๋ณต์ก์ฑ์ ๋ฌธ์ ๋ก ์ต์ข
์ ์ถ ๋ชจ๋ธ์๋ ๋ฐ์๋์ง ์์์ง๋ง **์ ์๋ฏธํ ์ฑ๋ฅ ๊ฐ์ (LB์ค์ฝ์ด 38%->45%)์** ํ์ธํ์ต๋๋ค.
์ด์ฒ๋ผ **score๋ฅผ ๋ถ์ํจ์ผ๋ก์จ ์ฌ์ค์ ๊ธฐ์กด ๋ชจ๋ธ์ด ํ์ ํ์ง ๋ชปํ๋ ์ค๋ต๋ค์ ๋ํด ๋ค๋ฅธ ๋ชจ๋ธ์ ์์ธก์ ์์ฉํ๋ ๋ฐฉ์์ ensemble์ ์ํ**ํ ์ ์์์ต๋๋ค.
---
## :rocket: Model

### :rocket: Retriever
**Retriever**๋ Wikipedia์์ query๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฐ๊ด๋ ๋ฌธ์๋ฅผ ์ฐพ์ ์ฃผ๋ ๋ชจ๋ธ์
๋๋ค.
Embedding ๋ฒกํฐ๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ ๋ฐ๋ผ, **Term Frequency**๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑ๋ **Sparse Embedding**์ ํ์ฉํ๋ Sparse Retriever์ **CLS Token**์ ์ฌ์ฉํ์ฌ ์์ฑ๋ **Dense Embedding**์ ํ์ฉํ๋ Dense Retriever๋ก ๋๋ ์ ์์ต๋๋ค.
#### :rocket: Sparse Retriever
์ ํฌ ํ์์๋ ๊ธฐ๋ณธ ๋ฒ ์ด์ค๋ผ์ธ ์ฝ๋๋ก ๊ตฌ์ฑ๋ TF-IDF๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ๊ทธ์น์ง ์๊ณ , **TF-IDF๋ณด๋ค ์ฑ๋ฅ์ด ์ข๋ค๊ณ ์๋ ค์ ธ ์๋ BM25๋ฅผ ๊ตฌํ**ํ์ฌ ๋ฆฌํธ๋ฆฌ๋ฒ์ ์ฑ๋ฅ์ ๋น๊ตํ๋ ์คํ์ ์งํํ์ต๋๋ค.
๊ธฐ์กด์ ์กด์ฌํ๋ BM25 ์คํ์์ค๋ ํ๋์ query๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌธ์๋ฅผ retrieveํ๋ ๊ณผ์ ์์ ๋งค๋ฒ context์ embedding์ ์๋ก ๋ง๋ค๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ ค ํจ์จ์ด ๋จ์ด์ง๋ค๋ ๋จ์ ์ด ์กด์ฌํ์ต๋๋ค.
๊ทธ๋์ `sklearn`์ `TfidfVectorizer`๋ฅผ ํ์ฉํ์ฌ **์ ์ฒด context๋ฅผ ๋์์ผ๋ก TF, IDF๋ฅผ ๊ณ์ฐํ ํ ์ ์ฅํ๊ณ ์๋ฒ ๋ฉ์ ํ ๋ฒ๋ง ๊ณ์ฐํ๋๋ก ์์ **ํ์ฌ BM25 score๋ฅผ ๊ตฌํ ๋ ์ด๋ฅผ ์ฌ์ฌ์ฉํ๋ ๋ฐฉํฅ์ผ๋ก ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋งํ์ฌ **์ ์ฒด ์ฝ๋์ ์คํ ์๋๋ฅผ ํฅ์**์์ผฐ์ต๋๋ค.
##### Sparse Retriever ์คํ 1: BM25๊ฐ TF-IDF๋ณด๋ค ์ฐ์ํ๊ฐ?
###### :rocket: TF-IDF
TFIDF๋ ๋จ์ด์ ๋ฑ์ฅ ๋น๋(Term์ Frequency)๋ฅผ ํ์ฉํ์ฌ ๋ฌธ์ฅ์ ์ถ์ถํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก, **๋จ์ด์ ๋ฑ์ฅ ๋น๋(Term Frequency, TF)์ ๋จ์ด๊ฐ ์ ๊ณตํ๋ ์ ๋ณด์ ์(Inverse Document Frequency)์ ์ด์ฉํ ์งํ**์
๋๋ค.

์ด ๋ **$t$๋ ๋จ์ด(term), $d$๋ ๋ฌธ์, $D$๋ ์ ์ฒด ๋ฌธ์์ ์**๋ฅผ ์๋ฏธํฉ๋๋ค.
๋ฒ ์ด์ค๋ผ์ธ ์ฝ๋์์ ๊ตฌํ๋ TF-IDF ๊ธฐ์ค, top1์์ 22.08%์ ์ ํ๋๋ฅผ, top30์์ 63.75์ ์ ํ๋๋ฅผ ๋ณด์์ต๋๋ค.
###### :rocket: BM25
BM25 ์ญ์ ๋จ์ด์ ๋ฑ์ฅ ๋น๋๋ฅผ ํ์ฉํ ๋ฐฉ๋ฒ ์ค ํ๋์
๋๋ค. BM25์์ ์ฃผ๋ชฉํ ๋งํ ์ ์, ๊ธธ์ด๊ฐ ๊ธด ๋ฌธ์ฅ๋ค์ด **๋ง์ ๋จ์ด๋ฅผ ๊ฐ์ง๊ณ ์์์ผ๋ก ์ธํด์ ๊ฐ์ง๊ฒ ๋๋ ==์ฐ์๋ฅผ ์กฐ์ ==ํ๊ธฐ ์ํด ๋ฌธ์์ ๊ธธ์ด๋ฅผ ์ ์ฒด ๋ฌธ์ ๊ธธ์ด์ ํ๊ท ์ผ๋ก ๋๋์ด์ฃผ๋ ๋ถ๋ถ์ ์ถ๊ฐ**ํ๋ค๋ ์ ์
๋๋ค.

์ ์์์ ๋ถ๋ชจ ๋ถ๋ถ์ $D$๋ฅผ $\mathrm{avgdl}$๋ก ๋๋์ด ์ฃผ๋ ๋ถ๋ถ์ด ํฌํจ๋ ๊ฒ์ ํ์ธํ ์ ์์ผ๋ฉฐ, ์ด ์์ ์ํฅ๋ ฅ์ ์กฐ์ ํด์ฃผ๋ ๋ณ์๋ก $k_1$๊ณผ $b$๊ฐ ์ถ๊ฐ๋์์ต๋๋ค.

> ๊ฐ๋ก์ถ์ TOP-K, ์ธ๋ก์ถ์ Accuracy๋ฅผ ๋ํ๋
๋๋ค.
TFIDF์ BM25์ ์ฑ๋ฅ์ ๋น๊ตํ ๊ฒฐ๊ณผ, BM25๊ฐ TFIDF์ ๋นํด ์ฑ๋ฅ์ด ์ข์์ ์ต๊ณ ์ฑ๋ฅ์ Retriever๊ฐ ๋ฑ์ฅํ๊ธฐ ์ ๊น์ง BM25๋ฅผ ์ฌ์ฉํ์์ต๋๋ค.
##### Sparse Retriever ์คํ 2: Term vocab์ ๊ตฌ์ฑํ ๋ `max_features`๋ฅผ ์ฃผ๋ ๊ฒ์ด ์ข์๊น?

> TOP-K๊ฐ ํฌ๊ณ xticklabel์ ๊ทธ๋๋ก ์
๋ ฅํ์ฌ ๊ฐ๋
์ฑ์ด ์ข์ง ์์ต๋๋ค. TOP-K 1000์ผ๋ก ํ ๊ฒฐ๊ณผ์
๋๋ค.
๋ฒ ์ด์ค๋ผ์ธ ์ฝ๋์์๋ `sklearn` ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณตํ๋ `max_features` argument๋ฅผ ์ฌ์ฉํ์ฌ vocabulary์ ํฌ๊ธฐ๋ฅผ ์ ํํ๊ณ ์์๋๋ฐ, term frequency๊ฐ ๋์ ์์ผ๋ก vocabulary์ ํฌํจ๋๊ธฐ ๋๋ฌธ์ ์ ๊ฒ ๋์จ term๋ค์ด ํฌํจ๋์ง ์๋๋ค๋ ์ด์๊ฐ ์์์ต๋๋ค.
์ด๋ ๊ฒ ๋๋ฉด **์ค์ํ term๋ค์ด ๋๋ฝ๋ ์ ์๋ค๊ณ ์๊ฐํด์ `max_features` argument๋ฅผ ์์ ๊ณ ์คํํ๋๋ ์ฑ๋ฅ์ด ๋ํญ ์์น**ํ์ต๋๋ค.
##### Sparse Retriever ์คํ 3: ํ ํฌ๋์ด์ ์ ๋ฐ๋ผ ์ฑ๋ฅ์ด ๋ค๋ฅผ๊น?

Term์ ๊ธฐ์ค์ด ๋ฌ๋ผ์ง๋ค๋ฉด BM25์ ์ฑ๋ฅ๋ ๋ฌ๋ผ์ง ๊ฒ์ด๋ผ๊ณ ํ๋จํ์ฌ, ๋ค์ํ Tokenizer๋ค๋ก ์คํํ ๊ฒฐ๊ณผ, **์ด๋ฐ Top-k์์ XLM-Roberta-Large Tokenizer๊ฐ ๋น๊ต์ ๋์ ์ฑ๋ฅ**์ ๋ณด์๊ณ ๊ทธ ์ดํ์๋ Kobert๊ฐ ๋์ ์ฑ๋ฅ์ ๋ณด์์ต๋๋ค. ์ด๋ฅผ ๋ฐํ์ผ๋ก XLM-Roberta-Large๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
##### Sparse Retriever ์คํ 4: BM25์ ๋ค์ํ ๋ฒ์ ๋ณ๋ก ์ฑ๋ฅ์ด ๋ค๋ฅผ๊น?
BM25๋ ์์ ์์ ๊ธฐ๋ณธ base๋ก ํ ๋ค์ํ ๋ณํ๋ค์ด ์กด์ฌํ๋ฉฐ ์ ํฌ ๋ชจ๋ธ์์๋ **๋ค์ํ BM25๋ค์ ๊ฐ์ง๊ณ ์คํํ [๋
ผ๋ฌธ](http://www.cs.otago.ac.nz/homepages/andrew/papers/2014-2.pdf)์ ๋ฐํ์ผ๋ก ATIRE BM25, BM25L, BM25+์ ์ธ ๊ฐ์ง BM25๋ฅผ ๊ตฌํ**ํ์์ต๋๋ค.

์ธ ๊ฐ์ง ๋ฒ์ ์ BM25์ ์ฑ๋ฅ์ ๋น๊ตํ ๊ฒฐ๊ณผ, **ATIRE BM25๊ฐ ๊ฐ์ฅ ๋ฎ์ top-k(6)๋ก 90%์ ๋๋ฌํ๋ ๊ฒ์ ํ์ธํ์ฌ ATIRE BM25๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ๊ฒฐ์ **ํ์ต๋๋ค.
##### Sparse Retriever ์๋ํ์ผ๋ ์คํจํ ์คํ๋ค
- **wiki ๋ฌธ์ ์ค๋ณต ์ ๊ฑฐ**
wiki ๋ฌธ์์ ์ค๋ณต์ด ๋ง์ ๊ฒ์ ๋ฐ๊ฒฌํ์ฌ, ์ค๋ณต์ ์ ๊ฑฐํ๋ฉด top-k ๋ด์์์ ์ค๋ณต์ด ์ ๊ฑฐ๋๋ฏ๋ก ์ฑ๋ฅ์ด ํฅ์๋ ๊ฒ์ผ๋ก ์๊ฐํด์ ์ค๋ณต์ ์ ๊ฑฐํ์์ผ๋ validation set ๊ธฐ์ค ํฐ ์ฑ๋ฅ ํฅ์์ ์์์ต๋๋ค.
ํ์ง๋ง **reader์๊ฒ ๋๊ฒจ์ค ๋ ์ค๋ณต์ด ์๋ ๋ฌธ์๊ฐ ๋์ด๊ฐ๋ ๊ฒ์ด ๊ถ๊ทน์ ์ผ๋ก ์ฑ๋ฅ ํฅ์์ ๊ธฐ์ฌํ ๊ฒ์ผ๋ก ํ๋จ**ํ์ฌ retrieve ์ **์ค๋ณต ๋ฌธ์๊ฐ ์กด์ฌํ๋ฉด ์ ๊ฑฐํ๋ ๋ฐฉํฅ**์ผ๋ก ์ฝ๋๋ฅผ ๊ฐ์ ํ์์ต๋๋ค.
- **wiki ๋ฌธ์ ์์ฝ ํ BM25๋ฅผ ์ด์ฉํ ์ถ์ถ**
ํ๊ตญ์ด ์์ฐ์ด ์ฒ๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ `PORORO`๋ฅผ ์ด์ฉํ๋ฉด ๋ฌธ์์์ ๊ฐ์ฅ ์ค์ํ ์ธ ๋ฌธ์ฅ์ ์ถ์ถํ๋ ๋ฐฉ์์ผ๋ก ๋ฌธ์๋ฅผ ์์ฝํ ์ ์์ต๋๋ค.
์ด๋ ๊ฒ search space๋ฅผ ์ถ์ํ์ฌ query์ ์ ์ฌํ ๋ฌธ์๋ฅผ ์ฐพ๋๋ค๋ฉด ์ฑ๋ฅ์ด ์ฌ๋ผ๊ฐ์ง ๊ถ๊ธํด์ `PORORO`๋ฅผ ์ด์ฉํ์ฌ ์์ฝ ํ query๋ฅผ ๋ฝ๋ ๋ฐฉ์์ ์งํํด ๋ณด์๋๋ฐ ์์ฝ ์ ๊ณผ ์ฑ๋ฅ์ด ๋น์ทํ๊ฒ ๋์์ต๋๋ค.
๋ฌธ์์ ๊ธธ์ด๊ฐ ์งง์์ ธ ์ ๋ณด๊ฐ ์ถ์๋์์์๋ ์ฑ๋ฅ์ด ๋จ์ด์ง์ง ์์ ์ ๋ ์ ๊ธฐํ์ง๋ง, ์ฑ๋ฅ์ด ์์นํ์ง๋ ์์์ผ๋ฏ๋ก ์คํจํ ์คํ์ ๋ฃ์์ต๋๋ค.
- **BM25 hyper parameter ํ์**
BM25๋ $b$์ $k_1$์ด๋ผ๋ hyper parameter๊ฐ ์กด์ฌํ๊ณ , ์ด๋ฅผ ์กฐ์ ํจ์ผ๋ก์จ ์ฑ๋ฅ์ ๋ณํ์ํฌ ์ ์์ต๋๋ค. ๋
ผ๋ฌธ์ ๋์จ hyper parameter ์ธ์, ๋ง์ด ์ฌ์ฉ๋๋ค๊ณ ์๋ ค์ง `b=0.75`, `k1=1.2`๋ฅผ ๋น๋กฏํ **๋ค์ํ ๋ฒ์์ hyper parameter๋ค์ ์ ์ฉํ์ฌ ๋ณด์์ผ๋ ๋
ผ๋ฌธ์ ๋์จ `b=0.3`, `k1=1.1`์ด ๊ฐ์ฅ ๋์ ์ฑ๋ฅ์ ๋ณด์์ต๋๋ค.**
- **BM25 ๋ค์ํ ๋ฐ์ดํฐ ๋ณํ ์ ์ฉ**
`sklearn`์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ๋ค์ ํ์ฉํ์ฌ, Term frequency์ smoothing์ ์ฃผ๊ณ , Term frequency๋ฅผ normalizeํ๋ ๋ฑ ์ฌ๋ฌ ๋ฐ์ดํฐ ๋ณํ์ ์ ์ฉํด ๋ณด์์ผ๋ ์ฑ๋ฅ ํฅ์์ด ์์์ต๋๋ค.
#### :rocket: Dense Retriever
ODQA์์ Retriever์ ์ญํ ์ ์ฌ์ฉ์ ์ง๋ฌธ(์ดํ ์ฟผ๋ฆฌ)์ ๋ํ ๋ต๋ณ์ด ๋ ์ ์๋ ๋ฌธ์๋ฅผ ์ถ์ถํ๋ ๊ฒ์
๋๋ค. ์ด ๊ณผ์ ์๋ ์ ํต์ ์ผ๋ก ๋ณธ ๊ธ์์ ์ธ๊ธ๋ TF-IDF, BM25 ๋ฑ์ Sparse Retriever๋ค์ด ํ์ฉ๋์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ต๊ทผ์๋ ์ ๊ฒฝ๋ง์ ์ด์ฉํด ์ฟผ๋ฆฌ์ ์ ๊ณต๋ ๋ฌธ์์ **Dense vector ๊ฐ์ ๋ด์ ์ ๊ทน๋ํ**ํ๋ ๊ฒ์ผ๋ก ๊ทผ๊ฑฐ ๋ฌธ์๋ฅผ ์ถ์ถํ๊ณ ์์ต๋๋ค. **Sparse vector๊ฐ ๋จ์ด ์งํฉ ํฌ๊ธฐ์ ์ฐจ์๊ณผ One-Hot ๋ฒกํฐ๋ก ํํ ๋๋ ๊ฒ**๊ณผ ๋ฌ๋ฆฌ **Dense vector๋ Hidden Size๋ฐ Latent Vector๋ก ํํ**๋ฉ๋๋ค.
๋ํ **Sparse Vector๋ Lexical Overlap์ด ์ค์ํ๊ฒ ํ์ฉ๋์ด์ผ ํ๋ QA task**์, **Dense Vector๋ Semanticํ ํด์์ด ํ์ฉ๋์ด์ผ ํ๋ QA task**์ ์ ์ฉ๋ ์ ์์ต๋๋ค.
##### :rocket: DPR
DPR์ Dense Vector๋ฅผ ํ์ฉํ๋ Retrieve๋ฅผ ์ํํ๋, Answer Extraction์ ์ํํ๋ Document Reader์ ๊ด๋ จ ๋ฌธ์๋ฅผ ๋ฝ์์ค๋ Passage Retrieve๋ฅผ ๋ณ๋๋ก ํ๋ จํ์ฌ ํ์ฉํ๋ ๋ฐฉ์์ ์ ์ํ์์ต๋๋ค.
์ด ์ค Retriever๋ฅผ ๋ด๋นํ ํํธ์์๋ **2๊ฐ์ BERT ๋ชจ๋ธ์ ํ์ฉํด Passage Retriever๋ฅผ ๊ตฌ์ฑํ๊ณ ์** ํ์ผ๋ฉฐ, **Encoder๋ก ์ฌ์ฉํ Backbone๋ชจ๋ธ๊ณผ Negative Sampling ๋ฐฉ์์ ๋ค๋ฅด๊ฒ ๊ตฌํํ์ฌ ๋๊ฐ์ง ์คํ์ ์งํ**ํ์์ต๋๋ค.
==์ฒซ ๋ฒ์งธ ๋ฐฉ์==์ **bert-base-multilingual-cased๋ฅผ Backbone์ผ๋ก ํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ์ธ์ฝ๋ฉํ๊ธฐ ์ํ BERT ๋ชจ๋ธ๊ณผ ๋ฌธ์ ์งํฉ์ ์ธ์ฝ๋ฉํ๊ธฐ์ํ BERT ๋ชจ๋ธ์ ํ์ธํ๋ํ ๋ฐฉ์**์
๋๋ค. ์ด ํ๋ จ ๊ณผ์ ์์๋ ๋ค๋ฅธ ์ง๋ฌธ์ ๋ํ ๋ต์ ํฌํจํ ๋ฌธ์๋ฅผ Negative Sample๋ก ์ค์ ํ๋ `In-batch Negative` ๋ฐฉ์์ ์ ํํ์์ผ๋ฉฐ positive sample์ ๋ํ negative log likelihood loss๋ฅผ ํ์ฉํด ํ๋ จ์ ์งํํ์๊ณ optimizer๋ก๋ AdamW, 0.01 ์์ค์ weight decay๋ฅผ ์ค์ ํ ์ค์ผ์ค๋ฌ, 30๋ฒ์ epochs ๋ฑ์ ํ๋ผ๋ฏธํฐ ์ค์ ์ ํตํด Reader์๊ฒ ์ ๋ฌํ **Top3 ๋ฌธ์์ ์ ๋ขฐ๋๋ฅผ 50~63% ์์ค์ผ๋ก ํ๋ณด**ํ์์ต๋๋ค.
==๋ ๋ฒ์งธ ๋ฐฉ์==์ **haystack ์คํ์์ค๋ฅผ ํ์ฉํด transformers์ DPRContextEncoder์ DPRQuestionEncoder ๋๊ฐ์ง ์ธ์ฝ๋๋ฅผ ํ์ธ ํ๋ํ๋ ๋ฐฉ์**([๐ป์คํ ๋
ธํธ๋ถ](https://github.com/VumBleBot/odqa_baseline_code/blob/ebbunnim/notes/dpr.ipynb))์
๋๋ค.
Negative Sampling ๋ฐฉ์์ผ๋ก๋ BM25์ ์ํด ๋์ ์์๊ถ์ ํด๋นํ์ง๋ง ์ ๋ต ์คํฌ์ ํฌํจํ์ง ์๋ Negative Sample๋ก ์ค์ ํ ๋ฐฉ์์ ํ์ฉํ์๊ณ , ์ด๋ ํ์ํ [๐ปdataset์ ์์ฑ](https://github.com/VumBleBot/odqa_baseline_code/blob/main/make_dataset/negative_ctxs_dataset.py)ํ์ฌ Robustํ Dense Encoder๋ฅผ ๋ง๋ค๊ธฐ ์ํด ๋
ธ๋ ฅํ์์ต๋๋ค.
๋ํ DPR์ ์ฌ์ฉํ ์ธ๋ฑ์ฑ์ ๋ชจ๋ ๋ฌธ์ ์งํฉ์ ๋ณํํ๋ ๊ณผ์ ์ ๋งค๋ฒ ๊ฑฐ์น๊ธฐ ๋๋ฌธ์ `InMemoryDocumentStore`๋ฅผ ํจ๊ป ์๋์์ผ ๊ณ์ฐ ํจ์จ์ ๋์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ํ๊น๊ฒ๋ ์ด ์คํ์ ํตํด Reader์๊ฒ ์ ๋ฌํ **Top3 ๋ฌธ์ ์ ๋ขฐ๋๋** **9~18%์์ค์ ๋จธ๋ฌผ๋ ์ต๋๋ค**.
์ฑ๋ฅ์ด ๋ฎ์ ์ด์ ๋ฅผ ํ๊ณ ํด๋ณด๋ฉด,
(1) ๋ชจ๋ธ ํ์ต ์ 4192๊ฐ์ ์์ค์ผ๋ก ์ ์ ๋ฐ์ดํฐ์
๋ง์ ์์กดํ๋ค๋ ์
(2) dense encoder๋ก ๋ค์ด๊ฐ๋ context์ chunk ์ฌ์ด์ฆ๋ฅผ ๋ค์ํ๊ฒ ๋ณํ์ํค์ง ์์๋ค๋ ์
(3) optimalํ hyper parameter์ ์ฐพ์ผ๋ ค๋ ์คํ ๊ด๋ฆฌ ์ ๋ต์ด ๋ถ์ฌํ๋ค๋ ์ ์ ๋ค ์ ์๊ฒ ์ต๋๋ค.
[ Negative sampling์ ํ์ํ ๋ฐ์ดํฐ์
์ฌ๊ตฌ์ถ ์์ ]
```json
{
"dataset": "klue-train-psgs_2100",
"question": "์ฒ์์ผ๋ก ๋ถ์ค ๊ฒฝ์์ธ์ ๋ํ ๋ณด์ ์ ๊ณ ๋ฅผ ๋ฐ์ ํ์ฌ๋?",
"answers": [
"ํ๋ณด์ฒ ๊ฐ"
],
"positive_ctxs": [
{
"text": "์์ฒ์ฌ์๊ณ ๋ฑํ๊ต ์กธ์
, 1973๋
์ดํ์ฌ์๋ํ๊ต๋ฅผ ์กธ์
ํ๊ณ ...",
"title": "์ ํจ์",
"score": 731.0,
"title_score": 0,
"psg_id": 9027
}
],
"negative_ctxs": [],
"hard_negative_ctxs": [
{
"title": "๋ฐ์ด๋๋ฆฌ ๊ฑฐ๋ฆฌ",
"text": "1860๋
์ ์์๋ ์ 2์ฐจ ์ํธ ์ ์์ ๊ฒฐ๊ณผ๋ก ๋ฒ ์ด์ง ์กฐ์ฝ์์ ์ฃผ๋ฃฝ ๋ฐ๋์ ํ์ฝฉ ์ฌ์ ๊ฐ๊น์ด ์ง์ญ์ ...",
"score": 41.86300700253766,
"title_score": 0,
"psg_id": "4459"
},
{
"title": "์ค์นํธ",
"text": "์ดํ ์ค์นํธ๋ ๊ณ๋ชฝ์ด๋์ ์ง๋ ฅํ๋ฉฐ ์ค๋ ฅ ์์ฑ๋ก ์ ์ฃผ์ฅํ์๋ค. ๊ทธ์ ์ค๋ ฅ ์์ฑ๋ก ์ ํ....",
"score": 41.862880985791804,
"title_score": 0,
"psg_id": "5294"
},
...
]
},
```
##### :rocket: ColBert
ColBert๋ Context Level ์์ค์ ์ํธ์์ฉ์ผ๋ก ๋ฌธ์๋ฅผ ๊ฒ์ํ๋ ๊ธฐ์กด Dense Retriever์์ ๋ ๋์๊ฐ์ **Token Level ์์ค์ ์ํธ์์ฉ์ผ๋ก ๋ฌธ์๋ฅผ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ**์
๋๋ค.

> ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT
> Omar Khattab, Matei Zaharia
๋ฒ ์ด์ค๋ผ์ธ ์ฝ๋์์ ์ ๊ณต๋ DPR ๋ชจ๋ธ์ด (1)์ ํด๋นํ๋ ๋ฐฉ๋ฒ๋ก ์ด๊ณ (3)์ ํด๋นํ๋ ๋ฐฉ๋ฒ๋ก ์ด ColBert๋ชจ๋ธ์
๋๋ค.
**Dense Retriever๊ฐ Sparse Retriever์ ์ฑ๋ฅ์ ๋ฐ์ด๋์ ๊ฒ์ด ์ต๊ทผ์ ์ผ์ด๋ ์ผ์ด๋ผ๋ ์ ์ ๊ณ ๋ คํ์ฌ** Dense Retriever๋ฅผ ์ ํ์ฉํ๊ธฐ ์ํด์๋ **(3)์ ํด๋นํ๋ ColBert๋ฅผ ๊ตฌํ**ํด์ผ ๋๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.
๋ค๋ง [ColBert](https://github.com/VumBleBot/odqa_baseline_code/blob/main/retrieval/dense/colbert.py)๋ฅผ ๊ตฌํํ์์๋ ๋ถ๊ตฌํ๊ณ ์ฑ๋ฅ ์ธก์ ๋ฐ ์ฌ์ฉ์ ํ์ง ๋ชปํ๋๋ฐ ๊ทธ ์ด์ ๋ ์๋์ ๊ฐ์ต๋๋ค.
1. Dense Retriever์ ํน์ฑ์ ์๋ ํฅ์์ ์ํด ๋ฌธ์ ์๋ฒ ๋ฉ์ ๋ฏธ๋ฆฌ ์ ์ฅํด์ผ ๋๋ ์
2. ํ ๊ฐ์ CLS Token ๋์ 512๊ฐ์ Token์ ์ ์ฅํจ์ผ๋ก์จ ์ ์ฅ๊ณต๊ฐ์ด ๋ถ์กฑํ๋ค๋ ์
์๋ฒ์ ์ ์ฅ ๊ณต๊ฐ์ด 50G๊ฐ ๋ฐ์ ๋์ง ์์์ Embedding์ ์ ์ฅํ ํ Query Encoder๋ฅผ ์ ์ฅํ ๊ณต๊ฐ์ด ๋ถ์กฑํ์ฌ ์ฌ์ฉํ์ง ๋ชปํ์ต๋๋ค.
> ๋๋ฌด ์์ฝ์ต๋๋ค.. :cry:
#### :rocket: Hybrid Retriever
Sparse vector์ Dense vector๋ฅผ ๊ฒฐํฉํ์ฌ Retrieve๋ฅผ ์๋ํ๋ [๋
ผ๋ฌธ](https://arxiv.org/abs/1906.05807)๋ค์ ์ ํ๋ฉฐ **Hybrid Retriever**์ ํ์์ฑ์ ๋๋ผ๊ฒ ๋์์ต๋๋ค.
์ ํฌ๊ฐ ๊ตฌํํ ๋ชจ๋ธ์ **retrieve ๊ณผ์ ์์ Sparse/Dense vector๋ค์ ๊ฒฐํฉํ๋ ๋ฐฉ์**์ ์๋์ง๋ง,
1. Sparse Retriever์ Dense Retriever๊ฐ ๋์ถํ **๋ฌธ์ ์ ์ฌ๋๋ฅผ Weightd RankFusionํ์ฌ ๋ฌธ์์ ์์๋ฅผ ์ฌ์กฐ์ ํ๋ ==Weighted RankFusion Retriever==์**
2. Sparse Retriever๊ฐ ์ถ์ถํ **๋ฌธ์ Score์์ Feature Vector๋ฅผ ์ถ์ถํ ํ Logistic ๋ถ๋ฅ๊ธฐ๋ฅผ ํตํด Sparse Retriever์ Dense Retriever ์ฌ์ฉ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ==Logistic Hybrid Retriever==** ์
๋๋ค.
##### :rocket: Weighted RankFusion Retriever
Weighted RankFusion Retriever๋ Sparse์ Dense Retriever๊ฐ ๋์ถํ **topk์ ๋ฌธ์ ์ ์ฌ๋๋ฅผ Weighted RankFusionํ์ฌ ๋ฌธ์์ ์์๋ฅผ ์ฌ์กฐ์ ํ๋ ๋ฐฉ์**์
๋๋ค.
๋ ๊ฐ์ Retriever๊ฐ ๋์ถํ ๋ฌธ์๋ค์ด ์ค๋ณต ๋ ๊ฒฝ์ฐ ๋ฌธ์ ์ค์๋๋ฅผ ๋์ด๋ ๊ฒ์์ ๋ ๋์๊ฐ, ํ๋์ Retriever์ ์๋์ ์ธ ๊ธฐ์ฌ๋๋ฅผ ๊ฐ์ค์น๋ก ํ์ฉํด ๋ ์ข
๋ฅ์ ๊ฒฐ๊ณผ๊ฐ์ ์ ๊ทํ๋ ๊ฐ์ค ํฉ๊ณ๋ก ๊ตฌ์ฑํ๋ ๋ฐฉ์์
๋๋ค.
์ด๋ฌํ ์ ๊ทผ์ topic ์ค์๋๋ฅผ rerankํ๋ [์ฐธ๊ณ ๋
ผ๋ฌธ](https://www.koreascience.or.kr/article/JAKO201511758627325.pdf)๊ณผ [pyserini ์คํ์์ค](https://github.com/castorini/pyserini)์์ ์ ์๋ ๊ณต์์ ๋ฐํ์ผ๋ก ์์ฑ๋์์ต๋๋ค. **ํด๋น ๊ณต์์ ๋ฐํ์ผ๋ก Sparse Retriever์ ์๋์ ์ธ ๊ธฐ์ฌ๋(alpha)๋ฅผ 0.1๋ก ์กฐ์ ํ์๊ณ **, ์ด ๊ฐ์ ์ฐจ์ ์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ Dense Retriever๊ฐ ๋ฐํํ๋ ์ ์ฌ๋ ์ ์์ ๋ถํฌ์ ๋ฐ๋ผ ์ฌ์กฐ์ ๋ ์ ์์ต๋๋ค.
> 0.1์ ๊ฐ์ Sparse Retriever, Dense Retriever์ ์ฑ๋ฅ์ ๊ณ ๋ คํ์ฌ ๊ฒฐ์ ํ์์ต๋๋ค.
```python
def _rank_fusion_by_hybrid(self, dense_hits, sparse_hits, topk):
ranks = []
min_dense_score, min_sparse_score = min(dense_hits.values()), min(sparse_hits.values())
for doc in set(dense_hits.keys()) | set(sparse_hits.keys()):
if doc not in dense_hits:
score = self.args.retriever.alpha * sparse_hits[doc] + min_dense_score
elif doc not in sparse_hits:
score = self.args.retriever.alpha * min_sparse_score + dense_hits[doc]
else:
score = self.args.retriever.alpha * sparse_hits[doc] + dense_hits[doc]
ranks.append((doc, score))
ranks = sorted(ranks, key=lambda x: x[1], reverse=True)[: topk]
doc_index, doc_score = zip(*ranks)
doc_index, doc_score = list(doc_index), list(doc_score)
return doc_score, doc_index
```
##### :rocket: Logistic Hybrid Retriever
Sparse Retriever์ Dense Retriever๋ ์ฃผ์ด์ง๋ ๋ฌธ์ ํน์ฑ์ ๋ฐ๋ผ ์์ดํ ์ฑ๋ฅ์ ๊ฐ์ ธ์ต๋๋ค. **๋ง์ฝ IR ๊ณผ์ ์ Sparse Retriever์ Dense Retriever๋ฅผ ์ ํํด์ IR์ ํ ์ ์๋ค๋ฉด, ํ๋์ Retriever๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ๋ ์ข์ ์ฑ๋ฅ ํฅ์**์ ์ป์ ๊ฒ์ด๋ผ๊ณ ํ๋จํ์ต๋๋ค.
๋ฐ๋ผ์ [์ด ๋
ผ๋ฌธ](https://arxiv.org/abs/2009.10791)์ ์ฐธ๊ณ ํด BM25๋ก ์ฟผ๋ฆฌ์ ๋ฌธ์ ๊ฐ ์ ์ฌ๋๋ฅผ ๋ด๋ฆผ์ฐจ์ํ ๊ฒฐ๊ณผ๊ฐ(S)์ ๋์ถํ ๋ค, ์์ $2^k$($k$๋ feature size)๊ฐ์ ์์๋ฅผ ๋์์ผ๋ก softmax๋ก ์ ๊ทํํ์์ผ๋ฉฐ ์๋ ์์์ผ๋ก ์ ๋๋๋ feature vector ์์๋ฅผ feature_size๋งํผ ๊ตฌ์ฑํ์ฌ Logistic Regression์ ์งํํ์์ต๋๋ค.
$$
f_i=mean(S[0:2^i])(i=1,2,..,feature\ size)
$$
ํ์ต ๋ฐ์ดํฐ์
์ ๊ฒฝ์ฐ feature vector์ TOP-k bound๋ด์ ์ ๋ต ๋ฌธ์๊ฐ ํฌํจ๋์ด ์๋์ง ์ ๋์ด์๋์ง๋ฅผ ๊ธฐ์ค์ผ๋ก X, Y ๋ฐ์ดํฐ ์
์ ๊ตฌ์ถํ์์ต๋๋ค.

**feature size์ kbound๋ ๊ฐ๊ฐ 3์ผ๋ก ์ค์ ํ์์ต๋๋ค.**
feature vector๋ feature size์ ํฌ๊ธฐ๊ฐ ํด์๋ก ๋ ๋ง์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ต๋๋ค. ๊ทธ๋์ ์๋๋ feature size๊ฐ 4์ผ ๋ ๋ ๋ง์ ์ ๋ณด๋ฅผ ๊ฐ์ก์ด์ผ ํ์ง๋ง T-SNE ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์๊ฐํ๋ฅผ ์งํํ์ ๋ feature size๊ฐ 4์ผ ๋์ 3์ผ ๋ ํฐ ๋ณํ๋ฅผ ๋์ง ์์๊ณ ์ด๋ ์ถ๊ฐ๋ ์ ๋ณด๊ฐ ๊ธฐ์กด ์ ๋ณด์ ํฐ ๋ณํ๊ฐ ์์์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋์ **feature size๋ 3์ด๋ฉด ์ ๋ณด๋ฅผ ํํํ๊ธฐ์ ์ถฉ๋ถํ๋ค๊ณ ํ๋จ์ ํ์ต๋๋ค.**
**kbound๋ฅผ ์ค์ ํ ๋๋ ์ธ ๊ฐ์ง๋ฅผ ๊ณ ๋ ค**ํ์๋๋ฐ
1. Sparase Retriever์ TOP-K ๊ทธ๋ํ๊ฐ **K ์ด๋ ๊ฐ์์ ๊ธฐ์ธ๊ธฐ๊ฐ ๋ฏธ๋ฏธํ์ง**๋ฅผ ๊ณ ๋ คํ์๊ณ
2. ๋ถ๋ฅ๊ธฐ์ ํ์ต ๋ฐ์ดํฐ์
์ **Imbalanceํ์ง ์๊ฒ ๊ตฌ์ถํ๋ ๊ฒ**์ ๊ณ ๋ ค
3. ๋ง์ง๋ง์ผ๋ก ์๋ฒ ๋ฉ ๊ณต๊ฐ ์์์ ๊ตฐ์ง์ ์ ํ์ฑํ๋์ง
์์ ์ธ ๊ฐ์ง์ ํด๋นํ๋ kbound๋ 3์ผ๋ก ์ค์ ํ์๋๋ฐ, **๋ฐธ๋ฐ์คํ ๋ฐ์ดํฐ์
์ ๊ตฌ์ถํ ์ ์๋** ์ ์ ํ ๊ฐ์ด์๊ณ **TOP-3 ์ดํ๋ก๋ Sparse Retriever์ ์ฑ๋ฅ์ด ๋ฏธ๋ฏธํ๊ฒ ์ฆ๊ฐํ์ต๋๋ค.** ๋ง์ง๋ง์ผ๋ก kbound๊ฐ์ด 4์ธ ๊ฒฝ์ฐ ํ์ฑ๋ ์ค๋ ์ง ๊ตฐ์ง์ ํ๋์ ์ ์ด ์ฆ๊ฐํ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. kbound๊ฐ 3์ผ ๋๋ ์ด๋ฐ ๊ฒฝํฅ์ด ๋ ํ์ต๋๋ค.
์ ๋ฆฌํด๋ณด์๋ฉด TOP-8์ ๋ฝ์์์ feature size๊ฐ 3์ธ feature vector๋ฅผ ๋ง๋ค๊ณ TOP-3์์ ์ ๋ต์ด ์์ ๊ฒฝ์ฐ 1, ์์ ๊ฒฝ์ฐ 0์ธ ๋ฐ์ดํฐ์
์ ๋ง๋ค์ด ํ์ต์ ์งํํ์ต๋๋ค.
์ ๋ฐ์ดํฐ๋ก ํ์ต์ํจ Logistic ๋ถ๋ฅ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ **Sparse Retriever**์๋ง ์์กดํ๋ ๋์ feature vector๋ฅผ ์ถ๋ก ํ ๊ฐ์ด ์๊ณ๊ฐ๋ณด๋ค ๋ฎ์ ์ **Dense Retriever**๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ตฌํํ์์ต๋๋ค.
#### :rocket: Sparse / Dense / Hybrid Retriever ์ฑ๋ฅ ๋น๊ต

๋ค์ํ Retriever๋ค์ ์ค๊ณํ ๋ชฉ์ ์ Reader์๊ฒ ๋ฌธ์๋ฅผ **์ต๋ํ ๊ฐ๊ฒฐํ๊ณ ์ ํํ๊ฒ ์ ๋ฌ**ํ๋ ๊ฒ์ ์์์ต๋๋ค. ์ค๊ณ ๋ชฉ์ ์ ๋ถํฉํ๋ Retriever๋ฅผ ์ ๋ณํ๊ธฐ ์ํด 4๊ฐ์ง ์๋๋ฆฌ์ค๋ฅผ ํตํด ๋ง๋ จ๋ Retriever๊ฐ ์ฑ๋ฅ์ ๋น๊ตํ์์ต๋๋ค.
1. [Sparse] BM25
2. [Dense] In-batch negative sampling ๋ฐฉ์์ผ๋ก ๊ตฌํ๋ DPR
3. **[Hybrid]** Weighted RankFusion ๋ฐฉ์์ผ๋ก ์กฐํฉ๋ BM25์ DPR
4. **[Hybrid]** Logistic Regression ๊ณผ์ ์ดํ ๋ง๋ฌผ๋ฆฌ๊ฒ ๋์ํ๋ BM25์ DPR
์ ๊ด ๋ฌธ์ ์ค 3๊ฐ์ ๋ฌธ์๋ฅผ ๊ฐ์ฅ ์ ํํ๊ฒ ์ ๋ฌํ๋ Retriever์ **4** > 1 > **3** > 2 ์์ด์์ผ๋ฉฐ, top-k ์ํ์ ๋๋ ค๊ฐ์๋ก **3** > **4** > 1 > 2 ์์ผ๋ก ์ ํ๋๊ฐ ํฅ์๋์์ต๋๋ค. ๋ณธ ์คํ์ ํตํด Hybrid Retriever์ ์ฐ์์ฑ ๋ฐ ํ์ฉ ๊ฐ๋ฅ์ฑ์ ํ์ธํ ์ ์์์ต๋๋ค.
### :rocket: Reader
**Reader**๋ ์ฃผ์ด์ง ์ง๋ฌธ๊ณผ Retriever๋ก๋ถํฐ ๊ฒ์๋ ๋ฌธ์๊ฐ ๊ด๊ณ๋ฅผ ํ์
ํ์ฌ ์ ๋ต์ ์์น๋ฅผ ๋์ถํด๋ด๋ ๋ชจ๋ธ์
๋๋ค. ๋ฌธ์์ ์กด์ฌํ๋ ๊ฐ ํ ํฐ์ด ์ ๋ต์ ์์ ์์น์ผ ํ๋ฅ (logit)๊ณผ ์ ๋ต์ ๋ง์ง๋ง ์์น์ผ ํ๋ฅ (logit)์ ๊ฐ๊ฐ ๊ตฌํ์ฌ ์ด๋ค์ ํฉ์ด ์ต๋๊ฐ ๋๋ ๋ฌธ์์ด์ ์ ๋ต์ผ๋ก ์์ธกํฉ๋๋ค.
๋ฐ์ดํฐ์ ์์ด ์ ์๊ธฐ ๋๋ฌธ์ ์ ํฌ๋ ํ๊ตญ์ด pretrained backbone ๋ชจ๋ธ์ ์ต๋ํ ํ์ฉํ๊ณ ์ ํ์์ผ๋ฉฐ, ==์ฃผ๋ก ๋ท๋จ์ head๋ฅผ fine-tuning ํ๋ ๋ฐ์ ์ง์ค==ํ์์ต๋๋ค. ๊ทธ ์ธ ํ์ต ๋จ๊ณ์์ **์ง๋ฌธ์ ์ผ๋ถ๋ฅผ masking**ํ๊ฑฐ๋ **๋ชจ๋ธ์ ์์ธก์ ๋๋ ์๋ฒ ๋ฉ ํ ํฐ**์ ์ถ๊ฐ๋ก ํ์ฉํ๊ธฐ๋ ํ์์ต๋๋ค.
#### :rocket: Head fine-tuned
์ฅ๋น์ ํ๊ณ ๋ฐ ๋ฐ์ดํฐ ๋ถ์กฑ์ผ๋ก ๋ฐฑ๋ณธ์ ๊ตฌ์กฐ๋ฅผ ๋ฐ๊พธ์ด ๋ชจ๋ธ์ ์ฒ์๋ถํฐ pretrainํ ์๋ ์์์ต๋๋ค. ๋ฐ๋ผ์ ๋ฐฑ๋ณธ์ ๊ตฌ์กฐ๋ ๊ทธ๋๋ก ๋๋, Head ๊ตฌ์กฐ๋ฅผ ์ด๋ป๊ฒ ๋ฐ๊พธ๋ฉด ์ฑ๋ฅ์ด ๋ ์ข์์ง ์ฐ๊ตฌํด๋ณด์์ต๋๋ค.
##### :rocket: Dense based(DPR)

Dense based head๋ QuestionAnswering task์์ ๊ฐ์ฅ ๋ฒ์ฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ head ๊ตฌ์กฐ์
๋๋ค.
weight parameter ์๊ฐ ์๋์ ์ผ๋ก ์ ์ ํธ์ด๋ผ ์ฒ์์๋ ์ด ํค๋๊ฐ ๋ง์ ์ ๋ณด๋ฅผ ํํํด๋ด์ง ๋ชปํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง ์์ธ๋ก ๋ค๋ฅธ ํค๋์ ์ถฉ๋ถํ ๊ฒฌ์ค ์ ์์๋งํ ์ฑ๋ฅ์ ๋ณด์์ต๋๋ค.
backbone์ ์ฌ์ด์ฆ๊ฐ ์ด๋ฏธ ๊ฑฐ๋ํ๊ธฐ ๋๋ฌธ์ head์ input vector์๋ ์ด๋ฏธ ๋ง์ ์ ๋ณด๊ฐ ๋ด๊ฒจ์์ด ์ ๋์ํ๋ ๊ฒ์ผ๋ก ์ถ์ธก๋ฉ๋๋ค. ํค๋์๋ ์คํ๋ ค ๋
ธ์ด์ฆ ์์ด ์์ง์ vector๊ฐ๋ง ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ์ ์ธ ๋ ์ด์ด๋ฅผ ํตํ input ๊ฐ์ ํฐ ์กฐ์ ์ด ํ์ํ์ง ์์ ๊ฒ์
๋๋ค.
##### :rocket: CNN based

CNN ๊ธฐ๋ฐ ๋ชจ๋ธ์ **'start/end logit์ ๊ตฌํ ๋ ํ ๊ฐ์ word token๋ง ๋ด๋ ๋๋๊ฑธ๊น?'๋ผ๋ ์๋ฌธ**์์ ์์๋์์ต๋๋ค.
Dense based head๋ ํ ํฐ ํ ๊ฐ์ ์๋ฒ ๋ฉ(768์ฐจ์)์ input์ผ๋ก ๋ฐ์ ํด๋น ํ ํฐ์ ๋ํ start logit๊ณผ end logit์ ๋ด๋์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ์ค์ ๋ต์ ๋๋ถ๋ถ 2๊ฐ ์ด์, ๋ง๊ฒ๋ 10๊ฐ ์ด์์ ํ ํฐ์ผ๋ก ์ด๋ฃจ์ด์ ธ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด dense layer์ ์ฝ์ ์ ๋ฌด์์ผ๊น์? ์๋ฅผ ๋ค์ด ์๋์ ๊ฐ์ ์ง๋ฌธ์ ๋ด
์๋ค.
```
๋ฐ์งํ์ 1๋ผ์ด๋์์ ๋ช ์์๋ฅผ ์ฐจ์งํ๋๊ฐ?
```
์ด ์ง๋ฌธ์ ์ ๋ต์ `์ ์ฒด 4์์`์
๋๋ค. ํ๋ ์ด์ ์ ๋ชจ๋ธ์ ์ด์ ๋ํ ๋ต์ผ๋ก `4์์`๋ฅผ ์์ธกํ์ต๋๋ค. ์์ธก์ด ์์ ํ ํ๋ฆฐ ๊ฒ์ ์๋์ง๋ง, **๋ณด๋ค ๋ํ
์ผํ ์ ๋ณด๋ฅผ ์๋ฒฝํ ๋ด์๋ด์ง๋ ๋ชปํ์ต๋๋ค.** ์ ํฌ๋ ๊ทธ ์ด์ ๊ฐ ==๋ชจ๋ธ์ด ๋ก์ง๊ฐ์ ๋ด๋์ ๋ ํ ํฐ ํ ๊ฐ๋ง์ ๋ณด์๊ธฐ ๋๋ฌธ==์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค.

> [Understanding how Convolutional Neural Network (CNN) perform text classification with word embeddings](https://bit.ly/3u8p6Pq)
**1D CNN์ ์ด์ฉํ๋ฉด ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์ผ๋ถ ๊ทน๋ณตํ ์ ์์ต๋๋ค.** CNN์ ๊ฒฝ์ฐ dense layer์ ๋ฌ๋ฆฌ span 2 ์ด์์ embedding vector๋ค์ ํ ๋ฒ์ ๊ณ ๋ คํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ์์ ๊ฐ์ ๋ฌธ์ ์์๋ `์ ์ฒด 4์์` ๋ผ๋ ํฐ ๋จ์์ ํ ํฐ์ ๊ธฐ์ค์ผ๋ก start/end logit์ ๋์ถํด๋ด๋ฏ๋ก `์ ์ฒด` ํ ํฐ์๋ ๋์ ์์ค์ start logit์ด ๋ถ์ฌ๋๋ ํจ๊ณผ๋ฅผ ๊ธฐ๋ํ ์ ์์ต๋๋ค.
๋ฌผ๋ก backbone์ด self-attention ๊ตฌ์กฐ์ด๋ฏ๋ก head๋ก ๋ค์ด๊ฐ๋ ๋ฒกํฐ๋ ์ด๋ฏธ ์ฃผ๋ณ context๋ฅผ ๊ณ ๋ คํ์ฌ ์์ฑ๋๊ธฐ๋ ํฉ๋๋ค. ํ์ง๋ง **์ผ๋ฐ์ ์ธ self-attention ๊ตฌ์กฐ๋ ์ ์ฒด context๋ฅผ ๊ท ์ผํ๊ฒ ๊ณ ๋ คํ์ง, ์ฃผ๋ณ word์ ๋ ํฐ ๊ฐ์ค์น๋ฅผ ์ฃผ์ง๋ ์์ต๋๋ค.** Q/K/V matrix๊ฐ ์ฃผ๋ณ word์ ๋ ๊ฐ์ค์น๋ฅผ ์ค ์ ์๋๋ก ํ์ต๋ ์ ์์ง๋ง **๋ชจ๋ context์ ๋ํ์ฌ ์ค์ ๋ก ๊ทธ๋ฌํ ํจ๊ณผ๋ฅผ ์ค ์ ์๋ ๋ฐฉํฅ์ผ๋ก ํ์ต๋๊ณ ์๋์ง๋ ํ์ค์ ์ผ๋ก ์ง์ ํ๋จํ๊ธฐ ์ด๋ ต์ต๋๋ค(blackbox).** ํ์ง๋ง head์ CNN์ ํ์ฉํ๋ค๋ฉด ๋ณด๋ค ๋ช
ํํ๊ฒ ์ฃผ๋ณ word์ ๋ ํฐ ๊ฐ์ค์น๋ฅผ ๋ถ์ฌํ๋ ํจ๊ณผ๋ฅผ ๊ธฐ๋ํ ์ ์์ต๋๋ค.
์ด ๋ชจ๋ธ์ ํตํด LB ๊ธฐ์ค **EM์์ ์ฝ 2% ๊ฐ๋์ ์ฑ๋ฅ ํฅ์**์ ์ป์ ์ ์์์ต๋๋ค.

> Validation set ๊ธฐ์ค F1 score ๋ฐ EM score
##### :rocket: CNN_v2

์ด์ CNN ํค๋๋ฅผ ์ค๊ณํ๋ฉด์, ํด๋น ๋ชจ๋ธ์ด 768์ฑ๋์ ๋ฐ๋ก 2์ฑ๋๋ก ์ถ์ํ๋ฏ๋ก ์ ๋ณด๋ฅผ ๊ณ ๋ฅด๊ฒ ๋ด์๋ผ ์ ์๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค. CNN์ ์์๊ฐ๋ฉด์ ์ฑ๋์ ์กฐ๊ธ์ฉ ์ถ์ํ๋ ๋ฐฉ๋ฒ๋ ์๊ฐํด๋ณด์์ง๋ง, ๋ชจ๋ธ์ ๋ณต์ก๋๊ฐ ๋๋ฌด ์ปค์ง ๊ฒ ๊ฐ๋ค๋ ์ฐ๋ ค๊ฐ ์์์ต๋๋ค. ๊ฒฐ๋ก ์ ์ผ๋ก ๋จผ์ CNN ์ธต์ ํตํด 768์ฑ๋์ 256์ฑ๋๋ก ์ถ์ ํ concatํ์ฌ ๋ง์ง๋ง์๋ FC layer๋ฅผ ํต๊ณผ์ํค๋ ๋ฐฉ๋ฒ์ ๊ณ ์ํ์์ต๋๋ค.
๋ฒกํฐ ํฌ๊ธฐ์ ๊ธ๊ฒฉํ ์ถ์๋ก ์ธํ ์ ๋ณด ์์ค์ ๋ฐฉ์งํ ์ ์๋ ํํธ, ๋ชจ๋ธ์ ๋ณต์ก๋ ๋ํ ์ด์ ๊ณผ ๊ฑฐ์ ๋น์ทํ๊ฒ ์ ์งํ ์ ์์ผ๋ฏ๋ก, ๊ฒฐ๊ณผ์ ์ผ๋ก ์ด ๋ชจ๋ธ์ **์ด์ ๋ชจ๋ธ์ ์ฅ์ ์ ์ต๋ํ ์ด๋ฆฌ๋ ๋จ์ ์ ์ ๊ฑฐํ ์ ์์ต๋๋ค.**
๋ํ CNN์ธต๊ณผ Linear์ธต ์ฌ์ด์ **Dropout**์ ์ถ๊ฐํ์์ต๋๋ค. ์ฐ๋ฆฌ์๊ฒ ์ฃผ์ด์ง ํ์ต ๋ฐ์ดํฐ๋ ์ฝ 4000๊ฐ ์ ๋์
๋๋ค. ๋ชจ๋ธ์ ๋ณต์ก๋์ ๋นํด ํฑ์์ด ์ ์ ์์ด๋ผ๊ณ ์๊ฐํ๊ณ , ์ด๋ ๊ฒ ๋๋ฉด ๋ชจ๋ธ์ด ์ ์ epoch์์๋ ๊ธ๋ฐฉ overfitting ๋ ์ฐ๋ ค๊ฐ ์์ต๋๋ค.
์ ํฌ๋ Dropout์ ํตํด ์ด๋ฅผ ํด๊ฒฐํ๊ณ ์ ํ์๊ณ , ๋ค์ํ **Dropout ์์น๋ฅผ ์คํํด๋ณธ ๊ฒฐ๊ณผ 0.5 ์ด์์ ๋น๊ต์ ๋์ ์์น์์ ์ ์๋ฏธํ ์ฑ๋ฅ ํฅ์์ด ๋ํ๋๋ ๊ฒ์ ํ์ธ**ํ์์ต๋๋ค. ๋ชจ๋ธ์ ์ฌ์ด์ฆ๋ ํฌ๊ณ ํ์ต ๋ฐ์ดํฐ์ ์์ ์ ์, ์ด๋ป๊ฒ ๋ณด๋ฉด ๋ค์ ๋น์ ์์ ์ธ ๊ตฌ์กฐ์๊ธฐ ๋๋ฌธ์ Dropout ์์น๋ฅผ ํฌ๊ฒ ๋์ด๋ ๊ฒ์ด ์ ํจํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด์ CNN ๋ชจ๋ธ์ ๋นํด LB ๊ธฐ์ค ์ฑ๋ฅ ํฅ์์ ๊ฑฐ์ ์์์ง๋ง, Validation set ๊ธฐ์ค ์๊ฐํํด๋ณด์์ ๋ ์ด๋์ ๋ ์๋ฏธ์๋ ์ฑ๋ฅ ์งํ๋ฅผ ๋ณด์๋ค๊ณ ์๊ฐํฉ๋๋ค.

> Validation set ๊ธฐ์ค F1 score ๋ฐ EM score
> ํ์ต step์๊ฐ ์์ดํ์ฌ train_samples_per_second๋ ๋ฐ๋ฅด๊ฒ ์ถ๋ ฅ๋์ง ์์์ต๋๋ค.
##### :rocket: CNN-LSTM based

CNN-LSTM ๋ชจ๋ธ์ backbone์ output์ด ๋จผ์ LSTM์ ๊ฑฐ์น ์ดํ, ๋ค์ ์์์ ์ ์ํ CNN_v2๋ฅผ ํต๊ณผํ๋ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ์์ต๋๋ค.
์ด ๋ชจ๋ธ์ ํตํด ์ ํฌ๋ **CNN๋ณด๋ค ๋์ฑ ๊ฐ๋ ฅํ๊ฒ ์ฃผ๋ณ ๋จ์ด์ ๊ฐ์ค์น๋ฅผ ์ค์ด์ฃผ๊ณ ์** ํ์์ต๋๋ค. LSTM๊ณผ ๊ฐ์ RNN ๊ตฌ์กฐ์ ๊ฒฝ์ฐ sequence์ ๊ธธ์ด๊ฐ ๊ธธ์ด์ง๋ฉด ์๋จ input์ ์ํฅ์ด ์กฐ๊ธ์ฉ ์์ค๋๋ ๋ฌธ์ ์ ์ด ์์ต๋๋ค. ํ์ง๋ง ๊ฑฐ๊พธ๋ก ์๊ฐํ๋ฉด RNN ๊ธฐ๋ฐ ๊ตฌ์กฐ๋ ๋ฉ๋ฆฌ ์๋ ๋จ์ด๋ณด๋ค ์ฃผ๋ณ ๋จ์ด์ ์์ฐ์ค๋ฝ๊ฒ ๋ ํฐ ๊ฐ์ค์น๋ฅผ ์ค์ด์ค ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ==Bi-Directional LSTM==์ ํตํด ์๋ฐฉํฅ์ ์ฃผ๋ณ ๋จ์ด๋ฅผ ์ค์ ์ ์ผ๋ก ๊ณ ๋ คํ ์๋ก์ด ์๋ฒ ๋ฉ์ ์์ฑํ ์ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค.
๋ค๋ง ์ด ๋ชจ๋ธ์ ํตํด ๊ธฐ๋ํ๋๋งํผ์ ์ฑ๋ฅ ํฅ์์ ์ป์ง๋ ๋ชปํ์ต๋๋ค. ์ผ๋จ **LSTM์ ๋ถ์ธ ์ด์, ๋ชจ๋ธ์ ๋ณต์ก๋๊ฐ ๊ธ๊ฒฉํ ์ฆ๊ฐํ๊ฒ ๋๋ค๋ ๋จ์ **์ด ์๊ณ ์ด๋ ์์ ์ธ๊ธํ๋ overfitting ๋ฌธ์ ์๋ ์ฐ๊ฒฐ๋ฉ๋๋ค.
์ด๋ฌํ ๋ฌธ์ ์ ์ ํด์ํ๊ธฐ ์ํด **ํค๋ ๋จ์ ๋ชจ๋ธ ๋ณต์ก๋๋ฅผ ํค์ฐ๊ณ backbone์ ํ๋ฆฌ์งํ์ฌ ํ์ตํ๋ ๋ฐฉ๋ฒ๋ ๊ณ ์**ํด๋ณด์์ง๋ง, ๊ฒฐ๊ณผ์ ์ผ๋ก ์คํจํ์์ต๋๋ค. ์คํจํ ์ด์ ๋ ์ญ์ ๋ฐ์ดํฐ์
์ด ์ ๋ค๋ณด๋ backbone์ด ์ ํฌ์ ํ์ต ๋ฐ์ดํฐ์ ์ด๋์ ๋ fine-tuning ๋ ํ์์ฑ์ด ์์๊ธฐ ๋๋ฌธ์ผ ๊ฒ์
๋๋ค.
์ฑ๋ฅ์์ผ๋ก๋ ํฐ ํจ๊ณผ๊ฐ ์์์ง๋ง, ๊ทธ๋ผ์๋ ๋ง์ฝ ๋ฐ์ดํฐ๊ฐ ๋ง๊ณ head๋ฅผ ๋น ๋ฅด๊ฒ ๋ฐ๊พธ์ด๊ฐ๋ฉฐ ํ๋ํด์ผํ๋, ์ ํฌ์ ์คํํ๊ฒฝ๊ณผ๋ ์กฐ๊ธ ๋ค๋ฅธ ์ํฉ์ด์๋ค๋ฉด! **backbone์ ํ๋ฆฌ์งํ๊ณ LSTM์ ํฌํจํ ๋ท๋จ์ ๋ชจ๋ธ๋ง์ ํ์ต์ํค๋ ๋ฐฉ์์ผ๋ก CNN-LSTM ๊ตฌ์กฐ๋ฅผ ํ์ฉํ ์ ์์ง ์์๊น**๋ผ๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.

> Validation set ๊ธฐ์ค F1 score ๋ฐ EM score
> ํ์ต step์๊ฐ ์์ดํ์ฌ train_samples_per_second๋ ๋ฐ๋ฅด๊ฒ ์ถ๋ ฅ๋์ง ์์์ต๋๋ค.
#### :rocket: Exact Match(EM) embedding
ODQA์ ํฌ๋ฌธ์ ์ฐ [Reading Wikipedia to Answer Open-Domain Questions ๋
ผ๋ฌธ์ ๋ฆฌ๋ทฐ](https://bit.ly/3vaSUfF)ํ๋ฉด์ ๋ชจ๋ธ์ด ํ์ต์ ์ ํ ์ ์๋๋ก ์ถ๊ฐ์ ์ธ feature๋ฅผ model์ input์ผ๋ก ํจ๊ป ๋ฃ์ด์ฃผ๋ ์์ด๋์ด๋ฅผ ์ป๊ฒ ๋์์ต๋๋ค. ๋ชจ๋ธ์๊ฒ ์ผ์ข
์ ํํธ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด๋ผ๊ณ ๋ณผ ์ ์๋๋ฐ, ํํธ์ ์ง์ด ์ข๋ค๋ฉด ๋ชจ๋ธ์ ํ์ต์๋ ๋์์ด ๋ ๊ฒ์
๋๋ค.
๊ทธ ์ค์์๋, ์ ํฌ๋ ํด๋น ๋
ผ๋ฌธ์์๋ ํ์ฉํ๊ณ ์๋ **Exact Match feature**(์ดํ EM feature)๋ฅผ ๋ฃ์ด๋ณด๊ธฐ๋ก ํ์์ต๋๋ค. EM feature๋ **์ง๋ฌธ๊ณผ ์ง๋ฌธ ๊ฐ ๊ณตํต ํ ํฐ์ ํน์ ์๋ฒ ๋ฉ ๊ฐ์ ๋ํด์ฃผ๋ ๋ฐฉ์**์ผ๋ก ํ์ฉํฉ๋๋ค.
์๋์ ๊ฐ์ ์ง๋ฌธ/์ง๋ฌธ ์์ ์๋ก ๋ค๊ฒ ์ต๋๋ค.
```
Question
๋ฌธ๋ฒ ์ธก๋ฉด์์ ๋ ๋ณด์์ ์ธ ํฌ๋ฅดํฌ๊ฐ์ด ํ์ค์?
Context
... ๋ธ๋ผ์ง ํฌ๋ฅดํฌ๊ฐ์ด์ ์ ๋ฝ ํฌ๋ฅดํฌ๊ฐ์ด๋ ํ์ฌ ๋ณ๋์ ์ ์ฌํ ์ฒ ์ ํ์ค์ ๊ฐ๊ฐ ๋๊ณ ์๋ค ...
```
์ ์์์์๋ `ํฌ๋ฅดํฌ๊ฐ`๊ณผ `##์ด` ํ ํฐ์ด ์ง๋ฌธ๊ณผ ์ง๋ฌธ์ ๊ณตํต์ผ๋ก ์กด์ฌํฉ๋๋ค.
๋ฐ๋ผ์ ์๋์ ๊ฐ์ด ์ง๋ฌธ์ ํด๋น ํ ํฐ ์์น์ ๊ธฐํ์ต๋ ์๋ฒ ๋ฉ ๊ฐ์ ๋ํด์ค๋๋ค.

์ผ์น/๋ถ์ผ์น ์ฌ๋ถ๋ก binary ํ ํฐ($E_0$ ํน์ $E_1$)์ ๋ํด์ฃผ๋ ๋ฐฉ์๋ ์๊ฐํด๋ณด์์ง๋ง, ์ ํฌ๋ ์์ ๊ฐ์ด **ํ ํฐ์ ์์น๋ณ๋ก EM feature์ ๊ฐ์ ๋ฌ๋ฆฌํ์ฌ** ๋ํด์ฃผ์์ต๋๋ค. ์ฐ์ ์ ๋ต ์์น๊ฐ ์ง๋ฌธ๋ณ๋ก ๊ณ ๋ฅด๊ฒ ํผ์ ธ์์ ๊ฒฝ์ฐ ์ ์ฒด ์์น์ EM embedding์ด ๋น์ทํ ๊ฐ์ผ๋ก ํ์ต๋ ๊ฒ์
๋๋ค(binary์ ๋น์ทํ ํจ๊ณผ). ๊ทธ๋ฆฌ๊ณ **๋ง์ฝ ์๋ก ๋ค๋ฅธ ์ง๋ฌธ๋ค์์ ์ ๋ต์ด ๋น์ทํ ๊ณณ์ ์์นํ๋ค๋ฉด, binary๋ก ๋ํด์ค ๋๋ณด๋ค ์ง๊ธ์ ๋ฐฉ์์ด ๋ชจ๋ธ์๊ฒ ๋ ๊ฐ๋ ฅํ ํํธ๋ฅผ ์ค ์ ์์ ๊ฒ**์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
์ด์ ๊ฐ์ด EM embedding์ ๋ํด์ฃผ๋ฉด, ๊ถ๊ทน์ ์ผ๋ก ์ง๋ฌธ์ด ์ ๋ต์ ์ฐพ์ ๋ ์ด๋ ๋ถ๋ถ์ด ์ฐพ๊ณ ์ํ๋ ๋ต๊ณผ ์ฐ๊ด๋์ด์๋์ง ์ ์ ์์ต๋๋ค. ์ฐธ๊ณ ๋
ผ๋ฌธ์์๋ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์ ์ํ์๊ณ ์ค์ ๋ก๋ ์๋ฏธ์๋ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐํ์์ต๋๋ค.
๋ค๋ง ์์ฌ์ ๋ ์ ์, ์ด๋ฌํ ์๋ฒ ๋ฉ์ ํจ๊ป ํ์ฉํ์๋๋ฐ๋ ์ด์ ๊ณผ ์ฑ๋ฅ์ ๋น์ทํ์๋ค๋ ์ ์
๋๋ค. ์ด์ ๋ํ ์์ธ ๋ถ์์ ํด๋ณด์๋ฉด,
##### 1. backbone๊ณผ head ์ฌ์ด์์ EM embedding์ ๋ํด์ฃผ์๋ค.
์ ํฌ๊ฐ ํ์ฉํ ๋ชจ๋ธ ๊ตฌ์กฐ๋ ์๋์ ๊ฐ์ต๋๋ค.

์ฒ์์๋ backbone์ ๋ค์ด๊ฐ๊ธฐ ์ด์ ์ ๋ฏธ๋ฆฌ EM embedding์ ๋ํด์ฃผ๋ ค๊ณ ํ์์ต๋๋ค. ํ์ง๋ง ์ ํฌ๋ pretrained model์ ๊ฐ์ ธ์์ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ backbone ์ด์ ์ embedding layer์ ํ๋ ๋ ์ถ๊ฐํ๊ธฐ๋ ์ด๋ ค์ ์ต๋๋ค. ๋ฐ๋ผ์ ์ ํฌ๋ **backbone์ ํต๊ณผํ๊ณ ๋์จ ํ ํฐ๋ณ ์๋ฒ ๋ฉ์ EM embedding ๊ฐ์ ๋ํด์ค ํ head๋จ์ผ๋ก ์ด๋ฅผ ๋๊ฒจ์ฃผ์์ต๋๋ค.**
์ฆ, **ํ์ฌ ๋ชจ๋ธ ๊ตฌ์กฐ์์๋ ์ฒ์๋ถํฐ EM embedding์ ๋ฃ์ด์ฃผ์ง ์์๊ธฐ ๋๋ฌธ์ backbone์์๋ ์ฐ๋ฆฌ๊ฐ ์๋ํ ํํ์ ํ์ต์ ์งํํ์ง ๋ชปํฉ๋๋ค.** ์ฐ๋ฆฌ์ ๋ชจ๋ธ์์ ๊ฐ์ฅ ๊ฑฐ๋ํ ๋ถ๋ถ์ด ๋ฐ๋ก backbone๋จ์ธ๋ฐ ์ด ๋ถ๋ถ์ด ์๋ํ๋๋ก ํ์ต์ ์งํํ์ง ๋ชปํ๋ค๋ ์ ์ ์ ๋ต์ ์์ด์ ํฐ ์ฝ์ ์ด ๋์๋ค๊ณ ์๊ฐํฉ๋๋ค.
##### 2. EM embedding์ด ๋ชจ๋ธ์๊ฒ ์ ์๋ฏธํ ํํธ๋ฅผ ์ค ์ ์์๊น?
1๋ฒ ์ด์ ์๋ ์ฐ๊ฒฐ๋๋๋ฐ, ์ฌ์ค self-attention ๊ตฌ์กฐ๋ EM embedding์ด ๊ฐ์ ธ์ฌ ์ ์๋ ์ฅ์ ์ ์ด๋ฏธ ์ด๋์ ๋ ๊ฐ์ง๊ณ ์์ต๋๋ค. **self-attention ์ฐ์ฐ ์์ ๋์ผํ ํ ํฐ ๊ฐ์ ๋ด์ ๊ฐ์ ์ต๋๊ฐ ๋๊ธฐ ๋๋ฌธ**์
๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋ธ์ ์ด๋ฏธ EM embedding ์์ด๋ ์๋ํ๋ ๋ฐ์ ์ ์ฌํ ํํ์ ํ์ต์ ํ๊ณ ์์์ ๊ฒ์
๋๋ค.
ํ์ง๋ง ์ ํฌ๋ **Head๋จ์์ ํ ๋ฒ ๋ Exach match ๋ถ๋ถ์ ๊ฐ์กฐํ๋ ๊ฒ์ด ์ฌ์ ํ ํจ๊ณผ๊ฐ ์์ ๋งํ๋ค๊ณ ์๊ฐ**ํฉ๋๋ค. ๋ฐ๋ผ์ ์ด ๋ถ๋ถ์ด ์ง์ง ์ฑ๋ฅ ์ ์กฐ์ ์์ธ์ด์์์ง๋ ์ฌ์ ํ ์๋ฌธ์ผ๋ก ๋จ์ต๋๋ค.
##### 3. EM embedding layer๊ฐ ์ถฉ๋ถํ ํ์ต๋์ง ๋ชปํ์ ๊ฒ์ด๋ค.
์ด ๋ฐฉ๋ฒ์ด ์ ํจํ๋ ค๋ฉด ๋ฌด์๋ณด๋ค๋ ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ํตํด EM embedding layer์ ํ์ต์ด ์ถฉ๋ถํ ์ด๋ฃจ์ด์ก์ด์ผ ํ ํ
๋ฐ ์ฝ 4000๊ฐ ๊ฐ๋ ๋๋ ๋ฐ์ดํฐ์
์ผ๋ก๋ ์๋นํ ์ด๋ ค์ ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ ํฌ competition ๋ฐ์ดํฐ์
์ ์ ๋ต ์์น ๋ถํฌ์ KorQuAD ๋ฑ ๊ณต๊ฐ๋ ๋ฐ์ดํฐ์
์ ์ ๋ต ์์น ๋ถํฌ๊ฐ ์ด๋์ ๋ ์ฐจ์ด๋ฅผ ๋์๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ์ ์ธ ๋ฐ์ดํฐ์
์ ํ์ฉํ๊ธฐ์๋ ์ด๋ ค์์ด ์์์ต๋๋ค.
#### :rocket: Span masking
BERT ๋ชจ๋ธ์ input ๋จ์ด์ ์ผ๋ถ๋ฅผ maskingํ๊ณ ์ด๋ฅผ ์์ธกํ๋ ๋ฐฉ์์ ํ์ต๋ฒ์ ํ์ฉํ๊ณ ์์ผ๋ฉฐ, ์ค์ ๋ก ์ด๋ฌํ ๋ฐฉ์์ ํ์ต์ ํจ๊ณผ๋ฅผ ์ธ์ ๋ฐ๊ณ ์ฌํ ๋ง์ ๋ชจ๋ธ์์๋ ํ์ฌ๊น์ง ํ์ฉ๋๊ณ ์์ต๋๋ค.
์ ํฌ ์ญ์ ์ด ๋ฐฉ๋ฒ์ด ์ ํฌ task์ fine-tuningํ ๋ ํจ๊ป ํ์ฉํ๊ธฐ์ ์ ์ ํ๋ค๊ณ ํ๋จ, input token์ ์ผ๋ถ๋ฅผ ๋ง์คํนํ์ฌ ํ์ตํ๋ ๋ฐฉ์์ ํ์ฉํด๋ณด์์ต๋๋ค. ํนํ, ์์ CNN ๋ชจ๋ธ์ ํ์ฉํ ์ด์ ๊ณผ ๊ฐ์ ๋งฅ๋ฝ์์ ์ ํฌ๋ **[SpanBERT](https://arxiv.org/abs/1907.10529)์ Span masking ํ์ต ๋ฐฉ๋ฒ**์ ํ์ฉํ์์ต๋๋ค.

> SpanBERT: Improving Pre-training by Representing and Predicting Spans.
> Mandar Joshi, Danqi Chen, Yinhan Liu, Daniel S. Weld, Luke Zettlemoyer, Omer Levy
Span masking์ ์์ ๊ฐ์ด ์ฐ์๋ sequence๋ฅผ ํ๋ฒ์ maskingํ๋ ๋ฐฉ๋ฒ์
๋๋ค. ํนํ ์ ํฌ task์์๋ ๋ด๋์ ์์ธก์์ token์ด ํ๋๋ผ๋ ๋น ์ง๋ฉด EM score๋ฅผ ์ป์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์ฐ์ masking์ ํตํด ์ป์ ์ ์๋ ์ด์ ์ด ๋ ํฌ๋ค๊ณ ์๊ฐํ์ต๋๋ค.
ํ์ง๋ง ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ ๋์๋ ์ฑ๋ฅ ํฅ์์ด ํฌ๊ฒ ์์์ต๋๋ค. ์ญ์ ์์ธ์ ์๊ฐํด๋ณด์๋ฉด
##### 1. ์ ๋ต๊น์ง masking ๋ ์ ์๋ค.
random masking์ ํ์ฉํ์๊ธฐ ๋๋ฌธ์, **์ ๋ต์ ์ผ๋ถ๊ฐ masking๋ ์ ์์ต๋๋ค.** ์ด๋ ๊ฒ ๋๋ฉด ๋ชจ๋ธ์ด ์ ๋ต ์์ฒด๋ฅผ ๋ณด์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ํ์ต์ ์น๋ช
์ ์ผ ์ ์์ต๋๋ค.
๋ค๋ง ์ ๋ต ์์ฒด๊ฐ 3๊ฐ ์ด์์ ํ ํฐ์ผ๋ก ์ด๋ฃจ์ด์ง ๊ฒฝ์ฐ๋ ์์์ผ๋ฏ๋ก ์ด๊ฒ ์ง์ง ์์ธ์ธ์ง๋ ์ข ๋ ์๊ฐํด๋ณผ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์คํ๋ ค ์ ๋ต์ ์ผ๋ถ๋ง์ด masking๋ ๋ฌธ์์์ ๋ชจ๋ธ์ด masking๋์ง ์์ ๋๋จธ์ง ์ ๋ต์ด๋ผ๋ ๋ฝ์๋ผ ์ ์๋๋ก ํ์ต๋๋ค๋ฉด ๋ณด๋ค ๊ฐ๊ฑดํ ๋ชจ๋ธ์ ๊ตฌ์ถํ ์ ์์ ๊ฒ์
๋๋ค.
##### 2. masking์ ์์น๋ฅผ ํ์ ํด๋ณผ ์๊ฐ์ ํ์ง ๋ชปํ๋ค.
์ถํ ํ๊ณ ์ธ์
์์ ๋ค๋ฅธ ํ์๊ฒ ๋ฃ๊ธฐ๋ก๋, context๋ maskingํ์ง ์๊ณ question๋ง์ maskingํ์ ๋ ์ฑ๋ฅ์ด ํฌ๊ฒ ํฅ์๋์๋ค๊ณ ํฉ๋๋ค. ์ ํฌ๋ ์ฒ์์ masking ๋ฐฉ๋ฒ์ ๊ตฌํํ๊ณ ์ฑ๋ฅ์ด ์๋์์ ๋, ์ด ๋ฐฉ๋ฒ์ ๋ ๊ณ ๋ํํ ๋ฐฉ์์ ์๊ฐํ์ง ๋ชปํ๊ณ ๊ทธ๋ฅ ๋ง์คํน ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ง ์๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ์กฐ๊ธ๋ง ๋ ์๊ฐํด๋ณด์์ผ๋ฉด ์ฌ๋ฌ ์๊ฐ์์ ์คํ์ ์งํํด๋ณผ ์ ์์์ํ
๋ฐ, ๊ธฐ์กด ๋ฐฉ๋ฒ์ ๋ ๋ฐ์ ์์ผ๋๊ฐ์ง ๋ชปํ ์ ์ ์์ฌ์ฐ๋ฉด์, ๋ ๋ฐ์ฑํ ๋ถ๋ถ์
๋๋ค.
#### :rocket: Sentence Pick & Re-predict
์ฐ๋ฆฌ ๋ชจ๋ธ์ ์์ธก์ด ์ค์ ์ ๋ต๊ณผ ํฌ๊ฒ ๋ค๋ฅด์ง ์๋ค๋ ์ ์ ๋ฐ๊ฒฌํ๊ณ ์๊ฐํด๋ธ ์์ด๋์ด์
๋๋ค.
์์ EDA ํํธ์์๋ ์ธ๊ธํ์์ง๋ง, ์ ํฌ๋ ๋ชจ๋ธ์ด ๋ด๋์ ์์ธก์ ๋ํ EDA๋ฅผ ์งํํ๋ฉด์ **์ ๋ต๊ณผ ์์ธก๊ฐ์ด ์๋ก ํฌํจ๊ด๊ณ์ธ ๊ฒฝ์ฐ**๊ฐ ๋ง๋ค๋ ์ ์ ํ์ธํ์ต๋๋ค. ์๋ฅผ ๋ค์ด ์๋์ ๊ฐ์ ์ฌ๋ก๊ฐ ์กด์ฌํฉ๋๋ค.
```
## ์์ธก โ ์ ๋ต
์ง๋ฌธ: ๋ฌ์
์ ๋๊ตฌ์ ๊ฐ์กฑ๊ณผ ํจ๊ป 1889๋
ํ๋ฆฌ ๋ฐ๋ํ์ ๊ฐ๋๊ฐ?
์ ๋ต: ํ์ด์ปค ๊ต๋์๋ ์จ๋ฆฌ์ค ํ์ด์ด ์ค๋ฏธ์ค
์์ธก: ์จ๋ฆฌ์ค ํ์ด์ด ์ค๋ฏธ์ค
## ์ ๋ต โ ์์ธก
์ง๋ฌธ: ์
๋จ์ด ์ฌ์ ์ ์ผ๋ก ํ๋ค ๋ ๋จ์๋ค์ ์ด๋์ ๋์ ๋ฒ์๋๊ฐ?
์ ๋ต: ์นด๋ฐ๋ ๋ ํด๋ฝ
์์ธก: ์นด๋ฐ๋ ๋ ํด๋ฝ ๋ฑ์์ ๋ถ์
```
์ ์ฌ๋ก๋ค์ ๋ชจ๋ธ์ด ์์ธก์ ์ ๋ด๋์์ง๋ง, EM score๋ฅผ ์ป์ง ๋ชปํ๋ ์ผ์ด์ค์
๋๋ค. 240๊ฐ ๊ฐ๋์ validation set์์ ๋ฌด๋ ค 200๊ฐ ์ด์์ ์์ธก์ด ์ ๋ต๊ณผ ํฌํจ๊ด๊ณ์์ต๋๋ค. ์ด๋ฌํ ๋ถ๋ถ์ ์ ํ์ฉํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น์? ์ ํฌ๋ ๊ทธ ์ด์ ๊ฐ ==์ง๋ฌธ๊ณผ ์ง๋ฌธ๊ฐ์ ๊ด๊ณ๋ฅผ ํ์
ํ๋ ๋ชจ๋ธ==์ ์๋ก ์ค๊ณํ๋ ๋ฐ์ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค. ์ฆ, โ Retriever๊ฐ ๋ฌธ์๋ฅผ ๋ฝ์๋ด๊ณ โก Reader๊ฐ ์ ๋ต์ ์์น๋ฅผ ์ฐพ์ ์ดํ โข ์ด ๋ชจ๋ธ์ด **์ง๋ฌธ์ ์๋**๋ฅผ ํ์
ํ์ฌ ์ต์ข
์ ๋ต์ ๋ฝ์๋ด๋ ๊ฒ์
๋๋ค.
ํ์ง๋ง ์ด ๋ฐฉ๋ฒ๋ ๊ฒฐ๊ตญ ํ์ฉํ์ง ๋ชปํ์ต๋๋ค. ํ์ฉํ์ง ๋ชปํ ๊ฐ์ฅ ํฐ ์ด์ ๋ **์ ํฌ ๋ฐ์ดํฐ์
์ ์๋ ์ง๋ฌธ๋ค์ด, ๊ทธ ์๋๊ฐ ๋ถ๋ถ๋ช
ํ๋ค๋ ์ **๋๋ฌธ์ด์์ต๋๋ค.
์๋ ์์๋ฅผ ๋ด
์๋ค.
```
์ง๋ฌธ: 2020๋
4์ 4์ผ, ๋๋๋ ํธ๋ผํ ๋ฏธ๊ตญ ๋ํต๋ น์ด ๋๋ ๋๋ผ ๋ชจ๋ ์ธ๋ ์ด๋ฆฌ์๊ฒ ๋ง๋ผ๋ฆฌ์์
๋ฃจํธ์ค ์น๋ฃ์ ์ธ ํ์ด๋๋ก์ํด๋ก๋กํธ ์ถํ๋ฅผ ์์ฒญํ๋ค.
์ง๋ฌธ: ์ธ๋ ์ด๋ฆฌ์๊ฒ ๋ง๋ผ๋ฆฌ์์ ๋ฃจํธ์ค ์น๋ฃ์ ๋ฅผ ๋ณด๋ด๋ฌ๋ผ๊ณ ์๊ตฌํ ์ธ๋ฌผ์?
๋ต: '๋๋๋ ํธ๋ผํ ๋ฏธ๊ตญ ๋ํต๋ น'
---
์ง๋ฌธ: ์ ์ง๊ธธ๊ณผ ๊ทธ์ ๋๋ฃ๋ค์ ํธ์๋ฌธ์ผ๋ก ์ธํ์ฌ 1831๋
9์ 9์ผ์ ๊ตํฉ ๊ทธ๋ ๊ณ ๋ฆฌ์ค 16์ธ๋
์กฐ์ ์ ๋ฒ ์ด์ง์์ ๋ถ๋ฆฌ๋ ํ๋์ ๋๋ชฉ๊ตฌ๋ฅผ ์ค์ ํ๊ณ ํ๋ฆฌ ์ธ๋ฐฉ์ ๊ตํ์ ๋ฐ๋ฅดํจ๋ก๋ฉ์ค ๋ธ๋คผ๊ธฐ์๋ฅด
์ ๋ถ๋ฅผ ๊ทธ๊ณณ์ ์ด๋ ์ฃผ๊ต๋ก ์๋ช
ํ๋ค.
์ง๋ฌธ: 1831๋
์กฐ์ ๋๋ชฉ๊ตฌ์ ์ฒซ ์ฃผ๊ต ์ง์๋ฅผ ๋งก์ ์ฌ๋์?
๋ต: '๋ฐ๋ฅดํจ๋ก๋ฉ์ค ๋ธ๋คผ๊ธฐ์๋ฅด'
```
์ ํฌ๋ ์ฒ์์ ๋ต์ ์ง์๋ช
์ธ `๋ฏธ๊ตญ ๋ํต๋ น`, `์ ๋ถ` ๋ฑ์ด ์ผ์ ํ ๊ท์น์ ๋ฐ๋ผ ํฌํจ๋๊ฑฐ๋, ํฌํจ๋์ง ์์ ๊ฒ์ผ๋ก ์์ํ์ต๋๋ค. ๋ค๋ง ์์ ๊ฐ์ด ์ค์ ๋ก๋ ๊ทธ๋ด๋ฏํ ๊ท์น์ด ์์๊ณ ๊ฒฐ๊ตญ ์ ํฌ๊ฐ ๊ธฐ์กด์ ์๊ฐํ๋ **์ง๋ฌธ์ ์๋**๋ ๋ฐ๋ก ์กด์ฌํ์ง ์๋๋ค๋ ๊ฒ์ ํ์ธํ์์ต๋๋ค.
์ด ๋ชจ๋ธ์ ํ์ฉํ์ ๋ ์ฑ๋ฅ์ด ์กฐ๊ธ ์์นํ๊ธฐ๋ ํ์์ผ๋, **์ฑ๋ฅ ์์น ํญ์ ๋นํด computational cost ๋ฐ time cost๊ฐ ์ง๋์น๊ฒ ์ปธ๊ธฐ ๋๋ฌธ์ ๊ณง ๋ฐฉ๋ฒ์ ํ๊ธฐํ๊ฒ ๋์์ต๋๋ค.** ๋ชจ๋ธ์ ๊ตฌ์กฐ๋ฅผ ์์ ์ธ๊ธํ ๊ฒ๊ณผ ๊ฐ์ด ๋ฐ๊พธ๋ฉด ํ์ฉํ๋ ๋ชจ๋ธ์ด ์ด 3๊ฐ๊ฐ ๋๊ธฐ ๋๋ฌธ์ ์์ฐ์ค๋ฝ๊ฒ ํ์ต ๋ฐ ์์ธก์ ํ์ํ cost๊ฐ ๋์์ง๊ธฐ ๋๋ฌธ์
๋๋ค. ์กฐ๊ธ์ ์ฑ๋ฅ ํฅ์์ ์ํด ์ด ๋ฐฉ๋ฒ์ ํ์ฉํ๊ธฐ๋ ๋ค์ ๋ถ๋ด์ค๋ฌ์ ์ต๋๋ค.
#### :rocket: Backbone
์ ํฌ์ task์ ๋ง๋ ์ ์ ํ pretrained backbone์ ์ ํ๋ ๊ฒ๋ ๋งค์ฐ ์ค์ํฉ๋๋ค. **backbone์ด ๋ด๋๋ output์ด ์์ง์ ๊ฒ์ด์ด์ผ head ์ญ์ ์ข์ ๋ฐฉํฅ์ผ๋ก ํ์ตํ ์ ์๊ธฐ ๋๋ฌธ**์
๋๋ค.
์ ํฌ๊ฐ ์ฃผ์ํ๊ฒ ํ์ฉํ๋ backbone์ <u>[huggingface transformers ๋ชจ๋ธ ๊ธฐ์ค](https://huggingface.co/models)</u> ์๋์ ๊ฐ์ต๋๋ค.
- xlm-roberta-base/large
- monologg/koelectra-base-v3-discriminator
- monologg/koelectra-base-v3-finetuned-korquad
validation score ์์ผ๋ก๋ koelectra-base-v3 ๊ธฐ๋ฐ์ ๋ฐฑ๋ณธ์ด ํ์คํ ์ฐ์ธํ ์ฑ๋ฅ์ ๋ณด์์ต๋๋ค. ์๋ฌด๋๋ ํ๊ตญ์ด ๊ธฐ๋ฐ์ผ๋ก ํ์ต๋ ๋ชจ๋ธ์ด๋ค๋ณด๋ ์๋์ ์ผ๋ก ๋ ์ข์ ์ฑ๋ฅ์ ๋ณด์๋ ๊ฒ์ผ๋ก ์ถ์ธก๋ฉ๋๋ค.
xlm-roberta-base/large์ ๊ฒฝ์ฐ ์ฑ๋ฅ์ด ๊ฐ์ฅ ์ข์ ๊ฒ์ด๋ผ๊ณ ์์ํ์ง๋ง **์์ธ๋ก validation score๋ ๋งค์ฐ ์ ์กฐ**ํ์์ต๋๋ค. xlm-roberta model์ KorQuAD์ fine-tuningํ๊ณ ํ์ฉํ๋ค๋ฉด ์ฑ๋ฅ์ด ๋ ์ข์ ์ ์๊ฒ ๋ค๋ ์๊ฐ์ ํ์ง๋ง, ์ ํฌ ํ์ V100 GPU๋ฅผ ๊ฐ์ง๊ณ ์๋ ํผ์ด๊ฐ ์์๊ธฐ ๋๋ฌธ์ ๋ณด์ฅ๋์ง ์์ ๋ฐฉ๋ฒ์ ์ค๋ ์๊ฐ ๊ทธ๋ํฝ ์นด๋ ํ๋๋ฅผ ์๋ชจํ๋ค๋ ์ ์ด ๋ถ๋ด์ค๋ฌ์ ์ด ๋ถ๋ถ์ ์งํํ์ง ๋ชปํ์ต๋๋ค.
๊ฒฐ๊ตญ ์ ํฌ ํ์ **์ด๋์ ๋ ์ฑ๋ฅ์ด ๋ณด์ฅ๋์์ผ๋ฉฐ ๋์์ ๋น ๋ฅด๊ฒ ํ์ตํ ์ ์๋ `monologg/koelectra-base-v3-finetuned-korquad` ํน์ `monologg/koelectra-base-v3-discriminator` ๋ชจ๋ธ์ ์ฃผ๋ก ํ์ฉ**ํ๊ฒ ๋์์ต๋๋ค.
๋ค๋ง ์ญ์ ์ถํ ํ๊ณ ์ธ์
๋ ์๊ฒ๋ ์ฌ์ค์ธ๋ฐ, **xlm-roberta-large ๋ชจ๋ธ์ด validation์ ์ ์กฐํ์ง๋ง ์คํ๋ ค LB score๋ ๋์๋ค๊ณ ** ํฉ๋๋ค. ์ ํฌ๊ฐ validation score๋ฅผ ์ด๋์ ๋ ์ ๋ขฐํ๊ณ ์์๊ธฐ ๋๋ฌธ์ LB์ ๋ง์ด ์ ์ถ์ ํด๋ณด์ง๋ ์์์๋๋ฐ ์ง๊ธ ์์ ์๊ฐํด๋ด๋ ๊ณ ์ 240๊ฐ๋ผ๋ ์ ์ ์์ validation data๋ก๋ถํฐ ๋์ถ๋ ์งํ๋ฅผ ๋๋ฌด ๋งน์ ํ์ง๋ ์์๋ ํ๋ ์๊ฐ์ด ๋ค๊ธฐ๋ ํฉ๋๋ค. ์ญ์ ๋ฐ์ฑํ ๋ถ๋ถ์
๋๋ค.
==Hyperparameter ์คํ==์ ์์งํ ๋ง์ด ํด๋ณด์ง๋ ๋ชปํ์ต๋๋ค. ๋๋ถ๋ถ์ ์๊ฐ์ ๋ชจ๋ธ ๊ตฌ์กฐ์ ๋ํ ์๊ฐ์ ํ๋๋ฐ์ ์ฌ์ฉํ์๊ณ hyperparameter tuning์ ๋ค์ด๋ ์๊ฐ์ ๋นํด ์ป๋ ๊ฒ์ด ์ ๋ค๊ณ ์๊ฐํ์ต๋๋ค. ์๋๋ ์คํํด๋ณธ ์ฃผ์ hyperparameter ๋ชฉ๋ก์
๋๋ค.
- learning_rate: 1e-5, 3e-5, 1e-6, 3e-6
- scheduler: linear, cosine, warmup
- batch_size: 8, 16
learning rate์ ๊ฒฝ์ฐ scheduler๊ฐ ์๊ธฐ ๋๋ฌธ์ ํฌ๊ฒ ์ ๊ฒฝ์ฐ์ง ์์์ต๋๋ค. ์ฑ๋ฅ๋ฉด์์๋ ๋๋๋ฌ์ง ์ฐจ์ด๋ ์์์ต๋๋ค. batch size์ ๊ฒฝ์ฐ P40 ํ๊ฒฝ์์๋ 16 ์ ๋๊ฐ ์ต๋๋ผ์ ๋ ํฐ ์ฌ์ด์ฆ์์ ์คํํด๋ณด์ง ๋ชปํ์ต๋๋ค. 4๋ ๋๋ฌด ์๋ค๊ณ ํ๋จํ์ฌ ์คํํ์ง ์์์ต๋๋ค. scheduler๋ 3๊ฐ ์ ๋๋ฅผ ๋ฐ๊ฟ๊ฐ๋ฉฐ ์คํํด๋ณด์๋๋ฐ ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ชจ๋ ์ฑ๋ฅ ์ฐจ์ด๊ฐ ํฌ๊ฒ ๋์ง ์์์ต๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ์ด๋ฌํ ์ผ๋ จ์ ์คํ๋ค์ด ๋น์ฅ์ ํฐ ์๋ฏธ๊ฐ ์๋ค๊ณ ํ๋จํ์์ผ๋ฉฐ, ๋ฐ๋ผ์ hyperparameter๋ ์ฃผ๋ก ์ฑ๋ฅ๋ณด๋ค๋ **ํ์ฉํ๊ธฐ ํธํ ๊ฒ๋ค์ ํ์ฉ**ํ์์ต๋๋ค. batch size๋ 8์ด์ด์ผ ๋ค๋ฅธ ์คํ์ ํ๋ฉด์ ๋์์ ํ์ต์ ์งํํ ์ ์์๊ธฐ ๋๋ฌธ์ **๊ฑฐ์ ํญ์ 8์ ํ์ฉ**ํ์์ต๋๋ค. scheduler๋ default๊ฐ linear์๊ธฐ ๋๋ฌธ์ ๊ทธ๋๋ก **linear scheduler**๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
#### :rocket: (๋ฒ์ธ) ETRI KorBERT
**ETRI KorBERT**๋ ํ๊ตญ์ด๋ก ํ์ต๋ ์ ๋ช
ํ BERT ๋ชจ๋ธ๋ค ์ค ํ๋์
๋๋ค.
์ด ๋ชจ๋ธ์ ํนํ **ํ๊ตญ์ด ํํ์ ๊ธฐ๋ฐ ํ ํฌ๋์ด์ **๋ฅผ ํ์ฉํ๊ธฐ ๋๋ฌธ์, ์ด ๋ชจ๋ธ์ ํ์ฉํ์ฌ MRC task๋ฅผ ์งํํ๋ค๋ฉด QA task์์ ์์ธก๊ฐ์ ๋ถ์ ์ ํ ์กฐ์ฌ๋ ๋ถ์ฌ๊ฐ ํฌํจ๋๋ ๊ฒฝ์ฐ๋ฅผ ๋ฏธ์ฐ์ ๋ฐฉ์งํ ์ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค.
ํ์ง๋ง ์ํ๊น๊ฒ๋ ETRI KorBERT๋ ๋น์ API๊ฐ ์ ๋๋ก ์๋ํ์ง ์์ ์ ๋๋ก ์จ๋ณด์ง๋ ๋ชปํ์์ต๋๋ค. :cry: ๋ฌผ๋ก ์ ํฌ๊ฐ ์ง์ ์ค๊ณํ ๋ชจ๋ธ์ด ์๋๊ธฐ ๋๋ฌธ์ ํ์ฉ์๋ ์ด๋์ ๋ ํ๊ณ๊ฐ ์์์ ๊ฒ ๊ฐ๊ธฐ๋ ํ์ง๋ง ๋ชจ๋ธ ์์ฒด์ ์ฑ๋ฅ์ด ์ผ๋ฐ์ ์ธ xlm-roberta/bert-multilingual/ko-electra ๋ฑ์ ๋ชจ๋ธ๋ณด๋ค ์๋ฑํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
์ ์ด๋ ์ ํฌ๊ฐ ์ปค์คํ
ํ ๋ชจ๋ธ์ด ํ์ฌ ์ด๋์ ๋์ ์ฑ๋ฅ์ ๋ณด์ด๋์ง ๋น๊ต ๋์ ์งํ๋ก๋ผ๋ ํ์ฉํ ์ ์์์ ๊ฒ ๊ฐ์๋ฐ ๋น์ API์๋ฒ๊ฐ ๋ค์ด๋์ด ์ด๋ฅผ ํ์ฉํ์ง ๋ชปํ๋ค๋ ์ฌ์ค์ ๋ชป๋ด ์์ฝ์ต๋๋ค.
---
## :cyclone: Ensemble
### :cyclone: K-Fold Cross Validation & Bagging
๊ธฐ์กด ๋ชจ๋ธ์ ์ฑ๋ฅ ๊ฐ์ ์ ์ํด [Model Prediction Anlysis](#:books:-Model-prediction-analysis)๋ฅผ ํ๋ฉด์, ๋งค๋ฒ ๋ชจ๋ธ์ด ํ๋ฆฌ๋ example์ ๋์ผํ example์ด๋ผ๋ ์ ์์ K-Fold cross validation์ ์ํํด์ผ๊ฒ ๋ค๋ ์์ด๋์ด๋ฅผ ์ป์์ต๋๋ค.

#### K-Fold cross validation
ํ์ต์ฉ dataset์์ train data example์ 3192๊ฐ, valid data example์ 240๊ฐ ๊ฐ๋์ผ๋ก ๊ตฌ์ฑ๋์ด ์์๋๋ฐ, ์ด 4100๊ฐ ๊ฐ๋์ example ์ค 5%๋ฅผ ์กฐ๊ธ ๋๋ 240๊ฐ๋ง์ผ๋ก ํ์ต์ํฌ ์ ๋๋ฌด ์ ์ ์์ valid set ๊ธฐ์ค์ผ๋ก loss๋ฅผ ๊ณ์ฐํ๊ฒ ๋ฉ๋๋ค. ์ด ๋๋ฌธ์ ์ ๋ต ๋ถํฌ๊ฐ ํธํฅ๋์ด valid set์ overfitting๋ ๋ชจ๋ธ์ ๋ง๋ค๊ฒ ๋์์ ๊ฐ๋ฅ์ฑ์ด ์๋ค๊ณ ํ๋จํ์ต๋๋ค. ๋ฐ๋ผ์ **==K-Fold cross validation==์ ํตํ์ฌ ๋ชจ๋ธ์ overfitting์ ๊ฒ์ฆ**ํ๊ณ ์ ํ์ต๋๋ค.
#### Bagging
๋ํ, K-fold๋ก ํ์ตํ ๋ชจ๋ธ๋ค์ ๋์ผํ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ง๊ณ ์์ผ๋ฉด์ ํ์ต๋ฐ์ดํฐ์ ์ผ๋ถ๋ง ๋ฐ๊พผ ๋ชจ๋ธ๋ค์
๋๋ค. ์ด๋ฌํ **๋ชจ๋ธ๋ค์ ์ถ์ ์น๋ฅผ ํ๊ท ๋ด๋ ==Bagging==์ ์ํํ๋ฉด ๋ชจ๋ธ์ variance๋ฅผ ์ค์ฌ overfitting์ ํผํ ์ ์์๊ฒ์ด๋ผ๊ณ ํ๋จ**ํ์ต๋๋ค. Bagging์ผ๋ก ์ฌ์ฉํ๋ ๊ฐ ๋ชจ๋ธ์ ํ์ต์ ๋๋ถ๋ถ ์ค๋ณต๋ ๋ฐ์ดํฐ์ง๋ง, validation set๊ณผ ์ผ๋ถ train set์ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ์ด์ ๋ฐ๋ผ ๊ฐ ๋ชจ๋ธ์ ๊ฐ์ ์กฐ๊ธ์ฉ ๋ค๋ฅธ ์์ธก์ ์ํํ๊ฒ ๋๊ณ , ์ด๋ค์ ํฉ์นจ์ผ๋ก์จ ํน์ data set์ ์ํฅ๋ ฅ์ ๋ณด์ ํด์ค ์ ์์ต๋๋ค.
top-k๊ฐ์ context๋ ๊ฐ MRC ๋ชจ๋ธ๋ค์ ๊ฑฐ์น๋ฉฐ ํ ํฐ๋ณ start logit๊ณผ end logit์ผ๋ก ๋ณํ๋ฉ๋๋ค. **ํ๊ฐ์ context์ ๋ํด k๊ฐ์ ๋ชจ๋ธ์ด ์ถ์ ํ ๊ฐ start logit๊ณผ end logit์ ํ๊ท ๋ด์ด์, ์ด๋ฅผ ๋ง์น ํ๋์ ๋ชจ๋ธ์ด predictionํ ๊ฒ์ฒ๋ผ ํ์ฒ๋ฆฌ๋ก ๋๊ฒจ์ฃผ๋๋ก ํ์์ต๋๋ค**.์ด ๋ ์๊ฐ๊ด๊ณ์ k๋ 5๋ก ์ค์ ํ์์ต๋๋ค. ๋ฐ๋ผ์ validation set์ 240๊ฐ -> 898๊ฐ๋ก ๋ํญ ๋์ด๋ฌ์ต๋๋ค.
์์ฌ์ด ์ ์ ์ฝ๋๊ฐ ๋๋ฌด ๋ฆ๊ฒ ์์ฑ๋์ด bagging์ ์ฑ๋ฅ ๊ฒฐ๊ณผ๋ฅผ LB ์ค์ฝ์ด์์์ ํ์ธํด๋ณด์ง ๋ชปํ๋ค๋ ๊ฒ์
๋๋ค. k๊ฐ์ ๋ชจ๋ธ์ ๊ฐ๊ฐ ํ์ต์์ผ์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด ํ์ต ์๊ฐ(์ฝ 30๋ถ)์ k๋ฐฐ๊ฐ ๊ฑธ๋ ค์, ์ ์ถ ์๊ฐ์ด ์ง๋ ํ์์ผ ํ์ต์ด ์ข
๋ฃ๋์ด prediction์ ๋์ถํด๋ผ ์ ์์์ต๋๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ , 5๊ฐ์ fold ๋ชจ๋ธ ์ค 2๊ฐ์ checkpoint๋ฅผ ๊ธฐ์กด ๋ชจ๋ธ์ ensemble์ ์ถ๊ฐํ์์๋ **๊ฐ๊ฐ LB์ค์ฝ์ด ๊ธฐ์ค์ผ๋ก 1~1.5%์ฉ ์ฑ๋ฅ์ด ์ฌ๋ผ**, overfitting์ ํผํ๊ธฐ ์ํ ์ ์๋ฏธํ ์ ๋ต์ด์๋ค๊ณ ์๊ฐํฉ๋๋ค.
### :cyclone: Soft Voting
**Reader** ๋ชจ๋ธ์ ํ์ต์์ **CrossEntropy**๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฆ, **Category๋ถํฌ**๋ฅผ ๊ฐ์ ํ์ฌ ๋ฌธ์ ๋ฅผ ํธ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
**Category**๋ถํฌ๋ผ๋ฉด ๋น์ฐํ๊ฒ **Soft Voting**์ ํ ์ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐ์ ํ์๊ณ ์๊ฐ์์ด ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์ ๊ธ๋ฐฉ **๋ ๊ฐ์ ๋ฌธ์ ์ ์ง๋ฉดํ์ต๋๋ค.**
**๋ฌธ์ 1:** ํ์ต๊ณผ ์ถ๋ก ์ **์๋ฏธ์๋ Token์ ๊ฐ์**๊ฐ ๋ค๋ฅด๋ค.

ํ์ต ํ ๋๋ **์ ์ฒด Logits์ SoftMax๋ฅผ ์์ด ํ ์ ๋ต Index์ CrossEntropy๋ฅผ ํ์ฌ Loss๊ฐ์ ๊ณ์ฐ**ํ๋ฉด ๋ฉ๋๋ค.
์ถ๋ก ํ ๋๋ **์ ์ฒด Logits์์ ์๋ฏธ์๋ Logit๋ง ์ฌ๋ฌ ๊ฐ ๋ฝ์ต๋๋ค.** ์ฌ๊ธฐ์ ๋ฐ์ํ๋ **๋ฌธ์ ์ ์ ๋ชจ๋ธ๋ง๋ค ์๋ฏธ์๋ Logit์ ๊ฐ์**๊ฐ ๋ค๋ฆ
๋๋ค.
Soft Voting์ ์ํด์ ๊ฐ ๋ชจ๋ธ์ **Logit๊ฐ์ ๋ํ๊ฑฐ๋ ํ๋ฅ ๊ฐ์ ๋ํด์ฃผ์ด์ผ** ํ์ง๋ง **Logit์ ๊ฐ์๊ฐ ๊ฐ๊ฐ ๋ฌ๋ผ์ ํ๋ฅ ๊ฐ์ ๋ํด์ฃผ๋ ๊ฒ์ ์ฌ์ฉํ ์ ์์์ต๋๋ค.**
> SoftMax์ฌ์ฉ ์ ํ ํฐ ๊ฐ์์ ๋ฐ๋ผ ํ๋ฅ ๋ถํฌ๊ฐ ํ ๊ฐ๋ฅ์ฑ์ด ๋๊ธฐ ๋๋ฌธ์
๋๋ค.

Logit ์ฌ์ฉ์ ์ ์ํ ์ ์ **Logit์ ๋ถํฌ๋ํ ๋ชจ๋ธ๋ง๋ค ๋ค๋ฅด๋ค**๋ ๊ฒ์
๋๋ค. ๊ทธ๋์ ๋ชจ๋ธ๋ง๋ค Logit ๋ถํฌ๋ฅผ ๋ง์ถฐ์ฃผ๊ธฐ ์ํด์ ๋ชจ๋ธ ์ ์ฒด Logit์ ๋์์ผ๋ก **Standardization**๋ฅผ ํ์์ต๋๋ค.
**๋ฌธ์ 2:** Tokenizer๋ง๋ค **๋ค๋ฅธ Token**์ ์์ฑํ๋ค.
Tokenizer๋ง๋ค ๋ค๋ฅธ ํ ํฐ์ ์์ฑํ๊ธฐ ๋๋ฌธ์ ํ ํฐ ๋จ์๋ก **Soft Voting**์ ์งํํ ์ ์์์ต๋๋ค.
> ๋ค๊ตญ์ด Bert Tokenizer : "[ํ, ##์์]",
> Koelectra Tokenizer : "[ํ์]"

๊ทธ๋์ **๋ง์ง๋ง ํ์ฒ๋ฆฌ ๋จ๊ณ์ธ Offset ๊ธฐ์ค**์ผ๋ก Logit๊ฐ์ ๋ํจ์ผ๋ก์จ **Soft Voting์ ์ฌ์ฉํ์์ต๋๋ค.**
> Offset์ ๊ธ์๊ฐ ๋ฌธ์์ ์ด๋ ์์น์ ์๋ ๊ฒ์ ๋ํ๋
๋๋ค. ์ฆ, Tokenizer์ ์๊ด์์ด Soft Voting์ ์งํํ ์ ์์ต๋๋ค.
#### :pushpin: Soft Voting Use Offset
Offset์ ์ฌ์ฉํ์ฌ Soft Voting์ ์งํํ๋ Ensemble ๋ฐฉ๋ฒ์
๋๋ค.
```python
def update_offsets(start_scores, end_scores, logits):
for logit in logits:
start_scores[logit["offsets"][0]] += logit["start_logit"]
end_scores[logit["offsets"][1]] += logit["end_logit"]
```

์ ๋ต์ ์์ธกํ ๋๋ Start Logit์ด ๊ฐ์ฅ ํฐ ๊ฐ์ ๊ฐ์ ธ์ค๊ณ ๊ทธ ๋ค์ ๊ฐ๋ฅํ ๊ฐ๋ค ์ค์์ End Logit์ด ๊ฐ์ฅ ํฐ ๊ฐ์ ์ฌ์ฉํฉ๋๋ค.
Soft Offset ์ถ๋ก ๊ฒฐ๊ณผ๋ "**๋ํต๋ น์ธ ๋นํฌ๋ฆ ๋ฏธํด๋ผ์ค**"์
๋๋ค.
#### :pushpin: Soft Voting Use Span
Start Offset๊ณผ End Offset์ฌ์ด์ Span ๊ฐ์ ์ฌ์ฉํ์ฌ Soft Voting์ ์งํํ๋ Ensemble ๋ฐฉ๋ฒ์
๋๋ค. Span๊ฐ์ Start logit๊ณผ End logit์ ํฉ์
๋๋ค.
```python
def update_spans(span_scores, logits):
for logit in logits:
span_scores[logit["offsets"][0] : logit["offsets"][1]] += logit["start_logit"] + logit["end_logit"] # broadcast
```

์ ๋ต์ ์์ธกํ ๋๋ Logit๊ฐ์ ๋ค ๋ํ ํ **75% ์ด์์ ํด๋นํ๋ Logit๊ฐ**๋ง ์ฌ์ฉํ์ฌ ์ ๋ต์ ์์ธกํฉ๋๋ค.
Soft Span์ ์ถ๋ก ๊ฒฐ๊ณผ๋ "**๋นํฌ๋ฆ ๋ฏธํด๋ผ์ค**"(์ค์ ์ ๋ต)์
๋๋ค.
Span๊ฐ์ ๊ฒฝ์ฐ ์ฑ๋ฅ ํฅ์์ ์ฃผ์ํ๋ค๊ณ ์๊ฐ ํ์ง๋ง ๊ตฌํ ๋ฏธ๋น๋ก ํฐ ์ฑ๋ฅ ํฅ์์ ์ป์ง ๋ชปํ์ต๋๋ค.
> 75% ๊ธฐ์ค์ผ๋ก ์ ๋ต์ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ์ด์์น ๊ฐ์ด ์์๊ฒฝ์ฐ ์ ์๋ํ์ง ์์์ต๋๋ค. ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ๊ณ ๋ คํด์ผ ํ์ผ๋ ์๊ฐ์ด ๋ฆ์ด ๋ ๊ณ ๋ คํ์ง ๋ชปํ์ต๋๋ค :cry:
### :cyclone: Hard Voting
==Hard voting==์ ๋ํ ๋ง์ง๋ง๋ , **์ฝ 10% ์ด์์ ์ฑ๋ฅ ํฅ์์ ์ด๋์ด๋ธ ๋ฐฉ๋ฒ**์
๋๋ค.
๋ถ์์ ์ธ ๊ฒ์ ์ ์ธํ๊ณ , ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ๋ ์๋์ ๊ฐ์ต๋๋ค.
๋จผ์ save๋ prediction json ํ์ผ๋ค์ ๋ถ๋ฌ์ต๋๋ค.
```python
files = ['output_1.json', 'output_2.json', ...] # ๋ถ๋ฌ์ฌ ํ์ผ๋ค ๊ฒฝ๋ก
json_files = []
for file in files:
with open(f"./{file}") as f:
json_file = json.load(f)
json_files.append(json_file)
```
๋ถ๋ฌ์จ ํ์ผ๋ค์ ๋์์ผ๋ก ์๋์ ๊ฐ์ด hard voting์ ์งํํฉ๋๋ค.
```python
result = dict()
for key in json_files[0].keys():
polls = defaultdict(int)
for json_file in json_files:
predict = json_file[key]
polls[predict] += 1
sorted_polls = sorted(voting.items(), key=lambda x: x[1], reverse=True)
voted = sorted_polls[0][0]
result[key] = voted
```
์์ ๊ฐ์ด ==์์ฐ์ด ๊ทธ๋๋ก๋ฅผ voting ๋์์ผ๋ก ํ์ฉ==ํ์์ต๋๋ค. ๋ฌผ๋ก **์๊ธฐ ์ฝ๋๋ ๋ง์ด ์ถ์ฝ๋ ๋ฒ์ **์ด๊ณ ์ค์ ํ์ฉํ ์ฝ๋์๋ ๊ฐ์ ์์ ํฌํ๋ฅผ ๋ฐ์ ์ ๋ต์ ๋ํ ์ฌ๋ฌ ํ์ฒ๋ฆฌ, ์กฐ์ฌ/๋ถ์ฌ ๋ฑ์ ๋ํ ํํ์ ํ์ฒ๋ฆฌ๋ ํฌํจ๋์์ต๋๋ค.
Hard voting์ ํ๋ฉด์ ๊ฐ์ฅ ๋๋ผ์ ๋ ์ ์ ์๋ฌด๋ฆฌ ์ ์กฐํ LB score๋ฅผ ๋ณด์ธ ์์ธก ํ์ผ๋ **์ถ๊ฐํ๋ฉด ์ถ๊ฐํ ์๋ก ์ฑ๋ฅ์ด ์ฌ๋๋ค๋ ์ **์
๋๋ค. ์์ K-Fold ํํธ์์๋ ์ธ๊ธํ์์ง๋ง ์ด ์ฌ์ค์ ๋๋ฌด ๋ค๋ฆ๊ฒ ํ์ธํ์ฌ ์ด์ ๋ํ ์ถฉ๋ถํ ์คํ์ ์งํํด๋ณด์ง ๋ชปํ์ง๋ง ์ง๋๊ณ ์๊ฐํด๋ณด๋ ๊ทธ๋ ๊ฒ ๋ ์ ๋ฐ์ ์์๋ ๊ทผ๊ฑฐ๊ฐ ์กด์ฌํ์ต๋๋ค.
๊ฐ์ฅ ํฐ ๊ทผ๊ฑฐ๋ ์๋ก ๋ค๋ฅธ ๊ตฌ์กฐ์ ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ ๋ถํฌ์์ ํ์ต๋ ๋ชจ๋ธ๋ค์ด ๊ฐ์ ์ด๋์ ๋ ๊ทธ๋ด๋ฏํ ๋ต์ ๋ด๋๊ณ ์์๋ค๋ ์ ์
๋๋ค. ํนํ **์ฌ๋ฌ ๋ชจ๋ธ๋ค์ ์ฑ๋ฅ์ด ์์ดํ๋ ์ด์ ๊ฐ, ๋ชจ๋ ๋น์ทํ ์์ธก์ ๋ด๋์ผ๋ฉด์ ํ ๋๊ฐ ๋ฌธ์ ์ ์์ธก์ด ๋ฌ๋๊ธฐ ๋๋ฌธ์ด ์๋๋ผ๋ ์ **์ด ๊ฐ์ฅ ์ค์ํฉ๋๋ค. **๊ฐ ๋ชจ๋ธ๋ค์ ๊ฐ์๊ฐ ์ ๋งํ๋ ๋ฌธ์ ๊ฐ ์์๊ณ ์ ๋งํ์ง ๋ชปํ๋ ๋ฌธ์ ๋ ์์์ต๋๋ค.** ๋ค๋ง ๊ทธ ์ค์์๋ ์ข ๋ ๋งํ๊ฑฐ๋ ์ข ๋ ๋งํ๋ ๋ชจ๋ธ์ด ์์์ ๋ฟ์
๋๋ค.
๋ฐ๋ผ์ **๋ง์ ์์ ๋ชจ๋ธ๋ค์ ์์๋ธํ๋ฉด ๋ชจ๋ธ๋ค์ด ์๋ก ๋งํ์ง ๋ชปํ๋ ๋ฌธ์ ๋ฅผ ์ํธ๋ณด์ํ๊ณ ์ด๋์ ๋ ์ ๋ต์ ๊ฐ๊น์ด ์์ธก๋ง์ ๋ด๋์ ์ ์๊ฒ ๋๋ ๊ฒ**์
๋๋ค. ์ ํฌ๋ ์ต์ข
์ ์ผ๋ก 10๊ฐ ๊ฐ๋์ prediction ํ์ผ๋ค์ ์์๋ธํ๋๋ฐ, ํ ๊ฐ๋ฅผ ์ถ๊ฐํ ๋๋ง๋ค ์ต์ 1% ์ด์์ ์ฑ๋ฅ ํฅ์์ด ์์์ต๋๋ค.
์ง๊ธ๊น์ง๋ ์์๋ธ์ด ๋ฐ๋์ ๋น์ทํ ์ฑ๋ฅ์ ๋ชจ๋ธ๋ค์ ๊ฒฐํฉํ์ฌ์ผ๋ง ๋ณด๋ค ๋์ ์ฑ๋ฅ์ ์ป์ ์ ์๋ค๊ณ ์๊ฐํ์๋๋ฐ, ์ด๋ฒ ๋ํ๋ฅผ ๊ฑฐ์น๋ฉฐ ์ด๋ฌํ ๊ณ ์ ๊ด๋
์ ๊นจ๋ถ์ ์ ์์์ต๋๋ค. **์๋ก ๋ค๋ฅธ ๋ ๋ชจ๋ธ์ ์์ธก๊ฐ์ด ์์ ๋ค๋ฅด๋ค๋ณด๋ score์์ ๋ค์ ์ฐจ์ด๊ฐ ๋๋๋ผ๋ ์์๋ธ์์ ๊ธ์ ์ ์ธ ํจ๊ณผ๋ฅผ ์ป์ ์ ์์์ต๋๋ค.**
10๊ฐ์ ๋ชจ๋ธ์ ์์๋ธํ์ฌ ์ต์ข
์ ์ถํ ์ด์ ๊ฐ, ์ฌ์ค์ ๋ ์ถ๊ฐํ์๋ ์ฑ๋ฅ์ด ์ ์กฐํด์๊ฐ ์๋๋ผ ์๊ฐ์ด ์์ด ๋ ์ด์์ ์์ธก ํ์ผ์ ๋ง๋ค์ด๋ด์ง ๋ชปํ๋ค๋ ์ ์ ์ข ์์ฌ์ด ๋ถ๋ถ์
๋๋ค. ๋ค๋ง ์ด๋ฐํ ์๊ฐ ์์์ ๊ท์คํ ์ฌ์ค๋ค์ ๊นจ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๋ฒ ๋ํ์์์ hard voting์ ๊ทธ ์์ฒด๋ก ๊ฐ์น๊ฐ ์์๋ ๋ฐฉ๋ฒ์ด์์ต๋๋ค.
---
## :deciduous_tree: ํ๊ณ
### :deciduous_tree: ํ ํ๊ณ
#### ํ ์์ - ==**9ํ** ์ค **4๋ฑ**==
#### LB SCORE
- **EM : 60.83%**
- **F1 : 71.85%**
### :deciduous_tree: ๊ฐ์ธ ํ๊ณ
#### ์ด์์ฐ(Human Reader)
์ง๋ Stage๋ฅผ ๋ง๋ฌด๋ฆฌํ๋ฉด์, ์ด๋ฒ Stage ๋ ํ๊ณ ์ถ์ ์ผ๋ค์ ์ ๋ฆฌํ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฒ Stage๋ฅผ ์์ํ๋ฉฐ ์๊ธฐ์๊ฐ๋ฅผ ์์ฑํ๋ฉด์, Stage 3์ ์ฑ๊ณต์ด๋ผ๊ณ ํ ์ ์๋ ๋ถ๋ถ๋ค์ ์๊ฐํด ๋ณด์์ต๋๋ค. ์ด๋ฅผ ๋ฐํ์ผ๋ก Stage 3์์ ๋ฌ์ฑํ๊ณ ์ถ์๋ ํญ๋ชฉ๊ณผ ๊ฐ ํญ๋ชฉ์ ๋ํ ๊ฐ์ธ์ ์ธ ์ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- **~~๋ฆฌ๋๋ณด๋ 50% ์ด์~~ 100%**
๋ฆฌ๋๋ณด๋ 50% ์ด์์ด ๋์ง ์์ผ๋ฉด ์ข ์ฌํ ๊ฒ ๊ฐ์์ ๋ชฉํ๋ก ์ ์ด ๋์๋ค๊ฐ, ๊ทธ๋๋ ์ด๋ฒ์๋ LB์ ์ข ๋ ์ ๊ฒฝ์ฐ๊ณ ์ถ์ด์ ์ฐ์ฐ ์ง์ ๋์์๋๋ฐ ๋งํ ์์๋ธ ๋์ ๋ฌ์ฑํ ์ ์์์ต๋๋ค.
- **Git์ผ๋ก ํํ์ ์ ํด๋ณด๊ธฐ 100%**
์ด๋ฒ์ ํนํ Git์ ๋ง์ด ํ์ฉํด ๋ณธ ๊ฒฝํ์ด ์ข์๊ณ , ํนํ ๊ฐ์ธ branch์์ ์์
ํ ๋ค Pull Request๋ฅผ ๋ณด๋ด์ ํผ์ด ๋ถ๋ค์ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ๊ณ ๋ฆฌ๋ทฐ๋ฅผ ํ๋ ๊ฒฝํ์ด ์ข์์ต๋๋ค. Git์ ์ฅ์ ์ ๋ง์ด ๋ฐฐ์ฐ๊ณ ํ์ฉํ ์ ์์๋ stage์๋ค๊ณ ์๊ฐํฉ๋๋ค.
- **ํํ ๊ณผ์ ์ ์ ์ ๋ฆฌํด์ ๋ธ๋ก๊ทธ๋ ๊นํ๋ธ์ ๊ณต์ ํ ์ ์์ผ๋ฉด ์ข๊ฒ ์ 100%**
ํํ ๊ณผ์ ๋ถํฐ ๋ชจ๋ ํ์๋ก์ด mdํ์ผ๋ก ์ ๋ฆฌ๋์ด ๊นํ๋ธ์ ๋ฐ๋ก๋ฐ๋ก ์ฌ๋ผ๊ฐ๊ณ , ์ค๊ฐ์๋ zenhub์ ํ์ฉํ์ฌ ๊ณผ์ ์ ํ ๋์ ๋ณผ ์ ์์์ผ๋ฉฐ, ํํ์ด ๋๋ ํ์๋ ๋ฉ์ง [wiki](https://github.com/VumBleBot/odqa_baseline_code/wiki)๊น์ง ์์ฑ๋์ด ๋ฌธ์ํ์ ์์ด์๋ ๋งค์ฐ ๋ง์กฑ์ค๋ฌ์ ๋ stage์์ต๋๋ค. ํ์ ์ฌ๋ฌ๋ถ ๋๋ถ์ mdํ์ผ ์ด๋ป๊ฒ ์์ฑํ๋์ง ๋ง์ด ๋ฐฐ์ด ๊ฒ ๊ฐ์ต๋๋ค (์ด ์ ๊น์ง๋ ์ด๋ป๊ฒํ๋์ง ํ๋๋ ๋ชฐ๋์ด์..) ์ด wrap-up report๊น์ง ๋ค๋ค ๋๋ฌด ์ด์ฌํ ์์ฑํด์ฃผ๊ณ ๊ณ์
์ ๋๋ฌด ๊ฐ์ฌํฉ๋๋ค.. ๋ค๋ง ์ค์ค๋ก ๋ฌธ์ํ์ ์์ด์ ๊ฒ์๋ ๋ ๋ถ๋ถ๋ค์ด ์ ๊ฐ์ ์ด ๋์ง ์์๊ณ , ํ์๋ค๊ป์ ๋์์ฃผ์ ๋๋ถ์ 100%๋ฅผ ๋ฌ์ฑํ ์ ์์๋ค๊ณ ์๊ฐํด์ ๋ค์ stage์์๋ ์ข ๋ ์ฑ์คํ๊ฒ ๋ฌธ์ํ์ ๋ฐฉ์ ์ ๋๊ณ ์ ํฉ๋๋ค.
- **์คํ์ ๋ํ ํํํ ๊ฐ์ค๊ณผ ๊ฒฐ๊ณผ ๋ถ์ํด๋ณด๊ธฐ 80%**
์คํ ๊ด๋ จํด์๋, ํ์๋ค๊ณผ ํญ์ ํ ์ํ๋ฉฐ ์คํ์ ์งํํ๊ธฐ ๋๋ฌธ์ '๊ทธ๋ฅ' ๊ตฌํํ ํํธ๊ฐ ์์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋๋ฆ์ ์ด์ ๋ฅผ ๊ฐ์ง๊ณ ์คํ์ ์งํํ์ผ๋ฉฐ ๊ฒฐ๊ณผ ๋ํ ์ดํดํ๋ ค๋ ๋
ธ๋ ฅ์ ๋ค์์ผ๋ฏ๋ก 80%๋ฅผ ์ฃผ์์ต๋๋ค.
- **์๋ก์ด ๋ชจ๋ธ ๊ตฌ์ถ ์๋ํด๋ณด๊ธฐ 60%**
์๋ก์ด ๋ชจ๋ธ ๊ตฌ์ถ ์๋๋ฅผ ์ํ ๋
ธ๋ ฅ์๋ ๋
ผ๋ฌธ์ ์ฝ๊ณ , ์ดํดํ๊ณ , ๊ตฌํํ๋ ๊ฒ์ด ์๋ค๊ณ ์๊ฐํ๋๋ฐ, ๋
ผ๋ฌธ์ ์ฝ๊ณ ์ดํดํด์ ํ์๋ค์๊ฒ ์ ๋ฌํ๋ ค๋ ๋
ธ๋ ฅ์ ํ๊ณ , ๋ฅ๋ฌ๋ ๋ชจ๋ธ์ ์๋์ง๋ง Sparse retriever๋ฅผ ์์์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํํ๋ค๋ ์ ์์ 60%๋ฅผ ์ฃผ์์ต๋๋ค. ํ์ง๋ง Deep Learning ๋ชจ๋ธ์ ์ง์ ์์ ํด๋ณด์ง ๋ชปํ๋ค๋ ์์ฌ์์ด ๋จ๊ณ , ๋ค์ Stage์์ ์ด ๋ถ๋ถ์ ๋ณด์ํด๋ณด๊ณ ์ถ์ต๋๋ค.
- **์์ฐ์ด์ ๋ํ ๋ ๊น์ ์ดํด(ํ ํฌ๋์ด์ง ๋ฑ) 40%**
wiki ์ค๋ณต EDA๊ณผ ์์ฐ์ด ํ์ฒ๋ฆฌ๋ฅผ ์งํํ๋ฉด์ ์์ฐ์ด์ ๋ํ ์ดํด๊ฐ ์ฝ๊ฐ์ ๋์์ก์ผ๋, ํ ํฐ ๋จ์๋ฅผ ์ง์ ๋ณด์ง๋ ์์์ต๋๋ค. ํ์ง๋ง ํผ์ด์ธ์
์์ ํ ํฌ๋์ด์ ๋ ๋ฆฌ๋ทฐํด์ฃผ์๊ณ ์ฌ๋ฌ ๋ฐ์ดํฐ์
์ ๋ํ EDA๋ฅผ ์งํํด์ฃผ์
์ ๋๋ถ์ ์ด๋ ์ ๋ ์ดํด์ ์์ค์ ๋์์ก๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ค์์ ๋ ์์ฐ์ด์ ๊ด๋ จ๋ task์ ๋์ ํ ๊ธฐํ๊ฐ ์๋ค๋ฉด, ํ๊ตญ์ด์ ๋ํ ์ดํด๋ฅผ ๋ฐํ์ผ๋ก ์ด๊ฒ ์ ๊ฒ ์คํ์ ํด๋ณผ ์ ์์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค.
- **WandB์ ๋ค์ํ ๊ธฐ๋ฅ์ ํ์ฉํด๋ณด๊ธฐ 30%**
WandB์ ๊ธฐ๋ฅ๋ค์ ๋ ํ์ฉํด๋ณด๊ณ ์ถ์๋๋ฐ, ์ฃผ๋ก retriever๋ฅผ ๊ตฌํํ๋ค๋ณด๋ ํด๋น ๊ธฐ๋ฅ์ ๋ง์ด ํ์ฉํด๋ณด์ง ๋ชปํด ์์ฝ์ต๋๋ค. ๋ค์ stage ๋๋ ์ข ๋ ์ ๊ทน์ ์ผ๋ก WandB๋ฅผ ํ์ฉํ๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
- **๊ธฐ๊ณ๋
ํด๋ฅผ ํ์ฉํ, AI๋ฅผ ๊ฒฝํํด๋ณผ ์ ์๋ ๋ญ๊ฐ๋ฅผ ์น์๋ฒ์ ์ฌ๋ ค๋ณด๋ฉด ์ข๊ฒ ์ 0%**
๊ตฌํํ ๋ชจ๋ธ์ ์๋น์ค๋ก๊น์ง ์๋ฒ์ ์ฌ๋ฆฌ๊ณ ์ถ๋ค๋ ์๊ฐ์ด ์์๋๋ฐ, ์์ฝ๊ฒ๋ ๋ฌ์ฑํ์ง๋ ๋ชปํ์ง๋ง ๊ทธ ์ธ์ ๋ง์ ๊ฒ๋ค์ด ์ฐ์ ์์๋ก ์คํ๋์๊ธฐ ๋๋ฌธ์ ๊ด์ฐฎ๋ค๊ณ ์๊ฐํ๊ณ , ๋ค์ DKT์์ ์ถฉ๋ถํ ๋ฌ์ฑํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ค์ Stage ๋ ํ๊ณ ์ถ์ ๊ฒ๋ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- WandB ํ์ฉํด์ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ ์ฐพ๋ ๊ฒ ์๋ํ (Stage 1 ๋ ์ ์ฉํ๋ ๊ฒ)
- ๋ ๋์ ์คํ ๊ด๋ฆฌ (naming convention ๋ฑ)
- ์๋ก์ด ์์ด๋์ด ๋ฐํ์ผ๋ก ๋ฅ๋ฌ๋ ๋ชจ๋ธ '์ง์ ' ๊ณ ์น๊ฑฐ๋ ๊ตฌํํด๋ณด๊ธฐ
- ๊ฐ์ค์ด ์๋ ์คํ, ๊ฒฐ๊ณผ ๋ถ์ ๋ฐ ๋ฌธ์ํ(!!!)
- ์น์๋ฒ์ ๊ฒฐ๊ณผ๋ฌผ ๋ญ๊ฐ๋ฅผ ์ฌ๋ ค๋ณด๋ฉด ์ข๊ฒ ์
- ํํ ๋ ์ ํด๋ณด๊ธฐ (์จ๋ผ์ธ ์ปค๋ฎค๋์ผ์ด์
์ ํ๊ณ ๊ทน๋ณต ๊ณ ๋ฏผ)
> ์์ฐ๋, ์ ๊ฐ ์ด์ ์๋ ๋ง์ ๋๋ ธ์ง๋ง ์์ฐ๋ ์ฝ๋ ๋ณด๋ฉด์ ์ ๋ง ๋ง์ด ๊ฐํํ๊ณ ๋๋ฌ์ต๋๋ค. ์๋ฃ๊ตฌ์กฐ, ์๊ณ ๋ฆฌ์ฆ๊ธฐ๋ฐ ์ง์ ์์ด ๊ทธ๋ ๊ฒ ๋
ผ๋ฌธ์ ๊ตฌํํ ์ ์๋ ๊ฒ์ ์ ๋ง ์ฌ๋ฅ์
๋๋ค. ์ ๊ฐ ํํ์ ์ ๋ชปํด์ ์ด ๊ฐํ์ ๋งํ์ง๋ ๋ชปํ์ง๋ง ์ ๋ง ๋๋์ด์. ํนํ ์ ๊ฐ ๊ตฌํํด๋์ ์ถ์ํ๋ฅผ ์์ ์์ฌ๋ก ์ฐ๋ ๋ชจ์ต(์ ๊ฐ ์ฝ๋๋ฅผ ์ด์ฌํ ๋ณด๊ฑฐ๋ ์! ใ
ใ
)์ ์ด๋ฏธ ํด๋์ค, ๊ฐ์ฒด ์งํฅ์ ์ ์๊ณ ์๋ ์ฌ๋์ฒ๋ผ ๋๊ปด์ก์ต๋๋ค. ์์ฐ๋์ ํ์ ์ ๋ง ๋์์ด ๋๋ ์ฌ๋์
๋๋ค. ๋์ค์ ๋ ๋ง์ด ๋ฒ๋ฉด ์ฌ์ด ํ์ ์ฅ๋๊ฐ ํ๋ ์ฌ์ ์ ๋ฌผํ๋๋ก ํ๊ฒ ์ต๋๋ค! ๋์ค์ DKT ํ๋ก์ ํธ ๊ฐ์ดํ๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค! (์ ํํ
) ์์ฐ๋ ์ด๋ฒ ์คํ
์ด์ง ๋ฌด๋ํ๋ ๊ณ ์ํ์
จ์ต๋๋ค!! [name=๊ฑด๋ชจ][color=#79f96d]
> ์์ฐ๋ ์๋ฌด ์๊ฐ์์ด ํ์ ์๊ตฌํ๊ณ ์๋ ์ ์๊ฒ ์ฒ์์ผ๋ก DM ๋ณด๋ด์ฃผ์๊ณ ๋๋ถ์ ์ข์ ํ์๋ค ๋ง์ด ๋ง๋์ ์ ๋ง ๋๋ฌด๋๋ฌด ๊ฐ์ฌํ์ต๋๋ค! ๊ทธ๋ ์ ๋ง ํ์ค๊ธฐ ๋น์ด์์ด์ ๋๋ค ์ธ์
์ด๋ป๊ฒ ํ ์ง ๊ณ ๋ฏผํ๊ณ ์์๋๋ฐ ใ
ใ
ใ
ใ
ใ
๋ ์ดํ์๋ ํ์์ ์์ฐ๋์ด ๋ด์์์ด ๋ฌต๋ฌตํ๊ฒ ํด์ฃผ์ ๊ฒ๋ค์ด ๋๋ฌด ๋ง์์ด์ ๊ฐ์ฌํ์ต๋๋ค. ํญ์ ๋๊ผ์ง๋ง ๋ฐ์์ ๋ฐ๋ ์กฐ์ฉํ ๋ชจ๋ ์ผ๋ค์ ๋ค ์ํด์ฃผ์
์ ๋๋ฌด ์กด๊ฒฝ์ค๋ฌ์ ์ด์ ์ ๋ ๊ทธ๋ฐ๊ฑธ ๋ณด๋ฉด์ ๋ ์ด์ฌํ ํ๋ ค๊ณ ๋ง์ด ์๊ทน ๋ฐ์๋ ๊ฒ ๊ฐ์์ ์ง์ง๋ก.. ์ฐ๋ฆฌํ์ด ์ด๋ ๊ฒ ์ํด์ ์๊ธฐ์ ์ฒํด ๋๋ฌด ์์ฝ์ง๋งใ
ใ
ใ
์ง๊ธ์ ์ด ๊ฒฐ์๋ ฅ์ ์์ง ๋ง๊ณ ๋์ค์ ๊ฐ์ด ๋ค๋ฅธ ํ๋ก์ ํธ๋ ๊ผญ ํ์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค! ๊ทธ๋๋ ๊ฐ์ ์์ฌ์ด ์ ์์ด ์ง๊ธ ๋ณด๋ค ๋ ์ ํด๋ผ ์ ์์๊ฑฐ์์ ๐ ์ธํด๋ ๊ผญ ํจ๊ป ์ ํด๋ด๋ด
์๋คใ
ใ
ใ
ใ
ใ
์ธํด ๋ฉ์ดํธ ํ์ดํ
! [name=์ข
ํ][color=#1efbfb]
> ์์ฐ๋์ด ์ ํ์ ๋ฃ์ด์ฃผ์
์ ๋๋ฌด ๋คํ์
๋๋ค... ํ์ ๊ฐ์ฌํ๋ฉฐ ์ด๊ฒ ์ต๋๋ค... ์ฌ์ค ์ฒ์ ๋๋คํผ์ด์ธ์
์์ ๋ดค์๋๋ถํฐ ๊ฐ์ด ํํ๊ณ ์ถ๋ค๋ ์๊ฐ์ ํ์๋๋ฐ, ๊ฐ์ด ํํ๊ณ ๋๋ ๋ ๋ฐฐ๋ก ๋ ๋งค๋ ฅ์ ์ธ ํ์์ด์
จ์ต๋๋ค. ~~์ ์~~์์ฐ๋์ ๋ฅ์ํ ์ปค๋ฎค๋์ผ์ด์
๋๋ถ์ ์ ํฌํ TMI ์ธ์
์ด ํ๋ถํด์ ๋๋ฌด ์ฆ๊ฑฐ์ ์ต๋๋ค. ํํ๋ก์ ํธ ํ๋ฉด์ ์ด๋ ๊ฒ ์๋ก ์ด์ฌํ ํ๊ณ , ๋ถ์๊ธฐ ์ข์ ํ์์ ์ผํ๋๊ฒ ์ ๋ง ์ค๋๋ง์ด์๋๋ฐ, ๊ฑฐ๊ธฐ์ ์์ฐ๋ ๋ชซ์ด 8ํ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ competition ๋ด๋ด ๋
ผ๋ฌธ ๋ฆฌ๋ทฐํ์๊ณ ๊ณต์ ํ์๋ ๋ชจ์ต ๋ณด๊ณ ์์งํ ๋๋ฌด๋๋ฌด ๋ฉ์๊ณ ๋ถ๋ฌ์ ์ต๋๋ค. ์๋ ์๊ธฐ๊ฐ ๊ฐ์ง์ง ๋ชปํ๊ฑธ ๋ถ๋ฌ์ํ๊ฒ ๋๋ค๋๋ฐ, ์์ฐ๋์ ๋๋ฌด ๋ค๋ฐฉ๋ฉด์ผ๋ก ๋ฐ์ด๋ ์ธ์ฌ๊ฐ์์! ๋ค์ํ๋ ์์ฐ๋์ด๋ ๊ฐ์ดํ์ผ๋ฉด ๋ง์ด ๋ฐฐ์ฐ๊ณ ๋๋ฌด ์ข์์ํ
๋ฐ ์์ฝ์ต๋๋ค. ๊ผญ ๋ถ์บ ๋๋๋ ์ ํฌ ๋ค๋ค ์ฐ๋ฝํ๊ณ ์ง๋ด์!! [name=์ฑ์ต][color=#CDA096]
> ์์ฐ๋... ๋งค์ผ ๋
ผ๋ฌธ ๋ฆฌ๋ทฐํด์ฃผ์๊ณ , ์ ๋ฆฌํด์ฃผ์๊ณ , BM25๋ ๊ฑฐ์ ๋๊น์ง ์ฑ๋ฅ ์ฌ๋ ค์ฃผ์๊ณ ... ์ฃผ์ด์ง ์ผ์ด๋ผ๋ฉด ์ ๋ง ์๋ฒฝํ ์ํํ์๋ ๋ชจ์ต ๋ณด๋ฉด์ ์ง์ง ๋ฉ์๋ค๊ณ ์๊ฐํ์ต๋๋ค. ใ
ใ
ํผ์ด์ธ์
๋๋ ์ ๋ง ํ๋ฐํ ์๊ฒฌ ์ ์ํ์๊ณ ์ง์ ๊ณต์ ํ์๋ ๋ชจ์ต ๋ณด๋ฉด์ ๋๋จํ์๋ค๊ณ ํผ์ ๊ฐํํ๊ณ ์์์ต๋๋ค.. ๊ฐ์ ํ์ด์ด์ ๋๋ฌด ๋ ๋ ํ๊ณ ๊ฐ์ฌํ์ต๋๋ค. ใ
ใ
์์ฐ๋์ ์์์๋ฆฌ ๊ทธ๋ฆฌ์ธ ๊ฒ ๊ฐ์์... ์ฌ์ด์ ์์์๋ฆฌ๋์ ใ
ใ
<- ์ด๊ฑฐ ์ง์ง.์ต ์ ๊ฑฐ ๋๊ธ๊ธธ์ด ์ ๋ฐ๋ ค๋ฌ์ฃ ..?ใ
ใ
ใ
ใ
๊ทธ๋ฆฌ๊ณ ์ ๋ฒ์ ์ฐ์ฐ ๊ฐ์ด ์ฐ๊ณ ๊ฐ์๊ณ ์ ํ์ฃผ์ ๊ทธ ๋ฐ๋ปํจ.... ์์ง ๋ชปํ ๊ฑฐ์์ ์์ ใ
ใ
์ฐจ๊ฐ์ด ๋จธ๋ฆฌ์ ๋ฐ๋ปํ ๊ฐ์ด ๋ ๋ค ๊ฐ์ง๊ณ ๊ณ์ ์์ฐ๋... ์ ๋ง ๊ฐ์ฌํ์ต๋๋คใ
ใ
[name=์ง์][color=#C0FFFF]
#### ๊น์ฑ์ต(Robot)
์ ๋ฒ ์คํ
์ด์ง๋ฅผ ์งํํ๋ฉฐ ํ์ธ์ ์ฝ๋๋ฅผ ๋ฐ๋ผ์น๋ ๊ฒ ์๋๋ผ ์ ์ฝ๋๋ฅผ ์ง์ ์ง๋ ๊ฒ์ด ์ผ๋ง๋ ์ค์ํ ์ง ๊นจ๋ฌ์์ต๋๋ค. Stage 2์์๋ ๋งค์ผ๋งค์ผ์ daily mission๊ณผ ๊ฐ์๋ฅผ ๋ฐ๋ผ๊ฐ๊ธฐ์ ๊ธ๊ธํ๊ณ , ์ผ๋จ ์ํค๋๋๋ก ์ด์ฌํ ๋ฐ๋ผ์น๊ณ ๋๋ฉด ์ด๋ป๊ฒ๋ ๋๊ฒ ์ง๋ผ๋ ์๊ฐ์ด ์์์ต๋๋ค. ๊ฒฐ๊ตญ ์ ๋ฒ ๋ํ๋ฅผ ๋ง๋ฌด๋ฆฌํ ๋์ฏค ๊ฒฐ๊ตญ ์ด๋ฐ ๋ฐฉ์์ ์ฝ๋๊ฐ ๋น์ฅ ๋ชจ๋ธ ์ฑ๋ฅ์ ๋ผ ์ ์์ด๋, ์๊ฐํ๋ ํ์ ๊ธธ๋ฌ์ฃผ์ง ๋ชปํ๋ค๋๊ฒ์ ๋๊ผ์ต๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ด๋ฒ์ ํ ๋จ์๋ก ํ์
ํ ๋์๋ ์ต๋ํ ๋ง์ ์ฝ๋๋ฅผ ๋ฏ์ด๋ณด๊ณ ์ ์ฝ๋๋ก ๋ง๋ค์ด๋ณด๊ณ ์ถ์์ต๋๋ค. ๊ทธ๋ฌ๋ ค๋ฉด ํ๋ผ๋ฆฌ ์ํต์ด ์ ๋ง ์ ๋์ด์ผํ๊ณ , ๋ฌด์๋ณด๋ค ์ ์ ๋น์ทํ๊ฒ ์ฃผ์ด์ง ์ฝ๋๋ฅผ ๋ฐ๋ผ๊ฐ์ง ์์ผ๋ ค๋ ๋ถ๋ค์ด ๋ง์์ผ ํ์ต๋๋ค. ๊ทธ๋ฐ ์ ์์ ๋ฒ๋ธ๋ด์ ํ์ผ๋ก์ ๊ถํฉ์ด ์ ๋ง ์ ๋ง์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด๋ฒ ์คํ
์ด์ง์์ ๋ฐฐ์ด๊ฒ, ์ป์ด๊ฐ ๊ฒ์ ๋๋ถ๋ถ์ ํ์
์ด์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ฐ๋ฐ์ ์์ํ ์ดํ๋ก ์ฒ์์ผ๋ก PR์ ๋ ๋ ค๋ณด๊ณ , ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ๋ฐ์๋ณด๊ณ , ์งํ๋ก๊ทธ๋๋ฐ์ ํ์ต๋๋ค. ๊ฐ๋ ๋์ ํ ์ค๋ฅ๋ฅผ ์ ์์๋ ๋ ์ด๋ฉด zoom์์ ํ๋ฉด์ ๊ณต์ ํ๋ฉฐ ํ์๋ค๊ณผ ๊ฐ์ด ๋๋ฒ๊น
์ ํ๊ธฐ๋ ํ์ต๋๋ค. ๋๋ถ์ ํผ์์์ผ๋ฉด ํด๊ฒฐํ ์ ์๋ ๋ง์ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ ์ ์์์ต๋๋ค.
ํ์๋ผ๋ฆฌ ์ฒซ ์๊ฐ๋ฅผ ํ ๋, ๊ธด ํ์๋ฅผ ์ซ์ดํ๋ค๊ณ ํ์๋๋ฐ, ์ ํฌํ ํ์๋ ๋งค๋ฒ 2์๊ฐ ๊ฐ๊น์ด ํด๋ ์ ๋ง ์ฆ๊ฑฐ์ ์ต๋๋ค. TMI ์ธ์
๋ ์ฒ์์๋ ์ด์ํ์ง๋ง ๊ฐ๋ฉด ๊ฐ์๋ก ์๋ก ์ฐ์๋ํ๋๊ฒ ๋๋ฌด ๊ท์ฝ๊ณ ์ฌ๋ฏธ์์์ต๋๋ค. ๋๋ถ์ ๋จ์ํ ํผ์ด๋ก์๊ฐ ์๋๋ผ, ์ธ๊ฐ์ ์ผ๋ก ํ์๋ค์ ๋ ์์๊ฐ๊ณ ์ถ๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.
๋, ๊ฐ์ธ์ ์ผ๋ก๋ Stage 1๊ณผ 2๋ฅผ ๊ฑฐ์น๋ฉด์ ๊ณ์ AI๋ฅผ ๊ณต๋ถํ๋๊ฒ ๋ง๋, ๊ธธ์ ์๋ชป๋ ๊ฑด ์๋๊ฐ ํ๋ ๊น์ ๊ณ ๋ฏผ์ด ์์์ต๋๋ค. Stage 3๋์๋ ์ด๋ฐ์ ํ์์ ์ฝ๋๋ฅผ follow upํ๊ธฐ๋ ํ๋ ์ค์ค๋ก๋ฅผ ๋ณด๋ฉด์ ์๊ดด๊ฐ์ ๋น ์ง๋ ๋ ๋ ๋ง์์ง๋ง, ์ง๊ธ ๋์ด์ผ ๋ณด๊ณ ๋๋ ๊ทธ๋ฐ ์๊ฐ๋ค์ด ์์ด์ ์ข ๋ ๋ป๋ปํ๊ฒ ๋ชจ๋ฅด๋ ๊ฒ์ ๋ชจ๋ฅธ๋ค๊ณ ๋งํ๊ณ , ๋ฌผ์ ์์๊ฒ ๋์์ต๋๋ค. ๋๋ถ์ '์๋ฌด๊ฒ๋ ๋ชจ๋ฅด๋ ์ฌ๋'์์ '๋ญ ๋ชจ๋ฅด๋์ง ์๋ ์ฌ๋'์ผ๋ก ํ๋ฐ์ง ๋ค๊ฐ์ฐ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ข์ ์ ์ ์ด์ผ๊ธฐํ์๋ฉด ๋๋ ์๊ธฐ๋๋ฌธ์, ๊ฐ์ธ์ ์ธ ์์ฌ์ด ์ ์ ๋จ๊ธฐ์๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
```
1. ๋
ผ๋ฌธ ์ฝ๋ ๊ฒ์ ๋ํ ๋๋ ค์์ด ์์ต๋๋ค.
2. ์ํํ task๊ฐ EDA๋ Ensemble์ ์น์ค๋์ด ์์ต๋๋ค. ๋ค์ ๋งํ์๋ฉด, ODQA์ ํต์ฌ์ด ๋๋ Retriever ํํธ๋ Reader ํํธ๋ฅผ ์ ๋๋ก ๋ค๋ค๋ณด์ง ๋ชปํ์ต๋๋ค.
3. ํ์ดํผํ๋ผ๋ฏธํฐ ์คํ์ ๋ง์ด ํ์ง ๋ชปํ์ต๋๋ค.
4. ๊ฐ์ธ์ ์ธ ๊ฐ์ ์ ์ด๋ฆฌ์ง ๋ชปํ์ต๋๋ค.
```
์์ง ํ๋ถ ์ ํ๋
์ผ๋ก ๋
ผ๋ฌธ์ ์ ํ ์ผ์ด ์ ์์๊ณ , ๊ฐ์ธ์ ์ธ ๊ด์ฌ๋ ์ฐ๊ตฌ๋ณด๋ค๋ ์์ง๋์ด๋ง์ด๋ ๋น์ฆ๋์ค ์์ฒด์ ์ด์ ์ด ๋ง์ถฐ์ ธ ์๋ ํฐ๋ผ AI ๋ถ์ผ์์๋ ํ์์ ์ธ ๋
ผ๋ฌธ ๋ฆฌ๋ฉ์ ๊ฑฐ์ ํด๋ณด์ง ๋ชปํ์ต๋๋ค. ํ์๋ค์ด survey ๋
ผ๋ฌธ/ SOTA ๋
ผ๋ฌธ / QA ๋ถ์ผ์ ์ ๋ช
ํ ๋
ผ๋ฌธ๋ค์ ์ฝ๊ณ ๊ณต์ ํด์ฃผ๋๋ฐ, ๋ค์์ ๋ ์ดํด๊ฐ ๋์ง ์๋ ๋ถ๋ถ์ด ๋๋ถ๋ถ์ด์์ต๋๋ค. ๊ธฐ์ด๊ฐ ๋ถ์กฑํ ๊ฒ๋ ๋ง์ง๋ง, ์ค์ํ ์ ์ ์ฌ๋ฆฌ์ ํ๋ค์ด ์๋ค๋ ๊ฒ์
๋๋ค. ์์ด๋ก ๋ ๋
ผ๋ฌธ์ ์ฝ๊ณ , ์์์ ์ดํดํ๊ณ , ํ์ธ์๊ฒ ๊ณต์ ํ๋ค๋ ๊ฒ ์์ฒด๋ฅผ ๋๋ ค์ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ค์ ์คํ
์ด์ง์์๋ ๊ฐ๋ฅํ๋ค๋ฉด ํ ๊ฐ ์ด์์ paper์ ์ง์ ์ฐพ๊ณ ์ฐ๊ตฌํด๋ณด๊ณ ์ถ์ต๋๋ค.
๋, task์ ํต์ฌ ํํธ๋ฅผ ์ผ๋ง ๊ฑด๋๋ฆฌ์ง ๋ชปํ๋ค๋๊ฒ๋ ๊ต์ฅํ ์์ฝ์ต๋๋ค. ์ฒซ ์ฃผ์ฐจ์๋ ์๋ก ์ง ๋ฒ ์ด์ค๋ผ์ธ ์ฝ๋๋ฅผ ์ดํดํ๋๋ผ, ๋์งธ ์ฃผ์ฐจ์์๋ ๋ชจ๋ธ์ ๊ฑด๋๋ฆด ์๋๊ฐ ๋์ง ์์ EDA๋ฅผ ์งํํ๋๋ผ, ์
์งธ ์ฃผ์ฐจ์ ๋ท์งธ ์ฃผ์ฐจ์์๋ ensemble์ ์งํํ๋๋ผ NLP ๋ชจ๋ธ์ ์๋ฆฌ๋ฅผ ํ์คํ ์ดํดํ๊ณ ์ปค์คํ
ํด๋ณด์ง๋ ๋ชปํ์ต๋๋ค. ํ์ผ๋ก์๋ ์ ๊ฐ ๊ธฐ์ฌ ํ ์ ์๋ ๋ถ๋ถ์ ํ๋ ค๊ณ ๋
ธ๋ ฅํ๋ค๊ณ ์๊ฐํ์ง๋ง, ๊ฐ์ธ์ ์ผ๋ก๋ ๋ชจ๋ธ์ ๋ฐ๋ฐ๋ฅ๋ถํฐ ์ง๋ณด๊ณ , ๋ด ๋ฐฉ์๋๋ก ์คํํด๋ณด๊ณ , ๋ค๋ฅธ ํ์๋ค์๊ฒ insight๋ฅผ ์ค ์ ์๋ ์ฌ๋์ด ๋๊ณ ์ถ์๋๋ฐ ๊ทธ๋ฌ์ง ๋ชปํ์ต๋๋ค. ์ง๊ธ๊น์ง ํ๋ฒ๋ ์ํํด๋ณด์ง ๋ชปํ๋ ensemble์ ํ๋ค๋ ๊ฒ์ ์ข์ ์ผ์ด์ง๋ง, ๋ค์ ์คํ
์ด์ง์์๋ ๋ฒ ์ด์ค๋ผ์ธ ์ฝ๋๋ถํฐ ์ฌ๋์๊ฒ ์ง๊ธฐ ์์ํ์ฌ ๋ชจ๋ธ ๋ฐ ํ์ดํ๋ผ์ธ ๊ตฌํ ์์ฃผ๋ก ๋ง์ด ์ํํด๋ณด๊ณ ์ถ์ต๋๋ค.
๊ธฐ์กด์ stage์์ ๋๋ถ๋ถ์ ๋ชจ๋ธ ๊ฐ์ ์ด feature engineering๊ณผ ํ์ดํผํ๋ผ๋ฏธํฐ ์กฐ์ ์ ๊ทธ์ณค๊ธฐ ๋๋ฌธ์, ํ์ดํผํ๋ผ๋ฏธํฐ๋ก ์คํํ๋๋ฐ์๋ ์กฐ๊ธ ๊ฑฐ๋ถ๊ฐ์ด ์์์ต๋๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ , ์ฑ๋ฅ์ ์ฌ๋ฆฌ๋ ค๋ฉด ๋ฐฉ๋ฒ์ ๊ฐ์ ๋ฟ๋ง ์๋๋ผ ๋ค์ํ ํ์ดํผํ๋ผ๋ฏธํฐ๋ก ์คํํด๋ณด๋ ์๊ฐ์ด ๋ฐ๋์ ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ฑด๋๋ฆฌ๋ ๋ถ๋ถ์ด ํ์ดํ๋ผ์ธ ์ ์ฒด๋ฅผ ๊ฑฐ์น๋ค ๋ณด๋ ๋๋ฒ๊น
์ด๋ feature ์ถ๊ฐ์ ์๊ฐ์ ๋ง์ด ์์๊ณ , ์ด ๋๋ฌธ์ ์คํ์ ์ํ ํ์ดํ๋ผ์ธ์ด ๊ต์ฅํ ์ ๊ตฌ์ฑ๋์ด์์์๋ ๋ถ๊ตฌํ๊ณ GPU๋ฅผ ๋ง์ด ๋๋ ค๋์ต๋๋ค. ์ด์ฐจํผ ๋ง๋ฐ์ง์๋ ์ฌ๋ฌ ์คํ์ ์ํํ๋๋ผ ๋๊ณ ์๋ GPU๊ฐ ์๊ฒ ๋๋ฏ๋ก, ์ผ์ฐ๋ถํฐ ๋ค์ํ ํ์ดํผํ๋ผ๋ฏธํฐ๋ฅผ ์๋ํด๋ณด๋ ๊ฒ์ด ์ข๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก, competition์ ์งํํ๋ฉด์ ๊ฐ์ธ์ ์ธ ๊ฐ์ ์ ์ ์ด๋ฆฌ์ง ๋ชปํ๋ค๋ ๊ฒ์ด ์์ฝ์ต๋๋ค. AI๋ ์ฒ์์ด๋ผ ๋ง์ด ์ฃผ๋
๋ค๊ณ ๋ฌผ์ด๋ณด๊ณค ํ๋๋ฐ, ์ ์ ๊ด์ฌ์๋ ๋ชจ๋ธ serving๊ณผ ํด๋ผ์ฐ๋๋ฅผ ์ฌ์ฉํ ๋ค์ํ ์๋๋ค์ ํด๋ณด์ง ๋ชปํ์ต๋๋ค. ๋ถ์คํธ์บ ํ ์ธ์๋ ๊ฐ์ธ์ ์ผ๋ก ์งํํ๊ณ ์๋ ์คํฐ๋๋ ๋์๋ฆฌ์์ ๋ฐฐ์ ๋ ์ธํ๋ผ ์ง์๋ค์ ๋๋ฆ ํ์ฉํ ์๋ ์์์ํ
๋ฐ ๊ทธ๋ฌ์ง ๋ชปํ์ต๋๋ค. ๋ค์ stage์์๋ GCP๋ AWS๋ฅผ ์ด์ฉํ์ฌ ํน์ task์ ๋จธ์ ๋ฌ๋์ ๋น ๋ฅด๊ฒ ์ํํ๊ฑฐ๋, serving์ ์งํฅํ๋ DKT์ธ๋งํผ API ํํ๋ก model์ด serving๊น์ง ์ด๋ฃจ์ด์ง ์ ์๋๋ก ๋ฐฐํฌ๋ฅผ ๊ผญ ํด๋ณด๊ณ ์ถ์ต๋๋ค.
ํ๋ฌ์ด ์ ๋ง ์ผ์ฃผ์ผ ๊ฐ์ ์ ๋๋ก ๋๋ฌด ๋น ๋ฅด๊ฒ ์ง๋๊ฐ๋๋ฐ, ๋๋ฆ ์ด์ฌํ ํ์ง๋ง ์ํ๋ ๊ธฐ์ค์๋ ๋ชป๋ฏธ์น ๊ฒ ๊ฐ์ ์์ฝ์ต๋๋ค. ์ ํฌ ํ์ ์ฃ์กํ๋ค๊ฑฐ๋ ๋ฏธ์ํ๋ค๋ ๋ง์ ํ๋ฉด ๋ฒ๊ธ์ด 10๋ง์์ด๊ธฐ ๋๋ฌธ์, ๋ฏธ์ํ๋ค๋ ํ๊ณ ๋ ํ์ง ์๋๋ก ํ๊ฒ ์ต๋๋ค!
> ์ฑ์ต๋, ๋ง์ ์๊ฐ์ด ๋ค๋๋ก ํ๋ ํ๊ณ ์
๋๋ค... ์ฒ์ ๋ดค์ ๋๋ถํฐ ๋ง์ ์ ์ ๋ฐฐ์ธ ์ ์๋ ์ฌ๋์ด๋ผ ์๊ฐํ์๋๋ฐ ๋ง์ง๋ง ํ๊ณ ์์๊น์ง๋ ๋ง์ ์ ์ ๋ฐฐ์ฐ๋ค์. ์ ๋ ์ฑ์ต๋์ด ์์ด์ ํผ์ด์ธ์
์ด 120% ์์ฐผ์ต๋๋ค. ๊ทธ๋ฅ ์กด์ฌ๋ง์ผ๋ก ์ข์์ ใ
ใ
. ์ด๋ ๋ ๊ฐ์๊ธฐ ํผ์ด์ธ์
๋ ๋ฏผํ๋ฅผ ๋ผ์ณ์ ์ฃ์กํ๋ค๊ณ ๋งํ ๋ ์ ๋ง ๋ฏผํ๋ผ์น๋ ์ฌ๋์ ๋๋ค ํผ์ด์ธ์
๋ ์ ๋ง๋๋ดค๊ตฌ๋๋ผ๋ ์๊ฐ์ด ๋ค์์ต๋๋ค. ์ฑ์ต๋์ ์ด๋ ๊ฐ๋ ๋์์ด ๋๋ ์ฌ๋์ด๋ ์์ผ๋ก ๊ทธ๋ฐ ๋ง์ ์ํ์
๋ ๋ผ์. ๊ทธ๋ฅ ์กด์ฌ๋ง์ผ๋ก ๋ฏผํ๋ ์ด๋ฏธ ๋ฒ์ด๋์
จ์ต๋๋ค! ๊ทธ๋ฆฌ๊ณ ๋์์ด ๋ ๋งํผ์ ์ค๋ ฅ์ ๊ฐ์ง์๊ธฐ๋ ํ๊ตฌ์. ์ฌ๋์์ ๋ดค์ ๋ ํญ์ ์นํด์ง๊ณ ์ถ๋ค๋ ์๊ฐ์ ํ์๋๋ฐ ์ด๋ฒ ๊ธฐํ์ ์ ๋ง ์ ๋ง ~~~ ๋ง์ด ์นํด์ ธ์ ๋๋ฌด ์ข์์ต๋๋ค! DKT ์คํ
์ด์ง์์๋ ์ฐ๋ฆฌ ๊ฐ์ด ์ํด๋ด์! ์คํ
์ด์ง 3 ํญ์ ํ์๋ก ์์ฑํด์ฃผ์๋๋ผ ๊ณ ์ํ์
จ์ต๋๋ค!! [name=๊ฑด๋ชจ][color=#79f96d]
> ์ฑ์ต๋... ์ ๋ ์ฑ์ต๋์ ์ฑ์คํจ์ ๋ํ์์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.. ๋ณด๋ฉด์ ์ ๋ ๊ฒ ๋
ธ๋ ฅํ์๋๊น ์ฝ๋ฉ๋ ์ํ์๊ณ ์บ ํผ๋๋ค์ ์กด๊ฒฝ์ ๋ฐ๋๊ตฌ๋... ๊ฐํํ๊ณ ์์ต๋๋ค.ใ
ใ
์๋ฒฝ 4์์ ๊ฒ๋ํ์ด์ ๋ค์ด์ค์๋ ๋ชจ์ต ์์ง ๋ชปํ ๊ฒ ๊ฐ์์ ใ
ใ
ใ
๊ทธ๋ฆฌ๊ณ ๋งค์ผ ๋ฐ๋ปํ ๋ง์ ํด์ฃผ์๊ณ ... ์ ํฌ ํ์๋ถ๋ค ๋ชจ๋ ๋ฐฐ๋ คํด์ฃผ์๋ ๋ชจ์ต ์ธ์์ ์ด์์ต๋๋ค.ใ
ใ
๊ฒธ์ํจ๊ณผ ์ฑ์คํจ ๋ค ๊ฐ์ถ์ ์ฑ์ต๋.. ๋ต๊ฒ ๋ผ์ ๋๋ ์ฆ๊ฑฐ์ ์ต๋๋ค!... ์ต ์ฒ์์ ์ ๋๊ธ์ด ์ ์ผ ๊ธธ์๋๋ฐ ๊ฐ์๊ธฐ ๊ผด์ฐ๊ฐ ๋์๋ค์...ใ
ใ
ใ
์ง ์ ์์ต๋๋ค! ์ฑ์ต๋ ๋๋ถ์ ํ ํฌ๋์ด์ง ๊ด๋ จ ์ ๋ณด๋ค๋ ๋ค์ํ๊ฒ ์๊ฒ ๋์๊ณ , ์งํํ์ EDA์์ ์์ธก๊ฐ๊ณผ ์ค์ ๊ฐ๊ณผ์ ์ฐจ์ด๋ ์ ์ ์ ์์์ต๋๋ค. ๋ง์ง๋ง ๊ฐkfold๊น์ง... ์ฑ์ต๋์ ๊ธฐ์ธ๊ธฐ๊ฐ ๊ฑฐ์ ์์ง์ ๊ฐ๊น์ฐ์ ใ
ใ
ใ
ใ
๋ค์ ํ๋ฒ ๊ฐ์ฌ๋๋ ค์!
[name=์ง์][color=#C0FFFF]
> ์ฑ์ต๋ ๋ญ๊ฐ ์ฑ์ต๋์ด ์์ฌ์ํ๋ ์ ๋ค์ ๋ณด๋ ์ฃ์กํ ๋ง์์ด ๋๋ค์(10๋ง์) ๋ญ๊ฐ ์ ํฌ๋ผ๋ฆฌ ์ํต์ด ์ด๋์ ๋ ์ ๋๊ธด ํ์ง๋ง ์ด๋ฐ์๋ ๊ทธ๋๋ ์ด์ํ ๋ถ์๊ธฐ๊ฐ ์ข ์๋ค๋ณด๋ ๊ฐ์ ์ํ๋ ๊ฒ์ ํ์คํ๊ฒ ๋งํ์ง ๋ชปํ๋ ๊ฒ ๊ฐ๊ธฐ๋ ํฉ๋๋คใ
ใ
๊ทธ๋๋ ์ฑ์ต๋ ์ง์ง ์ ํฌ ํ์์ ๋ง์ ๊ฒ๋ค์ ํด์ฃผ์
จ๊ณ ํนํ ๋งํ์ ์ฑ๋ฅ์๋ ํฐ ๊ธฐ์ฌ๋ฅผ ํ์
จ์์์!! ์กฐ๊ธ ๋ฐฉํฅ์ด ๋ฌ๋์ ์๋ ์์ง๋ง ๋ญ๊ฐ๋ฅผ ๋ง์ด ์ฑ์ทจํ์
จ์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๊ณ , ์ ๋ํ ์ฑ์ต๋ ๋๋ถ์ ๋ง์ ์ธ์ฌ์ดํธ๋ฅผ ์ป์ ์ ์์์ต๋๋ค. ์ง์ ์๊ฐํ์๊ธฐ์ ๊ฐ์ ์ธ ๊ฒ๋ค์ ๋ค์์ ๊ฐ์ด ํ๋ก์ ํธํ ๋ ๋ฐํํด์ฃผ์๋ฉด ๋ ๋ง์ด ๋ฐฐ์ฐ๊ณ ์ฑ์ฅํ ์ ์์ ๊ฒ ๊ฐ์์!! ์ฑ์ต๋์ด ๋ ๋ถ์กฑํ๋ค๊ณ ๋ฏธ์ํดํ์
จ๋ ๋ถ๋ถ๋ค ์ฌ์ค ์ ๋ ๋ชจ๋ ๋ง์กฑ์ค๋ฌ์ ๋๋ฐ..ใ
ใ
ใ
๊ทธ๋ผ ๋์ฒด ๊ฐ์ ์ ๊ฐ์ง ๋ถ๋ถ์์๋ ์ผ๋ง๋ ์ํ์ค์ง.. ์ ๋ง ๊ธฐ๋๋ฉ๋๋ค!! ๊ทธ๋ฌ๋๊น ๋ค์์ ๊ผญ ๊ฐ์ด ํ๋ก์ ํธ ํฉ์๋น :innocent: [name=์ข
ํ][color=#1efbfb]
> ๋งค๋ฒ ๋ง์คํฐ์ธ์
์ฑ์คํ ์์ฑํด์ฃผ์๋ ์ฑ์ต๋์ ํ์ผ๋ก ๋ชจ์๊ฒ ๋์ด์ ์๊ด์ด์์ต๋๋ค... ๊ฐ์ ํํด์ ๋๋ฌด ์ข์์ด์...ํค์ด์ง๊ธฐ ์์ฝ๋ค...ใ
ใ
์ ๊ฐ ์ ์ผ ๋ชปํ๋ ๋ฌธ์ํ๋ฅผ ๋๋ฌด ์ฑ์คํ ์ด์ฌํ ์ํด์ฃผ์๋ ๋ชจ์ต ๋ณด๊ณ ๋ง์ด ๋ฐฐ์ ๊ณ ๋ค์ stage ๋ชฉํ๋ก ์ ๋ ๋ฌธ์ํ๋ฅผ ๋ฃ์์ต๋๋นใ
ใ
ใ
์ฑ์ต๋ ํ๊ณ ๋ฅผ ๋ณด๋ ํ๊ณ ์ถ๋ ๊ฒ๋ค์ ๋ชปํ์ ๊ฒ ์ข ์๋ ๊ฒ ๊ฐ์ ์ ๋ ๊ดํ ์ฃ์กํ๋ค์(10๋ง์) ๋ค์ ์คํ
์ด์ง์์๋ ๊ผญ๊ผญ ๊ณํํ์ ๋ชฉํ๋ค ๋ค ๋ฌ์ฑํ์ค ์ ์๊ธฐ๋ฅผ ์์ํด๋ด
๋๋น! ๋ค๋ฅธ ํ์ด์ง๋ง DKT ๊ฐ์ด ๊ณต๋ถ ์ด์ฌํ ํด๋ด์!! ๋๋ฌด ๋ฐ์์ ๊ฒ ๊ฐ์ ๊ทธ ์ดํ์๋ ๊ฐ์ด ํ๋ก์ ํธ ํด๋ณด์๊ณ ํ๊ธฐ๊ฐ ์กฐ์ฌ์ค๋ฌ์ ๋๋ฐ ์ด์ ๋งํด๋ด
๋๋ค ๋ค์์ ๊ผญ ๊ฐ์ด ํ๋ก์ ํธ ํฉ์๋น222 ๊ทธ๋ฆฌ๊ณ ๋ง์ ํ๋๋ค๋ก ์์ฒญ ๋ฐ์์ ๊ฒ ๊ฐ์๋ฐ ๊ฑด๊ฐ ์ ์ฑ๊ฒจ๊ฐ๋ฉด์ ์ผํ์๋ฉด ์ข๊ฒ ์ต๋๋ค!! [name=์์ฐ]
#### ๊ตฌ๊ฑด๋ชจ(Humer Computer)
**๋ช
์ธ: ๋ณ๊ผด์ด์ผ ์ ๋ง**...๐๐
**๋ช
์ธ: ์ ๊ฑฐ์ง๋ง์ ์ํด์**.. ๐
์ฌ๋ฌ๋ชจ๋ก ์ ๋ง ์ธ์๊น์๋ ์คํ
์ด์ง์์ต๋๋ค. ์คํ
์ด์ง๋ฅผ ๋ง๋ฌด๋ฆฌํ๋ฉด์ ์ฒ์ ์ธ์ ๋ 1์์ ๋ชฉํ๊ฐ ๋ง์ด ๋ฌ๋ผ์ก๋ค๋ ๊ฒ์ ๋๊ผ์ต๋๋ค. ๋ฌผ๋ก ๋๋จธ์ง ๋ชฉํ๋ค์ ์ด๋์ ๋ ์ ์ํํ์ต๋๋ค. :smile:
์๋ ์ 1์์ ๋ชฉํ๋ **์ฒด๊ณ์ ์ธ ์คํ์ ํตํ ์ฑ๋ฅ ํฅ์**์ด์์ต๋๋ค. ํ์๋ถ๋คํํ
๋ง์ ์ํ์ง๋ง ์ฌ์ค 1์ฃผ์ฐจ ๋๊ธฐ์ ์ ๋ฐฉํฅ์ ํ์์ต๋๋ค. ์ด์ ๋ ๋ณ๊ฑฐ ์์ต๋๋ค. ์ ๋ณด๋ค ์คํ์ ๋ ์ ํ์๋ ํ์ ๋ถ๋ค์ด ๋๋ฌด ๋ง์๊ฑฐ๋ ์ ใ
ใ
..
ํผ์ด์ธ์
๋ ํ์๋ถ๋ค์ด ์คํ ๊ณต์ ๋ฅผ ํ์๊ณ IDEA๋ฅผ ์ ์ํ๋ ๊ฒ์ ๋ค์ผ๋ฉด์ **๋ด๊ฐ ์คํ์ ํ๋ ๊ฒ์ด ํ์ ๋์์ด ๋๋ ๋ฐฉํฅ์ธ๊ฐ?** ๋ผ๋ ์๋ฌธ์ด ๋ค์์ต๋๋ค. ์คํ์ ํ๋ ๊ฒ๋ ์ข์ง๋ง ์ ๋ณด๋ค ์คํ์ ๋ ์ํ์๋ ๋ถ๋ค์ด ์๋๋ฐ ๋ด ์์ฌ์ผ๋ก ์คํ์ ๊ณ ์งํ๋ ๊ฒ์ด ๋ง์๊น? ๋ผ๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.
๊ทธ๋ฐ ์๋ฌธ์ด ๋ค๊ณ ๋ ์ดํ๋ก ๊ณฐ๊ณฐ์ด ๊ณ ๋ฏผํ์ฌ ์ด๋ฒ ์คํ
์ด์ง์์๋ **ํ์๋ถ๋ค์ ์คํ์ ์ํฌํธ**ํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๊ฒฐ์ ์ ํ๋ ์ด์ ์ค ์ค์ํ ํ ๊ฐ์ง๋ ์ ๊ฐ **์์ง๋์ด๋ง ์ชฝ์ผ๋ก ํฐ ๋์์ด ๋ ๊ฑฐ๋ผ๋ ๊ฐํ ํ์ **์ด ์์๊ณ ๊ทธ๊ฒ ํ์๋คํํ
๋ ๊ฐ๋ฅผ ๋ฌ์์ฃผ์ง ์์๊น? ๋ผ๋ ์๊ฐ์ด ์์์ต๋๋ค. ๋ง์์ ๊ทธ๋ ๊ฒ ๋จน์๋๋ฐ ์ค์ ๋ก ์ ๊ฐ ์ผ๋งํผ์ ๋์์ ์คฌ์๋์ง๋ ํ์ ์ ๋ชปํ๋ ๊ฒ์ด ์ฅ์ํฐ๋ค์. :cry:
์์ง๋์ด๋ง๊ณผ๋ ๋ณ๊ฐ๋ก ์ด๋ฒ ์คํ
์ด์ง๋ฅผ ํ๋ฉด์ **์ฑ๋ฅ ํฅ์**์ ์ค์ํ๋ค๊ณ ๋๊ผ๋ ๊ฒ์ ==๊ณต์ ==์์ต๋๋ค. **==์ด๋ ์ ๋==์ ๊ณต์ ๊ฐ ==์ผ๋ง๋งํผ== ํ๋ฐํ๊ฒ ์ผ์ด๋๋์ง**๊ฐ ์ ์ฒด์ ์ธ ๋ฐฉํฅ์ ๋น ๋ฅด๊ฒ ์ก๊ณ ์ฑ๋ฅ ํฅ์์ ๋์๋ ๊ฒ ๊ฐ์ต๋๋ค.
**๊ณต์ **๋ ๋ง์กฑ์ค๋ฌ์ฐ๋ฉด์๋ ์์ฌ์์ด ๋ง์ต๋๋ค. ์๋ํ๋ฉด ์ด๋ฐ์๋ ์๋ก๊ฐ ์กฐ์ฌ์ค๋ฌ์ ๊ธฐ ๋๋ฌธ์ **์ ํด์ง ํผ์ด์ธ์
์๊ฐ**์ธ์๋ ๊ณต์ ๊ฐ ๊ทธ๋ ๊ฒ ํ๋ฐํ๊ฒ ์ด๋ค์ง์ง ๋ชปํ์ต๋๋ค. ์ด ๋ถ๋ถ์ด ์ ํฌ ํ์ด ์ด๋ฐ์ ์ฃผ์ถค๊ฑฐ๋ฆฌ๋๋ฐ ์ํฅ์ ๋ผ์ณค๋ค๊ณ ์๊ฐ์ ํฉ๋๋ค. ๊ทธ๋๋ 2์ฃผ์ฐจ, 3์ฃผ์ฐจ์ ๋ค์ด์๋ฉด์ ์ ์ฐจ **๊ณต์ ๊ฐ ํผ์ด์ธ์
์ด์ธ์ ์๊ฐ์๋ ํ์ฑํ**๊ฐ ๋์๊ณ ๋ชจ๋ธ ์ฑ๋ฅ ํฅ์์ ๋ ํฐ ๋์ฝ์ด ๋์๋ค๊ณ ์๊ฐํฉ๋๋ค. :smile:
๋ง์ง๋ง์ผ๋ก ์ ๊ฐ ํ์ ์ํ ํ์์ผ๋ก์ ์งํฅํ๋ ๊ฒ์ **๋์ ์ฑ์ฅ**์ด ์๋ **๊ทธ๋ฃน์ ์ฑ์ฅ**์ด์๊ณ ๊ทธ ๊ฒฐ์ค์ ์ง๊ธ์ **Wrap Up ๋ฆฌํฌํธ**์ **MRC ํ๋ค ์ค ์ ์ผ๋ฌด์ดํ ํ๋์ ๋ฒ ์ด์ค๋ผ์ธ ์ฝ๋** ๊ทธ๋ฆฌ๊ณ **LB ์ ์**๋ก ์ฆ๋ช
ํ ๊ฒ ๊ฐ์์ ๋ณด๋์ฐน๋๋ค.
์ข์ ํ์ด์๊ณ ์์ผ๋ก๋ ์ข์ ํ์ผ๋ก ๋จ์์ผ๋ฉด ํฉ๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
> ์ฒ์์ ๊ฑด๋ชจ๋ ๋ดค์๋๋ณด๋ค ~~์นํด์ง๊ฒ~~ ๋์ด ๋๋ฌด ์ข์ต๋๋ค. ์ฌ์ค ์ ์ ํฌ ํ ์ ๋ ฅ์ ๋๋ถ๋ถ์ ๋งก๊ณ ๊ณ์ ๋ฐ, ๋งค๋ฒ ์์ง๋์ด๋ง๊ณผ ์คํ์ ๋๋ฌด ์ฆ๊ฑฐ์ํ์๋ ๋ชจ์ต ๋ณด๊ณ ์ ๋ง ์๊ทน์ด ๋ง์ด ๋์ต๋๋ค. ์์ ์๋ ๋ง์๋๋ ธ์ง๋ง ๊ฑด๋ชจ๋์ ์ฒซ ์ธ์์ ๋นํด ๋๋ฌด ์ ํ์ ๊ฒ ๊ฐ์์. ์ฝ๋ฉ์ผ๋ก๋, ํ์์ผ๋ก์ ํ์
ํ๋ ๋ถ๋ถ์ด๋ ๊ฑด๋ชจ๋ ๋๋ถ์ ํํ๋์ด ๋๋ฌด ๋ณด๋์ฐจ๊ณ ์ฆ๊ฑฐ์ ์ต๋๋ค. Stage 4์๋ ์ฐ๋ฆฌ ๋ ์ข์ ๊ฒฐ๊ณผ ๋ด๋ด์! [name=์ฑ์ต][color=#CDA096]
> ๊ฑด๋ชจ๋... ๋๋ถ์ ๋ง์ด ๋ฐฐ์ ์ต๋๋ค!์ ๋ง ์๋ฒฝ๊น์ง ์ ๋ฅผ ๊ฐ๋ฅด์ณ์ฃผ์๊ณ ์ผ๋ฌ์ฃผ์๊ณ ...ใ
ใ
ใ
ใ
ํด์ฃผ์
์ ๋ง์ด ์ฑ์ฅํ์ต๋๋ค. ์ฅ๋ ์๋๊ตฌ ์ง์ง์์! ์ ํํ
์๊ฐ ํฌ์ํด์ฃผ์
์ ์ ๋ง ๊ฐ์ฌ๋๋ ค์ ใ
ใ
ํ๋ก๊ทธ๋๋ฐ์ ํ ๋ ์๊ณ ์์๋ ์ค์ํ ์ ๋ค๋ ๋๋ถ์ ๋ง์ด ์๊ฒ๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ํํ
์ฝ๋ ๊ฐ์ ํ ์ ๋ค์ ์ฐจ๋ถํ๊ฒ ์ผ๋ฌ์ฃผ์ ์ ๋ ์ธ์์ ์ด์์ต๋๋ค. ๊ฑด๋ชจ๋ ๋ต๊ฒ ๋ผ์ ๋๋ฌด ์ ์ตํ๊ณ ๊ฐ์ฌํ์ต๋๋ค! ์ต ๊ฑด๋ชจ๋๊บผ ๋ฉ์์ง ๊ธธ์ด ๊ฐ์๊ธฐ ๋ฐ๋ ค๋ฌ๋ค์ใ
ใ
ใ
๋ญ๊ฐ ๊ธฐ์ ์ ์ธ ๋์์ ๋๋ฌด ๋ง์ด ๋ฐ์๊ณ ๊ทธ ์ธ๋ก๋ ์ทจ์
์ค๋น๋ ์ฌ๋ฌ ์๊ธฐ๋ค ๋ง์ด ๋๋ฆฐ ๊ฒ ๊ฐ์๋ฐ ์ ๋ค์ด์ฃผ์๊ณ ์กฐ์ธํด์ฃผ์ ์ ๋ ๋๋ฌด ๊ฐ์ฌํ์ต๋๋ค.ใ
ใ
[name=์ง์][color=#C0FFFF]
> ๊ฑด๋ชจ๋ ๋๋ถ์ ์ฒ์๋ถํฐ ๋๊น์ง ๋์ํ๋ ์คํ ์ฝ๋ ๊ฒฝํํด๋ณผ ์ ์์์ต๋๋ค... ๋ฒ ์ด์ค๋ผ์ธ ์ฝ๋์์ ๊ฐ์๊ธฐ ๊ทธ๋ํ๊ฐ ๋๋ฑ๋๋ฑ ๊ทธ๋ ค์ง๊ณ ์๋๋น๋ก ๋ค ๋์ด๊ฐ๊ณ ์ด๋ฐ๊ฑฐ ๋๋ฌด ์ข์์ด์..ใ
ใ
ใ
๊ทธ๋ฆฌ๊ณ ๋ฌด์๋ณด๋ค๋ ***์ด์ ***์ ๋ง์ด ๋ฐฐ์๊ฐ๋๋ค... ์ฃผ๋ง์ ์์
์ด ์์ด์ ํ๊ณ ์ถ์ ์ฝ๋ฉ์ ํ ์ ์์ด์ ์ข๋ค๊ณ ๋ง์ํ์ ๊ฒ ๋๋ฌด ์ธ์์ ์ด๊ณ ๊ธฐ์ต์ ๋จ์์..^^ ๋๋ถ์ ์ ๋ ์ด์ ๋์ด์ฌ๋ ค์ ์ด๋ฒ ์คํ
์ด์ง ์ด์ฌํ ํ ์ ์์์ต๋๋ค! ๋๋ฌด ๋ง์ด ๋ฐฐ์ ๋๋ฐ ํค์ด์ง์๋ ์์ฝ๋ค์ ใ
ใ
๊ทธ๋๋ ์ฐ๋ฆฌ ๊ณ์ ๊ฐ์ด ์คํฐ๋ ์ ํด๋ด์ ใ
ใ
[name=์์ฐ]
> ๊ฑด๋ชจ๋!! ์ด๋ฐ์ ํ์๋ค์ ์ํด ๋ง์ ์๊ฐ์ ์์ผ์๋๊ฑธ ๋ณด๋ฉด์ ๋ง์๊ฑธ ๋๊ผ์ด์ ๊ทธ๋ฆฌ๊ณ MRC ๊ธฐ๊ฐ ๋ด๋ด ์ด๊ฑธ ์ฆ๊ธฐ๊ณ ์๋ค๋๊ฒ ๋์ ๋ณด์ฌ์ ๋ ์กด๊ฒฝ์ค๋ฌ์ ์ต๋๋ค.. ๋ญ๊ฐ ํ ์ผ์ ๋ํ๋ ์์ธ๊ฐ ๋จ๋ค๋ฅธ ๊ฒ์ ๋ณด๊ณ ์ ๋๋ ์ผ๋ฅธ ์ ๋ ๊ฒ ๋์ด์ผ์ง๋ผ๋ ์๊ฐ์ ๋ง์ด ํ๋ ๊ฒ ๊ฐ์์ ํญ์ ํ์๋ค์๊ฒ ์ฌ๋ฌ TMI ๊ณต์ ๋ฅผ ํตํด ํ๊ธฐ๋ ๋ง์ด ๋ถ์ด๋ฃ์ด์ฃผ์๊ณ ์ฝ๋ฉ ์ธ์ฌ์ดํธ๋ ๋ง์ด ์ ๊ณตํด์ฃผ์
์ ์ ํฌํ์ ๊ธฐ๋ฅ๊ฐ์ ์กด์ฌ์์ต๋๋ค!! ์ง๊ธ ํ๊ณผ Stage4๋๋ ์ด์ด์ ๊ฐ์ด ํ๊ณ ์ถ์๋๋ฐใ
ใ
๋ฐ๊ฟ ๊ธฐํ๋ฅผ ์ด์ ์์ฃผ๋๋ผ๊ตฌ์ ๐ก ๋ถ์บ ๋๋๋ฉด ๊ผญ ๊ฐ์ด ํ๋ก์ ํธ ํด์!! ๋ฒ๋ธ๋ด ๋ง๋์ค๋ ์ ๋นผ๊ณ ๋ง๋ค์ง ๋ง์๊ตฌ์ใ
ใ
ใ
ใ
ใ
ใ
๐ ๋์ค์๋ ๋ง์ด ๋ง๋์ ๋ ๋ง์ ๊ฒ๋ค์ ๋ฐฐ์ฐ๊ณ ์ถ๋ค๋ ์๊ฐ์ด ๋ญ๋๋ค!!! ์ ๊ฐ ๋ง์ด ์ง์ฒ๊ฑฐ๋ฆด๊ฒ์ ํฌํํ [name=์ข
ํ][color=#1efbfb]
#### ๊น์ข
ํ(Human)
์ด๋ฒ Stage์์๋ ์ง๋ Stage 1, 2์์๋ ํด๋ณด์ง ๋ชปํ๋ ๋ง์ ์ผ๋ค์ ํด๋ธ ๊ฒ ๊ฐ์ ๋๋ฌด ๋ฟ๋ฏํ์ต๋๋ค. ์ง๋ ์คํ
์ด์ง๋ค์์ ์ ๋ ํญ์ ๋ฆฌ๋๋ณด๋ ์ค์ฝ์ด๋ง์ ๋งน๋ชฉ์ ์ผ๋ก ์ข์๊ณ ๊ทธ ๊ณผ์ ์์ ๊ฒฐ๊ณผ์ ์ผ๋ก ๋จ์ ๊ฒ์ด ์ ๋ค๋ ๋๋์ ๋ง์ด ๋ฐ์์ต๋๋ค. ํ์ง๋ง ์ด๋ฒ ์คํ
์ด์ง์์๋ ์ ๋๋ก ๋ ํ์
ํ๋ก์ธ์ค๋ฅผ ๊ตฌ์ถํ๊ณ ์ ๋ง ๋ด๊ฐ ์ํ๋ ๊ฒ์ด ๋ญ์ง, ๋ด๊ฐ ํ์๊ฒ ๊ธฐ์ฌํ ์ ์๋ ๊ฒ์ด ๋ญ์ง ๋ง์ด ์๊ฐํด๋ณผ ์ ์์์ต๋๋ค. ๋ฌด์๋ณด๋ค๋ ์ง๊ธ๊น์ง์ ๋ถ์คํธ์บ ํ ๊ธฐ๊ฐ ์ค ์ง๋ ํ ๋ฌ์ ์๊ฐ๋์ ๊ฐ์ฅ ๋ง์ ๊ฒ์ ์ป์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ผ๋จ ์ ๋ `git์ ์ ์จ๋ณด์!`๋ผ๋ ๋ง์ฐํ ๋ชฉํ๋ฅผ ๊ฐ์ง๊ณ ์ด๋ฒ stage๋ฅผ ์์ํ์ต๋๋ค. ์ด์ ์ ์ ๋๋ก ๋ ํ์
์ ํด๋ณธ ๊ฒฝํ์ด ์์๊ณ ์๋ ๋ถํฐ ํญ์ ์ด ๋ถ๋ถ์ ๋ํ ๊ฐ์ฆ์ด ๋ ์ฌํ์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ๊ฒฐ๊ณผ์ ์ผ๋ก ์ด ๋ถ๋ถ์์๋ ์ ์์ ์๊ฒ 100์ ์ ์ค ์ ์์ ์ ๋๋ก, ๋ชฉํ ๋ฌ์ฑ์ ์ฑ๊ณตํ์๋ค๊ณ ์๊ฐํฉ๋๋ค! git์ ์ต์ํ ํ์๋ค์๊ฒ issue ๊ด๋ฆฌ, branch ๊ด๋ฆฌ ๋ฑ ์ฌ๋ฌ git์ ์ ์ฉํ ๊ธฐ๋ฅ๋ค์ ๋ค์ํ๊ฒ ๋ฐฐ์ธ ์ ์์๊ณ ZenHub๋ฑ์ ํ๋ฌ๊ทธ์ธ์ ํ์ฉํ์ฌ ๋ณด๋ค ํจ์จ์ ์ธ ์
๋ฌด ์์คํ
์ ๊ตฌ์ถํ ์ ์์์ต๋๋ค. ==๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์ข์ ๋๊ตฌ๋ค์ ๊ต์ฅํ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๋ค๋ ์ ==์
๋๋ค. ๋ ํ์
์ ์ ๋๋ก ํด๋ณด๊ณ ์ถ๋ค๋ผ๋ ์๊ฐ์ ํด์์๋๋ฐ ์ข์ ํ์๋ค ๋๋ถ์ ์ด ๋ชจ๋ ๊ฐ์ฆ์ ํด์ํ ์ ์์๋ค๋ ์ ์ ๋๋ฌด ๋ฟ๋ฏํ๊ณ ๊ฐ์ฌํฉ๋๋ค.
๋ค์์ผ๋ก ์ ๋ `ํ๊ณ ์๋ ๊ฒ์ ์ ๋๋ก ์ดํดํ์`๋ผ๋ ๋ชฉํ๋ ์์์ต๋๋ค. ์ด์ ์คํ
์ด์ง๋ค์์ ๋๋ฌด ์ฑ๋ฅ์ ์ฌ๋ฆฌ๋ ๋ฐ์๋ง ์น์คํ๋ฉฐ ์๊ฐ์ ๋ณด๋ธ ๋๋จธ์ง ์ฝ๋ ๊ด๋ฆฌ๋ ์๋ฆฌ์ ๋ํ ๊น์ ์ดํด ๋ฑ์ ์ ๋๋ก ํด๋ด์ง ๋ชปํ๊ธฐ ๋๋ฌธ์
๋๋ค. Stage 2์์๋ ์ด๋ฌํ ์ ์ ์ค์ค๋ก ์ธ์ํ๊ณ ๊ณ ์น๋ ค๊ณ ๋
ธ๋ ฅํ์์ผ๋ ์ฌ์ ํ ์ฝ์ง ์์์ต๋๋ค. ํ์ง๋ง ์ด ๋ชฉํ ์ญ์ ์ด๋ฒ ์คํ
์ด์ง์ ํ์๋ค๊ณผ ํจ๊ป ๋ฐฐ์๋๊ฐ๋ฉฐ ์์ฐ์ค๋ ์ด๋ฃจ์ด๋ผ ์ ์์์ต๋๋ค. ํ ๋ด ๋ญ๋ ๋ค๊ฐ์ด ์ํตํ๋ฉฐ ํด๊ฒฐ๋๊ฐ์๋ผ๋ ๋ถ์๊ธฐ๊ฐ ์ ํ์ฑ๋์ด ์์๊ธฐ ๋๋ฌธ์ ์ ์ดํด๋์ง ์๋ ๊ฒ๋ค์ ์ํต์ ํตํด ํด๊ฒฐํ์๊ณ , ๋ค๋ค ์ธ์ ๋ ์ฑ์ฌ์ฑ์๊ป ๋ต๋ณํด์ฃผ์
์ ์ค์ค๋ก์ ์ฑ์ฅ์ ํฐ ๋์์ด ๋์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์คํ๋ ค ๋๋ฌด ์ ํผ์ ๋ชจ๋ฅด๋ ๊ฒ๋ค์ ํด๊ฒฐํ๊ณ ๋จ๋ค์๊ฒ๋ ๊ณต์ ํ์ง ๋ชปํ๋ ๊ฒ์ ์๋๊ฐ ํ๋ ์๊ฐ์ด ๋ค์ด ์ง๊ธ์์ ์ด๋ฐ ๋ถ๋ถ์ ๋ํ ๋ฐ์ฑ์ ํ๊ฒ ๋๋ค์..
์ ๋ ๊ทธ๋์ ์ด๋ค ๋ชฉํ๋ฅผ ์ธ์ฐ๊ณ ์ด๋ฅผ ์ฑ์ทจํ๋ ๋ฐ์ ์คํจํ๋ ๊ฒฝํ์ด ์์ฃผ ๋ง์์ต๋๋ค. ๊ทธ๋์ ์ฌ์ค ์ด๋ฒ ๋ํ๋ฅผ ์์ํ ๋์๋ ์ ๊ฐ ์ธ์ ๋ ๋ชฉํ๋ฅผ ์ด๋ฃฐ ์ ์์์ง, ๋ญ๊ฐ ํ์ ์ด ์์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ํ ๋ฌ์ ์ ์ ์์ด ๋ณด๋ด๊ณ ๋์ ๋๋์๋ณด๋ ๋ชฉํ ๋๋ถ๋ถ์ ์ด๋ฃจ์ด๋ธ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ญ๋๋ค. ๊ตณ์ด ์์ํ์ง ์์๋๋ฐ๋์..! ์ธ์ด ๋ชฉํ๋ฅผ ์ด๋ฃจ๊ธฐ ์ํด ์ ๊ฐ ์์์ ์ผ๋ก ๋
ธ๋ ฅํ๋ ๊ฒ๋ณด๋ค๋, ์์ฐ์ค๋ฝ๊ฒ ๋ชฉํ๋ฅผ ์ด๋ฃฐ ์ ์๋๋ก ํ๊ฒฝ์ ์ ์กฐ์ฑํ๋ ๊ฒ์ด ์ผ๋ง๋ ์ค์ํ์ง ๊นจ๋ฌ์ ์ ์์์ต๋๋ค.
๊ฐ์ฅ ๋ง์กฑ์ค๋ฌ์ ๋ ์ ์, ์ด๋ ๊ฒ ์ด๋ ค์ด task๋ฅผ ๋ค๋ฃจ๋ฉด์๋ ํ ๋ฌ์ด๋ผ๋ ๊ธด ์๊ฐ์ ๋๋ฌด๋ ์ฆ๊ฒ๊ฒ ๋ณด๋ผ ์ ์์๋ค๋ ๊ฒ์
๋๋ค. ํํธ์ผ๋ก๋ ์ด๋ฒ ํ ๋ฌ์ด ๋๋ฌด๋ ๋น ๋ฅด๊ฒ ์ง๋๊ฐ ์์ฝ๊ธฐ๋ ํฉ๋๋ค. Stage 4์์ ๊ณผ์ฐ ์ด๋ณด๋ค ์ํ ์ ์์์ง, ์ด๋ณด๋ค ๋ ๋ง์กฑ์ค๋ฌ์ด ํ ๋ฌ์ ๋ณด๋ผ ์ ์์์ง ์์งํ ๋๋ ต์ง๋ง ๋ถ์คํธ์บ ํ ๊ธฐ๊ฐ์ ๊ฑฐ์น๋ฉด์ ๊ณ์ํด์ ์ฑ์ฅํด์๊ธฐ ๋๋ฌธ์ ๋ค์ ์คํ
์ด์ง์์๋ ์ ํ ์ ์๊ฒ ์ง ์๊ฐํ๋ฉฐ ์ด๋ฒ ์คํ
์ด์ง ํ๊ณ ๋ฅผ ๋ง์นฉ๋๋ค ๐
> ์ ๋ ์ข
ํ๋ํํ
์ฌ๊ณผ ๋๋ฆด ์ ์ด ํ ๋๊ฐ๊ฐ ์๋๋๋ค... ์ฒซ ๋ฒ์งธ๋ก Reader๋ชจ๋ธ ๋์์ ๋๋ฆฌ์ง ๋ชปํ๋ ๊ฒ. ์ข
ํ๋์ด ์ด๋ป๊ฒ๋ ์ฑ๋ฅ์ ๋์ด์ฌ๋ ค์ฃผ์ค๊บผ๋ผ๊ณ ์๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ (๊ฒฐ๊ณผ์ ์ผ๋ก ์ฑ๋ฅ๋ ์ฌ๋ฆฌ์
จ์ง๋ง:smile:) Reader๋ชจ๋ธ์ ํฐ ๊ด์ฌ์ ๋์ง ์์์ต๋๋ค. ๊ทผ๋ฐ Reader๋ชจ๋ธ ์ฑ๋ฅ์ด ๋ฎ๋ค๊ณ github์์ ๋ฏธ์ํ๋ค๊ณ ๋งํ ๋ ์ ๋ง ์ ๋ง ์ฃ์กํ์ด์. ์ด ๋ถ๋ถ ๊ผญ ์ฌ๊ณผํ๊ณ ์ถ์์ต๋๋ค. ์ ๊ณ ๋๋ ์ฌ๊ณผ๋๋ฆด๊ฒ ํ ๊ฐ ๋ฐ์ ์๋ค์ ใ
. ๊ทธ๋ฆฌ๊ณ ์ด๋ฐ์ ์คํ
์ด์ง 4๋ ๊ฒฝ๋ํ ํ์
์ ๊ฐ์ ํ ๋ชปํ๋ค๊ณ ํ์ ๋ ๋ง์ด ์์ฌ์ ์ต๋๋ค. ๊ทธ๋ฅ ๋ญ๊ฐ ํฐ ๋๋ค๋ณด๊ฐ ๊ฐ๋ ๋๋์ด ๋ค์๊ฑฐ๋ ์ ใ
ใ
. ์คํ
์ด์ง 4์์๋ ํจ๊ป ๋ชปํด์ ์์ฝ์ง๋ง ๋ถ์คํธ์บ ํ ๋๋๊ณ ๊ผญ ๊ฐ์ด ํ๋ก์ ํธ ํ๋๋ก ํฉ์๋ค!! ์ Aํ์ด๋ ์ฐ๋ฝ์ ๊ธฐ๋ค๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค!!! ๋ค์ ํ๋ฒ ๋ Stage 3 ์ ํฌ ํ ์ด๋์ด์ฃผ๋๋ผ ๊ณ ์ํ์
จ์ต๋๋ค!!!! [name=๊ฑด๋ชจ][color=#79f96d]
> ๋ค๋ฅธ ์บ ํผ๋๋ค๊ป๋ ํธ๋ค๊ฐ ๋จ์์ง๋ง ์ข
ํ๋์ ์ ๋ ๋น์ทํ ๋์ด์์๋ ๋ถ๊ตฌํ๊ณ ํญ์ ์ ๊ฐ ๋ฐฐ์๊ฐ ์ ์ด ์ ๋ง ๋ง์ ํ์ฅ๋์ด์ ๊ฒ ๊ฐ์์. ๊ทธ๋ฐ ์ข
ํ๋๊ณผ ์๋ฒฝ์ ์ฝ๋ฉํ๋ฉด์ ์ด์ผ๊ธฐํ์๋, ์ข
ํ๋์ด ์ ๋ ๋น์ทํ ๊ฐ์ ์ ๋๋ผ์
จ๋ค๋ ์ด์ผ๊ธฐ๋ฅผ ๋ฃ๊ณ ๋๋ฌด ์ ๊ธฐํ์ด์. ์ ์
์ฅ์์๋ ๊ฐ์ฅ ์ด๋ ค์๋ณด์ด๋ ํํธ๋ฅผ ๋งก์ผ์๋ฉฐ ์ ๋ง ๋ค์ํ ์คํ์ ๋ฌต๋ฌตํ ํ์๊ณ ๊ณต์ ํด์ฃผ์๋ ๋ชจ์ต์ด ์ ๋ง ์ธ์๊น์์ด์. ์ ๊ฐ ์์ง๊น์ง ์์ฃผ ๋ง์ ์ฌ๋์ ๋ง๋๋ณด์ง ์์๋๋ฐ, ๊ทธ์ค ๋ฉ์๋ ์ฑ์ทจ๋ฅผ ์ด๋ฃฌ ์ฌ๋๋ค์ ์ข
ํ๋์ ๋ง์ด ๋ฎ์์๋๊ฒ๊ฐ์์. ํ๋ฌ ๊ฐ ๊ฐ์ด ํ๋ก์ ํธํด๋ณธ ๊ฒฝํ ์ ์ข
ํ๋์ ์์ผ๋ก ํจ์ฌ ๋ ๋ง์ ์ฑ๊ณต์ ์ด๋ฃจ์ค๊ฑฐ๊ฐ์ต๋๋ค. ๋์ ๊ทธ๋๊น์ง ๋ฐฅ์ ๊ผญ ๋ ์๊ฐ ์ด์ ๋จ๋๋ก ํ์ธ์. [name=์ฑ์ต][color=#CDA096]
> ์ ๊ฐ ์คํ
์ด์ง 2์์ ์ ์ผ ์ํ ์ผ์ ์ข
ํ๋์๊ฒ ๊ฐ์ ํ์ ํ์๊ณ ํ ์ผ์ด์๋ ๊ฒ ๊ฐ์ต๋๋ค... ๊ทธ ํ๋ง๋์ ์ผ์ฌ์ฒ๋ฆฌ๋ก ํ๋ณด๋ ํด์ฃผ์๊ณ ํ๋ ๋ชจ์์ฃผ์๊ณ ์ ๋ ๋๋ฌด ์ข์์ต๋๋น... ์ ๊ฐ ๋ฌผ์ด์จ ๋
ผ๋ฌธ๋ ๋๋ฑ๋๋ฑ ๊ตฌํํด์ฃผ์๊ณ ... ๋ฆฌ์ก์
๋ ํญ์ ์์ฐจ๊ฒ ํด์ฃผ์๊ณ ๋ค๋ฅธ ํ์๋ค ์ฌ๊ธฐ๋ ๋ถ๋์์ฃผ์๊ณ ... 2์ธ์ ์ญํ ์ ์ข์ํ์ ๋ค๊ณ ํ์
จ์ง๋ง ๋๋ฌด ํ์ฅ ์ญํ ์ ์ํด์ฃผ์
์ ์ ํฌ ํ์ด ์ ๋์๊ฐ๋ ๊ฒ ๊ฐ์์! ์คํ
์ด์ง 4๋ ๊ฐ์ ํ์ด ์๋๋ผ๋๊ฒ ๋๋ฌด ์์ฝ๋ค์ ใ
ใ
๊ทธ๋๋ ๊ฐ์ด ์คํฐ๋ ์ ํด๋ด
์๋ค!! [name=์์ฐ]
> ์ข
ํ๋... ์ ๊ฐ ๋ง์ ์ํ์ง๋ง ์ ์ผ ์์งํ ํ์๋ถ์ด์ธ์..์ DM ๋ช๋ฒ ๋ฐ์๋ณด์
จ์ฃ ??ใ
ใ
ใ
๋ญ๊ฐ ์ฒ์ ํ๋น๋ฉํ ๋๋ ์ข
ํ๋์ robustํ ๋ชจ์ต ๋ณด๋ฉด์ ํ ๊ฐ์ด ํ๊ณ ์ถ๋ค๋ ์๊ฐ ํ์๋๋ฐ ๊ฐ์ด ํ๊ฒ ๋์ด์ ๋๋ฌด ์ฌ๋ฐ๊ณ ์ฆ๊ฑฐ์ ์ต๋๋ค. ใ
ใ
์ฑ
์๊ฐ ์๊ฒ ์ ํฌํ ์ ์ด๋์ด์ฃผ์
์ ๋๋ฌด ๊ฐ์ฌํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ข
ํ๋์ด๋ ETRI ๊ด๋ จํด์ ๊ฒฐ๊ณผ๋ฌผ์ ์ ๋ด๋ณด๊ณ ์ถ์๋๋ฐ ๊ทธ๋ฌ์ง ๋ชปํด์ ์์ฌ์์ ใ
ใ
๋ค์์ ๋์ ๋๋ฆด ์ ์๊ฒ ๋ ๋จธ๋ฆฌ๋ฅผ ๊ตด๋ ค๋ณผ๊ฒ์ ํํ ๊ทธ๋ฆฌ๊ณ ์ ํฌ ๋งจ ์ฒ์ ๋ฒ ์ด์ค๋ผ์ธ ์ฝ๋ ๋ฆฌ๋ทฐํ ๋ ๋๋ฒ๊น
ํด ์์ฒญ ์์ฐ์๋ฉด์ ๋ถ์ํด์ค์ ๊ฑฐ ์์ง๋ ๊ธฐ์ต์ด ๋์ใ
ใ
์งฑ์งฑ! [name=์ง์][color=#C0FFFF]
#### ์ ์ง์(Human Retriever)
ํ์๋ค์๊ฒ ๋์์ ๋ฐ์ ์ , ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ณผ์ ์์ ์ ๊ฐ ๋๋ ์ ์์ฃผ๋ก ์์ ํ๊ฒ ์ต๋๋ค.
- ๋๋์ 1 : Clean Code๋ฅผ ์งํฅํ์
ํ์ด์ฌ์ ์ค๋ซ๋์ ์ฐ๋ฉด์๋ ์ฝ๋๋ฅผ ์ถ์ํํ๊ณ ์ ๋ฆฌํ๋ ์ผ์ ๋ง์ด ์์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฒ ๋ํ์์ ํผ์ด๋๋ค๊ณผ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์งํํ๋ฉด์ ํจ์๋ช
์ค์ /๋ณ์๋ช
์ค์ /doc string ์์ฑ ๋ฑ์ด ์ฝ๋ ๊ฐ๋
์ฑ์ ์ํด ์ผ๋ง๋ ์ค์ํ์ง ์ ์ ์์์ต๋๋ค. ๋ํ ์ ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋งํด์ฃผ์๋ ํผ์ด๋๋ค์ ๋ณด๋ฉด์ ๊นจ๋ํ.. ์ฝ๋.. ๋๋ํ.. ์ฝ๋๋ฅผ ๋จผ์ ์๊ฐํ๊ณ ์ง์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ง์ด ๋ค์์ต๋๋ค. ์์ผ๋ก๋ **1. ์ฝ๋ ๊ฐ ์ค๋ณต ์ค์ด๊ธฐ 2. ๋ณ์/ํด๋์ค๋ช
์ ์ ์ค์ ํ์ฌ ํํ๋ ฅ ๋์ด๊ธฐ 3. ๊ตฌํ ์ด๋ฐ๋ถํฐ ๊ฐ๋จํ ์ถ์ํ ๊ณ ๋ คํ๊ธฐ** ๋ฑ๋ฑ ์ธ๊ฐ์ง ๊ท์น์ ํ ๋๋ก ์ฝ๋๋ฅผ ์ง๋ณผ ์์ ์
๋๋ค.
- ๋๋์ 2 : ๋ถ๋จํ ๋
ธ๋ ฅํ์
์ ๋ ๋ํ ์ค์ Dense Retriever ์ฑ๋ฅ์ ๋์ด์ฌ๋ฆฌ์ง ๋ชปํด์ ๋ง์ด ์นจ์ธํด์ ธ ์์์ต๋๋ค. ํผ์ด์ธ์
์ด ๋์์ฌ ๋๋ง๋ค, ์คํ์์ค๋ฅผ ์จ๋ณด๊ฑฐ๋ ๋ฒ ์ด์ค๋ผ์ธ ๋ฐฑ๋ณธ ์ฝ๋๋ฅผ ๋ฐ๊ฟ๋ณด๊ฑฐ๋ ๋ฑ๋ฑ ์ฌ๋ฌ ์๋๋ฅผ ํ์์๋ ์ฑ๋ฅ์ด ์๋์ ํผ์ด๋๋ค๊ป ๋ญ๋ผ๊ณ ๋ง์์ ๋๋ ค์ผ ํ ์ง ๊ฑฑ์ ๋ถํฐ ์์ฐ์ต๋๋ค. ์์๊ถ ํ๋ค์ ๋ฐํ๋ฅผ ๋ค์ด๋ณด๋ ๋ชจ๋ elastic search๋ฅผ ์ผ๋๋ฐ... ์ฃผ์ด์ง ์๊ฐ๋์ ๊ทธ ๋ฐฉ๋ฒ์ ์์๋ด์ง ๋ชปํ๋ค๋.. ํํ ๋๋ฌด ์ํ๊น์ต๋๋ค. ์ ๊ฐ ๊ธฐ์ด์ด ๋น ์ ธ์๋ ๊ฑธ ์์
จ๋์ง ํผ์ด๋๋ค์ด ์๋ํด๋ณธ ๊ฒ์ ์๋ฏธ๋ฅผ ๋์๊ณ ์๋กํด์ฃผ์๊ณ ๋งค์๊ฐ ๋ฐ๋ปํ ๋ง๋ค์ ๊ฑด๋ค์ฃผ์
จ์ต๋๋ค(ใ
^ใ
). AI ๋ถ์คํธ์บ ํ์ ๋ค์ด์จ ์ดํ๋ก ๋ฅ๋ ฅ์ ํ๊ณ๋ฅผ ๋ง์ด ๋๋ผ๋๋ฐ, ์ด๋ฒ ํ์๋ถ๋ค์ ๋ต๊ฒ ๋๋ฉด์ ์ด๋ ค์ ์์์๋ ๋๊น์ง ๋ฒํธ ์ ์์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ AI์ ๊ดํ ์ง์๋ค์ ํผ์ด์ธ์
๋ ์ ๋ง ๋ง์ด ๋ฐฐ์ธ ์ ์์์ต๋๋ค. ์ด๋ฒ ํ๋ก์ ํธ์์ ์ ๊ฐ ๋๋ ๋ฏธ์ํ ๊ฐ์ ๋ค, ์ข์ ๊ฐ ๋ฑ์ ๋๊น์ง ์์ง ์๊ณ ๋ค์๋ฒ์ ๋ง๋ ์๋ก์ด ๋๋ฃ๋ค์๊ฒ๋ ๋์์ด ๋ ์ ์๋๋ก ๋ ๋
ธ๋ ฅํด์ผ๊ฒ ์ต๋๋ค.
> ์ง์๋~ ์ง์๋์ด ๋ง๋ค์ด์ฃผ์ hybrid ๋ฆฌํธ๋ฆฌ๋ฒ๊ฐ ์ด๋ฒ ๋ํ ์ต๊ณ ์ฑ๋ฅ์ธ๋ฐ elastic search๊ฐ ๋ค ๋ฌด์จ ์์ฉ์ด๊ฒ ์ด์ ์ด๋ฏธ ๋ฆฌํธ๋ฆฌ๋ฒ ํํธ์ ๋๋ฌด ํฐ ๊ธฐ์ฌ๋ฅผ ํด์ฃผ์
จ์ด์! (์ด๋ฐ ๋ง ์ซ์ดํ์๋๊ฑฐ๊ฐ์ง๋ง) ํญ์ ๋ณ๊ฑฐ ์๋๊ฑฐ ํ๋ค๊ณ ์๊ฐํ์๋๋ฐ ๋จ๋ค์๊ฒ๋ ์ ๋ง ํฐ ์ผ์ด๋ผ๋๊ฑธ ์์์ฃผ์
จ์ผ๋ฉด ์ข๊ฒ ์ต๋๋คใ
ใ
์ง์ง ์์ ๊ฐ์ ๊ฐ์ ธ๋ ๋์ค ์ค๋ ฅ์ด์ธ์ ์ด๋ฐ์ ์ง์๋ ์์์ผ๋ฉด ์ธํ
ํ๋๋ ๋ชปํ์๊ฑฐ๊ณ ์ฌ๋ฌ๋ชจ๋ก ์ฐ์์ข์ํ์๊ฑฐ์์ ์ ํฌ ํ์
ํ์ดํ๋ผ์ธ ๊ตฌ์ถ ์ง๋ถ์ ์ ๋ฐ ์ด์์ ์ง์๋์ด ์ด๋ค๋ด์ฃผ์
จ์ด์ ์๋ง stage 4๋๋ ๊ทธ๋์ ์ง์๋์ด ์์ด์ค ์๋์งโ ๊ทธ๋ฌ๋๊น ๊ทธ๋๋ ์ฃผ๋ณ๋ถ๋ค๊ป ๋ฏธ์ํ ๊ฐ์ ๊ฐ์ง์ง ๋ง์๊ตฌ์๐ฅ ์๋ฌดํผ.. ๋ฌด์๋ณด๋ค๋ ํญ์ ๋จ๋ค์ด ๋ณด์ง ๋ชปํ๋ ๋ํ
์ผ์ ์บ์นํ์๋ ์ง์๋! ๋ค์์ ํ ๋๋ ์ข ๋ ํธํ๊ณ ์ฌ๋ฐ๊ฒ ๋ค๊ฐ์ด ์ด์ฌํ ํด๋ด
์๋ค ๐ฅฐ๐ (ํ๋ก์ ํธ ๊ฐ์ด ํ์ค๊ฑฐ์ฃ ? :innocent:) ๋๋ฌด ๊ฐ์ฌํ์ต๋๋ค~! [name=์ข
ํ][color=#1efbfb]
> ์ ๋ ์ง์๋ ๋ณด๋ฉด์ ์ ๋ง ํญ์ ๋๋จํ๋ค๊ณ ์๊ฐํ์ต๋๋ค. ์ง์๋์ด ์ง๊ธ๊น์ง ํด์ค์ ์ฑ์คํจ๋ ๊ทธ๋ ๊ณ , ํ์
์ ์ํํ๋ ๋ฐฉ์์ด๋ ๋๊ธฐ์๊ฒ ์ฝ๋ฉํ๋ ๋ชจ์ต ๋ชจ๋ ๋๋ฌด ๋ฉ์์์ด์. ์ง์๋ github์ ์๋ ๋ธ๋ก๊ทธ ๋ชฐ๋ ๋ค์ด๊ฐ์๋, ๊ณต๋ถ์ ํ์ ๋ค ๋ณด๋ฉด์ ์ ๋ง ๋ณธ๋ฐ๊ณ ์ถ๋ค๊ณ ์๊ฐํ์ต๋๋ค. ์ธํ๋ผ ๊ณต๋ถ๋ ์ฝ์ง ์๊ณ , dense retriever๋ ์ฝ์ง ์์์ํ
๋ฐ ๋๋ฌด๋๋ฌด ์ํด๋ด์ ์ง์๋์ด ํ์์ผ๋ก์ ์๋์ค๋ฝ๊ณ ๋ฟ๋ฏํฉ๋๋ค! ์ ๊ฐ ๋ณผ๋ ๋๊ตฌ๋ณด๋ค ๊ธฐ์ธ๊ธฐ๊ฐ ํฌ์ ๋ถ๊ฐ์ต๋๋ค(๊ฐ๋ฐ ๊ณต๋ถํ๋ ๋ง์ ์ฌ๋๋ค์ ๋ด์์ง๋ง ์ง์๋ ๊ฐ์ ๋ถ์ ์ ๋ง ์ ์์ผ์ธ์). ๊ทธ๋ฆฌ๊ตฌ elastic search๋ ์์จ๋ ์ ํฌ๊ฐ ์ด๊ฒผ์ต๋๋ค~ ์๋ง ์ฑ๋ฅ์ด ์ข๋คํด๋ ์ ๋ ์์ฐ๋ ๊ฒ ๋ ์ข์์๊ฑฐ๋ผ๊ณ ์๊ฐํด์. ์์ํดํ์ง ๋ง์์! [name=์ฑ์ต][color=#CDA096]
> ์ง์๋ ๋๋ฌด ๊ฒธ์ํ์ ๋ง์์ ๊ฐ์ง๊ณ ๊ณ์
์ ๋๋ ๊ธฐ์ฌํ๊ณ ์ถ์ดํด์ฃผ์ ๋๋ถ์ ์ ๋ ๊ทธ๋ฅ ์์์ ๋ฉ์ง ๋์ค๐ถ ๋ฆฌํธ๋ฆฌ๋ฒ์ ์ํค๋ฅผ ์ป์์ต๋๋ค.. ๊นํ๋ ์์ด์ง ๋๋ฌด ์ค๋๋ผ์ ์ฐ๊ธฐ๊ฐ ๋ฌด์์ ๋๋ฐ ๋จผ์ ์ ์ค๋นํด์ฃผ์
์ ์ฉ๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ์ปค๋ฐํ ์ ์์์ด์!! ์์ ์ฑ์ต๋๋ ๋ง์ํ์
จ์ง๋ง elastic search ์์ด๊ฑด ์์ฌ์ํ์ง ์์ผ์
๋ ๋ฉ๋๋น.. ์ด์ฐจํผ sparse retriever ๊ธฐ๋ฐ์ด๋ผ ์์ฌ์ํด์ผ ํ ์ฌ๋์ ์ ์ด๋ฏ๋ก...ใ
ใ
ใ
๊ทธ๋๋ ์ธ๋ถ API์ ์์กดํ์ง ์๊ณ ์ ํฌ๋ผ๋ฆฌ ์ผ์ฐ์ผ์ฐ ๊ฐ๋ฐํ๊ฒ ์ ๋ ๋ ์ข์๋ค๊ณ ์๊ฐํด์!! ๋ด๋น(?)์ด์๋ ์ ๋ ์์์ฌ์ฐ๋๊น ์ง์๋๋ ์์ฌ์ํ์ง ์๊ธฐ~ ๊ทธ๋ฆฌ๊ณ ์ด์ ๋ ๋ง์๋๋ ธ์ง๋ง ์นจ์ธํดํ์
จ๋ Dense retriever ์ฑ๋ฅ ์ ํฌ ํ์ด 1๋ฑ์ธ๊ฑฐ ์์์ฃ ..?ใ
ใ
๊ฐ์ ํ์ด์ด์ ๋๋ฌด ์ข์๋๋ฐ ํค์ด์ง๋ค๋ ๋๋ฌด ์์ฌ์์ ใ
ใ
์ ๋ฒ์ ๋ง์ํ์ ๊ฒ์ฒ๋ผ ์ ๋์
์ ๋์ค์ ๊ฐ์ด ๋ ํ๋ก์ ํธ ํ๋ฉด ์ข๊ฒ ์ด์! ๊ทธ ๋ ๋ง์ ๊ธฐ๋ค๋ ค๋ด
๋๋น :heart: [name=์์ฐ]
> Oํ์ด์ง๋ง Aํ ๊ฐ์ ์ง์๋! ์์ ๋๊ธ์ ์ฝ์ด๋ณด์๋ฉด ์์๊ฒ ์ง๋ง ์ง์๋์ ์ ๋ง ๋๋จํ ์ฌ๋์ด๋ ํ ์์ฃฝ์ผ์
๋ ๋ฉ๋๋ค!! ์ง์๋์ด ์ ๋๋จํ์๋๋ฉด ์ฒ์์ ํ์๋ค์ ์ํด์ Follow Up ํด์คฌ๋ ๊ฒ (Follow Up์ ์๋ฌด๋ ์ํ์ ๊ฑฐ ์์์ฃ ?) ๊ทธ๋ฆฌ๊ณ ZenHub ์ฌ์ฉ๊ณผ Baseline Code ๊ตฌ์ถํ ์ ์๋๋ก ํฐ ์๊ฒฌ์ ์ค์ด ์ฃผ์๊ธฐ๋ ํ๊ตฌ์! ๊ทธ๋ฆฌ๊ณ Hybrid Retrieval์ ๊ตฌํํ๊ฒ ๋ค๊ณ ๋ง์ํ์
จ๋ ๊ฒ (1๋ฑ ๋ฆฌํธ๋ฆฌ๋ฒ!) ๊ทธ๋ฆฌ๊ณ ETRI API ์ฌ์ฉ๊น์ง!! ( ETRI๊ฐ ์ ์ฉ๋๋ค๋ฉด ์ฑ๋ฅ ํฅ์์ ํฐ ๋์์ด ๋์ ๊ฒ๋๋ค!) ๊ณฐ๊ณฐ์ด ์ ์๊ฐํด๋ณด๋ฉด ์ฑ๋ฅ ํฅ์์ ํฐ ๊ธฐ์ฌ๊ฐ ๋๋ ์์ด๋์ด์ ๋ฌผ๊ผฌ๋ ๋ค ์ง์๋ํํ
์์๋๋ ๊ฒ ๊ฐ๋ค์! ์ง์๋ ๊ตฌํ์ ์ต์ํด์ง๋ฉด ๋๊ตฌ๋ ํ๊ฒ ๋๋ ๊ฑฐ์ง๋ง ์ณ์ ๋ฐฉํฅ์ผ๋ก ์ด๋๋ ๊ฒ์ ์๋ฌด๋ ๋ชปํ๋ ๊ฒ๋๋ค. ๊ทธ๊ฑฐ ๋จธ๋ฆฌ ์ข์ ์ฌ๋๋ง ํ๋๊ฑฐ์์.. ๊ทธ๋ฌ๋ ๋์ค์ ๊ฐ์ด ํ๋ก์ ํธ ํ ๋๋ ์์ ๊ฐ ๋์น๋ ๋ชจ์ต์ผ๋ก ๋ดค์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค! ์ด๋ฒ ์คํ
์ด์ง ์ ๋ง ๊ณ ์ํ์
จ์ต๋๋ค!!! [name=๊ฑด๋ชจ][color=#79f96d]