# VumBleBot Wrap Up Report ![vumblebot-logo](https://i.imgur.com/ch7hFii.png) :::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์˜ ์ข…๋ฅ˜๋ฅผ ๋‚˜๋ˆ  ๊ด€๋ฆฌ**ํ•˜๊ณ ์ž ํ–ˆ์Šต๋‹ˆ๋‹ค. ![zenhub](https://i.imgur.com/BcFqUrW.png) [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์— ํ• ๋‹นํ•ด๋‘์–ด ํ•ด๋‹น ์ฃผ์ฐจ์˜ ๋ชฉํ‘œ ๋‹ฌ์„ฑ์—ฌ๋ถ€๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ![issue-close](https://i.imgur.com/qTaClwo.png) #### Gather Town **PeerSession** ์ดํ›„ **==๊ฐœ์ธ/ํŒ€==์œผ๋กœ ๋ชจ์—ฌ์„œ ์ง ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋˜๋Š” ํ† ์˜**ํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ์Šต๋‹ˆ๋‹ค. ![gather-town](https://i.imgur.com/6o0gNRj.png) #### ํšŒ์˜๋ก ๋ฐ 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)๋“ฑ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ณต์œ ํ•˜์—ฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค. ![documents](https://i.imgur.com/Y6aApvL.png) ### :atom_symbol: ํ•˜๋‚˜์˜ ์ฝ”๋“œ > **"ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์–ด๋–จ๊นŒ์š”? ๊ทธ๊ฒŒ ์ง„์งœ ํ˜‘์—… ๊ฐ™์€๋ฐ"** ![team-01](https://i.imgur.com/iaWJAYO.png) #### :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**๊ฐ€ ํŒ€์›์˜ ์ฝ”๋“œ๋ฅผ ์ฝ๊ณ  ๋ถ„์„ํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•จ์œผ๋กœ์จ ==๊ธฐ์ˆ ๋ถ€์ฑ„==๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค. ![code-review](https://i.imgur.com/Qa0m4BM.png) #### :pushpin: ๋ˆˆ์œผ๋กœ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ ![utils-qa-refactoring](https://i.imgur.com/AMJWZfL.png) ์œ„์˜ ๋‘ ์ฝ”๋“œ๋Š” **๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ**์ž…๋‹ˆ๋‹ค. **๋‹จ์ผ ๊ธฐ๋Šฅ ๋ถ„๋ฆฌ**๋ฐ **์„ธ๋ถ€ ๊ธฐ๋Šฅ์„ ์ˆจ๊ธฐ์ง€ ์•Š์Œ**์œผ๋กœ์จ ๋ˆˆ์œผ๋กœ ์‰ฝ๊ฒŒ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค. #### :pushpin: ๊พธ์ค€ํ•œ ๋ฆฌํŒฉํ† ๋ง **์ด๋ฏธ ๊ตฌํ˜„๋œ ๊ธฐ๋Šฅ์„ ์‘์ง‘๋ ฅ, ๊ฒฐํ•ฉ๋ ฅ์„ ๊ณ ๋ คํ•˜์—ฌ ์žฌ์ž‘์„ฑํ•˜๊ณ  ๋ฐฉ์–ด์ ์ธ ์ฝ”๋“œ**๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๊พธ์ค€ํžˆ ๋ฆฌํŒฉํ† ๋ง์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ![refactoring](https://i.imgur.com/rwRwYqC.png) ### :atom_symbol: ์ฒด๊ณ„์ ์ธ ์‹คํ—˜ #### :pushpin: Key, Value๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์‹คํ—˜ ์ „๋žต **JSON**์„ ์‚ฌ์šฉํ•˜์—ฌ **์‹คํ—˜ ํ™˜๊ฒฝ์„ ๊ด€๋ฆฌ**ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ![retriever](https://i.imgur.com/BuA6zcX.png) 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 ``` ![retriever-compare-top-k](https://i.imgur.com/2iHdE5f.png) #### :pushpin: Slack Bot์„ ์‚ฌ์šฉํ•œ ์‹คํ—˜ ๊ณต์œ  ![slack-bot](https://i.imgur.com/S426Tb2.png) **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์œผ๋กœ ๋งŒ๋“ค์–ด์„œ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ![](https://i.imgur.com/L46OgKe.png) ๋จผ์ € Answer๊ฐ€ Document์—์„œ ์œ„์น˜ํ•˜๋Š” ๊ณณ์€ Wiki ๋ฐ์ดํ„ฐ์…‹์ด๋‚˜ KorQuAD ๋ฐ์ดํ„ฐ์…‹ ๋ชจ๋‘ **๋น„๊ต์  ๋ฌธ์„œ์˜ ์•ž์ชฝ ๋ถ€๋ถ„์—์„œ ์ •๋‹ต์ด ๋“ฑ์žฅ**ํ–ˆ์Šต๋‹ˆ๋‹ค. ![](https://i.imgur.com/nwvff8e.png) ๊ทธ๋Ÿฌ๋‚˜ 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๋กœ ์‹œ๊ฐํ™” ![](https://i.imgur.com/c8QlRB0.png) 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 ![](https://i.imgur.com/EZFK36o.png) ### :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)์„ ์ด์šฉํ•œ ์ง€ํ‘œ**์ž…๋‹ˆ๋‹ค. ![](https://i.imgur.com/XDMo7hL.png) ์ด ๋•Œ **$t$๋Š” ๋‹จ์–ด(term), $d$๋Š” ๋ฌธ์„œ, $D$๋Š” ์ „์ฒด ๋ฌธ์„œ์˜ ์ˆ˜**๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ฒ ์ด์Šค๋ผ์ธ ์ฝ”๋“œ์—์„œ ๊ตฌํ˜„๋œ TF-IDF ๊ธฐ์ค€, top1์—์„œ 22.08%์˜ ์ •ํ™•๋„๋ฅผ, top30์—์„œ 63.75์˜ ์ •ํ™•๋„๋ฅผ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ###### :rocket: BM25 BM25 ์—ญ์‹œ ๋‹จ์–ด์˜ ๋“ฑ์žฅ ๋นˆ๋„๋ฅผ ํ™œ์šฉํ•œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. BM25์—์„œ ์ฃผ๋ชฉํ• ๋งŒํ•œ ์ ์€, ๊ธธ์ด๊ฐ€ ๊ธด ๋ฌธ์žฅ๋“ค์ด **๋งŽ์€ ๋‹จ์–ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ์œผ๋กœ ์ธํ•ด์„œ ๊ฐ€์ง€๊ฒŒ ๋˜๋Š” ==์šฐ์œ„๋ฅผ ์กฐ์ •==ํ•˜๊ธฐ ์œ„ํ•ด ๋ฌธ์„œ์˜ ๊ธธ์ด๋ฅผ ์ „์ฒด ๋ฌธ์„œ ๊ธธ์ด์˜ ํ‰๊ท ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ฃผ๋Š” ๋ถ€๋ถ„์„ ์ถ”๊ฐ€**ํ–ˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ![](https://i.imgur.com/IKaVh3Y.png) ์œ„ ์‹์—์„œ ๋ถ„๋ชจ ๋ถ€๋ถ„์— $D$๋ฅผ $\mathrm{avgdl}$๋กœ ๋‚˜๋ˆ„์–ด ์ฃผ๋Š” ๋ถ€๋ถ„์ด ํฌํ•จ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ์‹์˜ ์˜ํ–ฅ๋ ฅ์„ ์กฐ์ •ํ•ด์ฃผ๋Š” ๋ณ€์ˆ˜๋กœ $k_1$๊ณผ $b$๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ![](https://i.imgur.com/HdUM6nZ.png) > ๊ฐ€๋กœ์ถ•์€ TOP-K, ์„ธ๋กœ์ถ•์€ Accuracy๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. TFIDF์™€ BM25์˜ ์„ฑ๋Šฅ์„ ๋น„๊ตํ•œ ๊ฒฐ๊ณผ, BM25๊ฐ€ TFIDF์— ๋น„ํ•ด ์„ฑ๋Šฅ์ด ์ข‹์•„์„œ ์ตœ๊ณ  ์„ฑ๋Šฅ์˜ Retriever๊ฐ€ ๋“ฑ์žฅํ•˜๊ธฐ ์ „๊นŒ์ง€ BM25๋ฅผ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. ##### Sparse Retriever ์‹คํ—˜ 2: Term vocab์„ ๊ตฌ์„ฑํ•  ๋•Œ `max_features`๋ฅผ ์ฃผ๋Š” ๊ฒƒ์ด ์ข‹์„๊นŒ? ![](https://i.imgur.com/WlPSkeH.png) > TOP-K๊ฐ€ ํฌ๊ณ  xticklabel์„ ๊ทธ๋Œ€๋กœ ์ž…๋ ฅํ•˜์—ฌ ๊ฐ€๋…์„ฑ์ด ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. TOP-K 1000์œผ๋กœ ํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. ๋ฒ ์ด์Šค๋ผ์ธ ์ฝ”๋“œ์—์„œ๋Š” `sklearn` ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ œ๊ณตํ•˜๋Š” `max_features` argument๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ vocabulary์˜ ํฌ๊ธฐ๋ฅผ ์ œํ•œํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, term frequency๊ฐ€ ๋†’์€ ์ˆœ์œผ๋กœ vocabulary์— ํฌํ•จ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ ๊ฒŒ ๋‚˜์˜จ term๋“ค์ด ํฌํ•จ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ด์Šˆ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด **์ค‘์š”ํ•œ term๋“ค์ด ๋ˆ„๋ฝ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด์„œ `max_features` argument๋ฅผ ์—†์• ๊ณ  ์‹คํ—˜ํ–ˆ๋”๋‹ˆ ์„ฑ๋Šฅ์ด ๋Œ€ํญ ์ƒ์Šน**ํ–ˆ์Šต๋‹ˆ๋‹ค. ##### Sparse Retriever ์‹คํ—˜ 3: ํ† ํฌ๋‚˜์ด์ €์— ๋”ฐ๋ผ ์„ฑ๋Šฅ์ด ๋‹ค๋ฅผ๊นŒ? ![](https://i.imgur.com/9nI9rEH.png) 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๋ฅผ ๊ตฌํ˜„**ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ![](https://i.imgur.com/QAEQ3vf.png) ์„ธ ๊ฐ€์ง€ ๋ฒ„์ „์˜ 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 ์ˆ˜์ค€์˜ ์ƒํ˜ธ์ž‘์šฉ์œผ๋กœ ๋ฌธ์„œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•**์ž…๋‹ˆ๋‹ค. ![dense-retriever-types](https://i.imgur.com/31qvUgF.png) > 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-vector](https://i.imgur.com/1ie7JQf.png) **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 ์„ฑ๋Šฅ ๋น„๊ต ![fig_image](https://user-images.githubusercontent.com/46434838/119213643-b881bd00-bafb-11eb-9c13-2f3f4fa68783.png) ๋‹ค์–‘ํ•œ 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](https://i.imgur.com/8lfkCB0.png) Dense based head๋Š” QuestionAnswering task์—์„œ ๊ฐ€์žฅ ๋ฒ”์šฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” head ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. weight parameter ์ˆ˜๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ์ ์€ ํŽธ์ด๋ผ ์ฒ˜์Œ์—๋Š” ์ด ํ—ค๋“œ๊ฐ€ ๋งŽ์€ ์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•ด๋‚ด์ง€ ๋ชปํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ์˜์™ธ๋กœ ๋‹ค๋ฅธ ํ—ค๋“œ์™€ ์ถฉ๋ถ„ํžˆ ๊ฒฌ์ค„ ์ˆ˜ ์žˆ์„๋งŒํ•œ ์„ฑ๋Šฅ์„ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. backbone์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ด๋ฏธ ๊ฑฐ๋Œ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— head์˜ input vector์—๋Š” ์ด๋ฏธ ๋งŽ์€ ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์žˆ์–ด ์ž˜ ๋™์ž‘ํ–ˆ๋˜ ๊ฒƒ์œผ๋กœ ์ถ”์ธก๋ฉ๋‹ˆ๋‹ค. ํ—ค๋“œ์—๋Š” ์˜คํžˆ๋ ค ๋…ธ์ด์ฆˆ ์—†์ด ์–‘์งˆ์˜ vector๊ฐ’๋งŒ ๋“ค์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€์ ์ธ ๋ ˆ์ด์–ด๋ฅผ ํ†ตํ•œ input ๊ฐ’์˜ ํฐ ์กฐ์ •์ด ํ•„์š”ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ##### :rocket: CNN based ![CNN](https://i.imgur.com/gGSIeYv.png) CNN ๊ธฐ๋ฐ˜ ๋ชจ๋ธ์€ **'start/end logit์„ ๊ตฌํ•  ๋•Œ ํ•œ ๊ฐœ์˜ word token๋งŒ ๋ด๋„ ๋˜๋Š”๊ฑธ๊นŒ?'๋ผ๋Š” ์˜๋ฌธ**์—์„œ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Dense based head๋Š” ํ† ํฐ ํ•œ ๊ฐœ์˜ ์ž„๋ฒ ๋”ฉ(768์ฐจ์›)์„ input์œผ๋กœ ๋ฐ›์•„ ํ•ด๋‹น ํ† ํฐ์— ๋Œ€ํ•œ start logit๊ณผ end logit์„ ๋‚ด๋†“์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์‹ค์ œ ๋‹ต์€ ๋Œ€๋ถ€๋ถ„ 2๊ฐœ ์ด์ƒ, ๋งŽ๊ฒŒ๋Š” 10๊ฐœ ์ด์ƒ์˜ ํ† ํฐ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด dense layer์˜ ์•ฝ์ ์€ ๋ฌด์—‡์ผ๊นŒ์š”? ์˜ˆ๋ฅผ ๋“ค์–ด ์•„๋ž˜์™€ ๊ฐ™์€ ์งˆ๋ฌธ์„ ๋ด…์‹œ๋‹ค. ``` ๋ฐ•์ง€ํ›ˆ์€ 1๋ผ์šด๋“œ์—์„œ ๋ช‡ ์ˆœ์œ„๋ฅผ ์ฐจ์ง€ํ–ˆ๋Š”๊ฐ€? ``` ์ด ์งˆ๋ฌธ์˜ ์ •๋‹ต์€ `์ „์ฒด 4์ˆœ์œ„`์ž…๋‹ˆ๋‹ค. ํŠœ๋‹ ์ด์ „์˜ ๋ชจ๋ธ์€ ์ด์— ๋Œ€ํ•œ ๋‹ต์œผ๋กœ `4์ˆœ์œ„`๋ฅผ ์˜ˆ์ธกํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ธก์ด ์™„์ „ํžˆ ํ‹€๋ฆฐ ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ, **๋ณด๋‹ค ๋””ํ…Œ์ผํ•œ ์ •๋ณด๋ฅผ ์™„๋ฒฝํžˆ ๋‹ด์•„๋‚ด์ง€๋Š” ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.** ์ €ํฌ๋Š” ๊ทธ ์ด์œ ๊ฐ€ ==๋ชจ๋ธ์ด ๋กœ์ง“๊ฐ’์„ ๋‚ด๋†“์„ ๋•Œ ํ† ํฐ ํ•œ ๊ฐœ๋งŒ์„ ๋ณด์•˜๊ธฐ ๋•Œ๋ฌธ==์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ![CNN in NLP](https://i.imgur.com/Fs4DLeH.png) > [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% ๊ฐ€๋Ÿ‰์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ**์„ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ![CNN_visualization](https://i.imgur.com/XXxmzj2.png) > Validation set ๊ธฐ์ค€ F1 score ๋ฐ EM score ##### :rocket: CNN_v2 ![CNN_v2](https://i.imgur.com/I47QfQZ.png) ์ด์ „ 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 ๊ธฐ์ค€ ์‹œ๊ฐํ™”ํ•ด๋ณด์•˜์„ ๋•Œ ์–ด๋А์ •๋„ ์˜๋ฏธ์žˆ๋Š” ์„ฑ๋Šฅ ์ง€ํ‘œ๋ฅผ ๋ณด์˜€๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ![CNN_v2_visualization](https://i.imgur.com/dHhZ692.png) > Validation set ๊ธฐ์ค€ F1 score ๋ฐ EM score > ํ•™์Šต step์ˆ˜๊ฐ€ ์ƒ์ดํ•˜์—ฌ train_samples_per_second๋Š” ๋ฐ”๋ฅด๊ฒŒ ์ถœ๋ ฅ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ##### :rocket: CNN-LSTM based ![CNN-LSTM](https://i.imgur.com/z0oLPD5.png) 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 ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ**๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ![CNN-LSTM_visualization](https://i.imgur.com/NNu6reV.png) > 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 ... ๋ธŒ๋ผ์งˆ ํฌ๋ฅดํˆฌ๊ฐˆ์–ด์™€ ์œ ๋Ÿฝ ํฌ๋ฅดํˆฌ๊ฐˆ์–ด๋Š” ํ˜„์žฌ ๋ณ„๋„์˜ ์œ ์‚ฌํ•œ ์ฒ ์ž ํ‘œ์ค€์„ ๊ฐ๊ฐ ๋‘๊ณ  ์žˆ๋‹ค ... ``` ์œ„ ์˜ˆ์‹œ์—์„œ๋Š” `ํฌ๋ฅดํˆฌ๊ฐˆ`๊ณผ `##์–ด` ํ† ํฐ์ด ์งˆ๋ฌธ๊ณผ ์ง€๋ฌธ์— ๊ณตํ†ต์œผ๋กœ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ง€๋ฌธ์˜ ํ•ด๋‹น ํ† ํฐ ์œ„์น˜์— ๊ธฐํ•™์Šต๋œ ์ž„๋ฒ ๋”ฉ ๊ฐ’์„ ๋”ํ•ด์ค๋‹ˆ๋‹ค. ![exact-match](https://i.imgur.com/9KmkCoZ.png) ์ผ์น˜/๋ถˆ์ผ์น˜ ์—ฌ๋ถ€๋กœ binary ํ† ํฐ($E_0$ ํ˜น์€ $E_1$)์„ ๋”ํ•ด์ฃผ๋Š” ๋ฐฉ์‹๋„ ์ƒ๊ฐํ•ด๋ณด์•˜์ง€๋งŒ, ์ €ํฌ๋Š” ์œ„์™€ ๊ฐ™์ด **ํ† ํฐ์˜ ์œ„์น˜๋ณ„๋กœ EM feature์˜ ๊ฐ’์„ ๋‹ฌ๋ฆฌํ•˜์—ฌ** ๋”ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ์„  ์ •๋‹ต ์œ„์น˜๊ฐ€ ์งˆ๋ฌธ๋ณ„๋กœ ๊ณ ๋ฅด๊ฒŒ ํผ์ ธ์žˆ์„ ๊ฒฝ์šฐ ์ „์ฒด ์œ„์น˜์˜ EM embedding์ด ๋น„์Šทํ•œ ๊ฐ’์œผ๋กœ ํ•™์Šต๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค(binary์™€ ๋น„์Šทํ•œ ํšจ๊ณผ). ๊ทธ๋ฆฌ๊ณ  **๋งŒ์•ฝ ์„œ๋กœ ๋‹ค๋ฅธ ์ง€๋ฌธ๋“ค์—์„œ ์ •๋‹ต์ด ๋น„์Šทํ•œ ๊ณณ์— ์œ„์น˜ํ•œ๋‹ค๋ฉด, binary๋กœ ๋”ํ•ด์ค„ ๋•Œ๋ณด๋‹ค ์ง€๊ธˆ์˜ ๋ฐฉ์‹์ด ๋ชจ๋ธ์—๊ฒŒ ๋” ๊ฐ•๋ ฅํ•œ ํžŒํŠธ๋ฅผ ์ค„ ์ˆ˜ ์žˆ์„ ๊ฒƒ**์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์ด EM embedding์„ ๋”ํ•ด์ฃผ๋ฉด, ๊ถ๊ทน์ ์œผ๋กœ ์ง€๋ฌธ์ด ์ •๋‹ต์„ ์ฐพ์„ ๋•Œ ์–ด๋А ๋ถ€๋ถ„์ด ์ฐพ๊ณ ์žํ•˜๋Š” ๋‹ต๊ณผ ์—ฐ๊ด€๋˜์–ด์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ  ๋…ผ๋ฌธ์—์„œ๋„ ๊ฐ•๋ ฅํ•œ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ œ์‹œํ•˜์˜€๊ณ  ์‹ค์ œ๋กœ๋„ ์˜๋ฏธ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์•„์‰ฌ์› ๋˜ ์ ์€, ์ด๋Ÿฌํ•œ ์ž„๋ฒ ๋”ฉ์„ ํ•จ๊ป˜ ํ™œ์šฉํ•˜์˜€๋Š”๋ฐ๋„ ์ด์ „๊ณผ ์„ฑ๋Šฅ์€ ๋น„์Šทํ•˜์˜€๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์›์ธ ๋ถ„์„์„ ํ•ด๋ณด์ž๋ฉด, ##### 1. backbone๊ณผ head ์‚ฌ์ด์—์„œ EM embedding์„ ๋”ํ•ด์ฃผ์—ˆ๋‹ค. ์ €ํฌ๊ฐ€ ํ™œ์šฉํ•œ ๋ชจ๋ธ ๊ตฌ์กฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ![em-architecture](https://i.imgur.com/yvp7g31.png) ์ฒ˜์Œ์—๋Š” 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](https://i.imgur.com/tghG4Cr.png) > 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](https://i.imgur.com/G3mBicB.png) #### 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](https://i.imgur.com/dxxpyDa.png) ํ•™์Šต ํ•  ๋•Œ๋Š” **์ „์ฒด Logits์— SoftMax๋ฅผ ์”Œ์šด ํ›„ ์ •๋‹ต Index์™€ CrossEntropy๋ฅผ ํ•˜์—ฌ Loss๊ฐ’์„ ๊ณ„์‚ฐ**ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ถ”๋ก  ํ•  ๋•Œ๋Š” **์ „์ฒด Logits์—์„œ ์˜๋ฏธ์žˆ๋Š” Logit๋งŒ ์—ฌ๋Ÿฌ ๊ฐœ ๋ฝ‘์Šต๋‹ˆ๋‹ค.** ์—ฌ๊ธฐ์„œ ๋ฐœ์ƒํ•˜๋Š” **๋ฌธ์ œ์ ์€ ๋ชจ๋ธ๋งˆ๋‹ค ์˜๋ฏธ์žˆ๋Š” Logit์˜ ๊ฐœ์ˆ˜**๊ฐ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. Soft Voting์„ ์œ„ํ•ด์„œ ๊ฐ ๋ชจ๋ธ์˜ **Logit๊ฐ’์„ ๋”ํ•˜๊ฑฐ๋‚˜ ํ™•๋ฅ  ๊ฐ’์„ ๋”ํ•ด์ฃผ์–ด์•ผ** ํ•˜์ง€๋งŒ **Logit์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ๊ฐ ๋‹ฌ๋ผ์„œ ํ™•๋ฅ  ๊ฐ’์„ ๋”ํ•ด์ฃผ๋Š” ๊ฒƒ์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.** > SoftMax์‚ฌ์šฉ ์‹œ ํ† ํฐ ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ ํ™•๋ฅ  ๋ถ„ํฌ๊ฐ€ ํŠˆ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ![important-logits](https://i.imgur.com/nqMymWr.png) Logit ์‚ฌ์šฉ์‹œ ์œ ์˜ํ•  ์ ์€ **Logit์˜ ๋ถ„ํฌ๋˜ํ•œ ๋ชจ๋ธ๋งˆ๋‹ค ๋‹ค๋ฅด๋‹ค**๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ชจ๋ธ๋งˆ๋‹ค Logit ๋ถ„ํฌ๋ฅผ ๋งž์ถฐ์ฃผ๊ธฐ ์œ„ํ•ด์„œ ๋ชจ๋ธ ์ „์ฒด Logit์„ ๋Œ€์ƒ์œผ๋กœ **Standardization**๋ฅผ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. **๋ฌธ์ œ 2:** Tokenizer๋งˆ๋‹ค **๋‹ค๋ฅธ Token**์„ ์ƒ์„ฑํ•œ๋‹ค. Tokenizer๋งˆ๋‹ค ๋‹ค๋ฅธ ํ† ํฐ์„ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ† ํฐ ๋‹จ์œ„๋กœ **Soft Voting**์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. > ๋‹ค๊ตญ์–ด Bert Tokenizer : "[ํ•˜, ##์›์˜]", > Koelectra Tokenizer : "[ํ•˜์›]" ![offset](https://i.imgur.com/s0AMadI.png) ๊ทธ๋ž˜์„œ **๋งˆ์ง€๋ง‰ ํ›„์ฒ˜๋ฆฌ ๋‹จ๊ณ„์ธ 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"] ``` ![soft-offset](https://i.imgur.com/wQHMBfb.png) ์ •๋‹ต์„ ์˜ˆ์ธกํ•  ๋•Œ๋Š” 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 ``` ![span-ensemble](https://i.imgur.com/ALoCTNc.png) ์ •๋‹ต์„ ์˜ˆ์ธกํ•  ๋•Œ๋Š” 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]