๐ ๋ชจ๋ธ ํ์ต ์ฝ๋์ ๊ดํ ์ค๋ช ์ code ํด๋๋ฅผ, ์คํ ์ฝ๋๋ notebookํด๋๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์!
- COVID-19๋ ๊ฐ์ผ์์ ์ , ํธํก๊ธฐ๋ก๋ถํฐ ๋์ค๋ ๋น๋ง, ์นจ ๋ฑ์ผ๋ก ์ฝ๊ฒ ์ ํ๋๋ค.
- COVID-19์ ๊ฐ์ผ ํ์ฐ์ ๋ง๊ธฐ ์ํด์๋ ๋ชจ๋ ์ฌ๋์ด ๋ง์คํฌ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฐฉ์ฉํ์ฌ ์ ํ ๊ฒฝ๋ก๋ฅผ ์์ฒ ์ฐจ๋จํด์ผ ํ๋ค.
- ์ฌ๋ฐ๋ฅด๊ฒ ์ฐฉ์ฉํ๋ค๋ ๊ฒ์ ์ฝ์ ์ ์ ์์ ํ ๊ฐ๋ฆฌ๋ ๊ฒ์ ๋งํ๋ค.
- ๋์ ๊ณต๊ณต์ฅ์์์ ๋ชจ๋ ์ฌ๋๋ค์ ์ฌ๋ฐ๋ฅธ ๋ง์คํฌ ์ฐฉ์ฉ ์ํ๋ฅผ ๊ฒ์ฌํ๊ธฐ ์ํด์๋ ์ถ๊ฐ์ ์ธ ์ธ์ ์์์ด ํ์ํ๋ค.
์นด๋ฉ๋ผ๋ก ๋น์ถฐ์ง ์ฌ๋ ์ผ๊ตด ์ด๋ฏธ์ง ๋ง์ผ๋ก ์ด ์ฌ๋์ด ๋ง์คํฌ๋ฅผ ์ฐ๊ณ ์๋์ง, ์ฐ์ง ์์๋์ง, ์ ํํ ์ด ๊ฒ์ด ๋ง๋์ง๋ฅผ ๋ถ๋ฅํ๋ ๋ชจ๋ธ
- input:ย ย ํฌ๊ธฐ์ ๋ง์คํฌ๋ฅผ ์ด ์ฌ๋์ ์ผ๊ตด ์ด๋ฏธ์ง (384, 512)
- output: 18๊ฐ์ ํด๋์ค (๋ง์คํฌ ์ฐฉ์ฉ์ฌ๋ถ, ์ฑ๋ณ, ๋์ด)๋ก ๋ํ๋ผ ์ ์๋ ์กฐํฉ
Public LB
: ๋ฑ์ 40๋ฑ | ์ ํ๋ 80.4762% | F1-Score 0.7625Private LB
: ๋ฑ์ 38๋ฑ | ์ ํ๋ 80.5238% | F1-Score 0.7506
- train์ ์ด 2700๊ฐ์ ๋ฐ์ดํฐ์ 5๊ฐ์ ํผ์ฒ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ๊ฐ ๋ฐ์ดํฐ๋ง๋ค ๋ง์คํฌ ์ด ์ด๋ฏธ์ง 5๊ฐ, ๋ง์คํฌ๋ฅผ ์ด์ํ๊ฒ ์ด ์ด๋ฏธ์ง 1๊ฐ, ๋ง์คํฌ๋ฅผ ์ ์ด ์ด๋ฏธ์ง 1๊ฐ ์ด 7๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ง๋ค.
- eval์ 12600๊ฐ์ ๋ฐ์ดํฐ์ 2๊ฐ์ ํผ์ฒ๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ํผ์ฒ 2๊ฐ๋ ์ด๋ฏธ์ง id์ ํด๋์ค ๋ผ๋ฒจ์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ฑ๋ณ/๋์ด/๋ง์คํฌ ์ฐฉ์ฉ์ฌ๋ถ 3๊ฐ์ง๋ฅผ ์์ธกํด์ผํ๋ค๋ ๊ณํ์ ์ณ์ ๊ฒ์ผ๋ก ํ๋จ๋๋ค.
train.csv
๋ id, gender, race, age, path๋ก ์ด 5๊ฐ์ ํผ์ฒ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ๊ฐ ํผ์ฒ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฐ(value)๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
- gender๋ male๊ณผ female๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
- race๋ ์ค์ง Asian ํ๋์ value๋ก๋ง ๊ตฌ์ฑ๋์ด ์๋ค. โ ํ์ต ์ ํฐ ์๋ฏธ๊ฐ ์์ผ๋ฏ๋ก ์ ๊ฑฐํ์.
- age๋ ์ ์์ด๊ณ 18๋ถํฐ 60๊น์ง์ ์ ์๊ฐ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
- ์ฌ์ฑ์ด ๋จ์ฑ๋ณด๋ค ์ฝ 1.5๋ฐฐ ์ ๋ ๋ง์ผ๋ฉฐ, 20๋ ์ด๋ฐ๊ณผ 50๋ ์คํ๋ฐ์ ์ฌ๋์ด ๋ง๋ค.
- ํ๊ฒ๊ฐ์ผ๋ก 30๋ ๋ฏธ๋ง, 30๋ ์ด์ 60๋ ๋ฏธ๋ง, 60๋ ์ด์์ผ๋ก ๋๋์ด
age_bin
์ด๋ผ๋ ์๋ก์ด ํผ์ฒ๋ฅผ ์์ฑํ์ผ๋ฉฐ, ๊ฐ๊ฐ์ 0, 1, 2์ ๋์๋๋ค. 60๋ ์ด์์ ๊ฒฝ์ฐ 60์ด ๋ฐ์ ์์ผ๋ฏ๋ก ๋ค๋ฅธ ๊ฐ์ ๋นํด ๋ฐ์ดํฐ์ ๊ฐ์๊ฐ ํ์ ํ ๋ฎ๋ค. - ์ฌ์ฑ/๋จ์ฑ์ ๋ฐ๋ผ ๋์ด์ ๋ถํฌ๊ฐ ๋ฌ๋ผ์ง์ง ์์์ผ๋ย
age_bin=1
์ ๋์ํ๋ ๊ทธ๋ฃน์ด ๊ฑฐ์ 2๋ฐฐ ๊ฐ๊น์ด ์ฌ์ฑ์ด ๋ ๋ง์๋ค. - ์ฑ๋ณ, ๋์ด๋, ๋ง์คํฌ ์ฐฉ์ฉ์ฌ๋ถ๋ฅผ ๊ฐ์ง๊ณ ๊ฐ ํด๋์ค ๋ผ๋ฒจ ๋ณ ๊ฐ์๋ฅผ ์ธ์ด๋ณด์๋ค. ๋ง์คํฌ๋ฅผ ์ด ์ด๋ฏธ์ง์ ๊ฐ์๊ฐ ๋ง์ผ๋ ๋ง์คํฌ๋ฅผ ์ด ๋ผ๋ฒจ์ ๊ฐ์ง ๋ฐ์ดํฐ์ ๊ฐ์๊ฐ ๋ง์์ผ๋ฉฐ ๋๋จธ์ง๋ ์์ ๋ณธ ๋ถํฌ๋ฅผ ๋ฐ๋๋ค.
- ๋ฐ์ดํฐ์ ๋ถํฌ๊ฐ ๋งค์ฐ ๋ถ๊ท ํํ๋ฏ๋ก ๋ฐ์ดํฐ์ ๋ถํฌ์ ๋ง์ถ ๊ฒ์ฆ ๋ฐ์ดํฐ๊ฐ ํ์ํจ์ ๋๊ผ๋ค. ๊ทธ๋์ Scikit-learn์ StratifiedKFold๋ฅผ ์ฌ์ฉํด ๊ต์ฐจ ๊ฒ์ฆํ๋ ์ฝ๋๋ฅผ ๊ตฌํํ์๋ค.
์ ํ๋ 79.7778%, F1 Score 0.7575
key | value |
---|---|
model |
EfficientNet-b4 |
criterion |
CrossEntropyLoss |
optimizer |
MadGrad |
batch size |
16 |
learning rate |
1e-6 |
epoch per fold |
4 |
seed |
525 |
augmentation |
CenterCrop(380), Normalize |
- ResNet101๊ณผ EfficientNet์ ๋น๊ต ์คํํ ๊ฒฐ๊ณผ EfficientNet์ด F1 Score์ ์ ํ๋ ๋ชจ๋์์ ๋ ์ข์ ์ฑ๋ฅ์ ๋ณด์ฌ์ ์ฌ์ฉํ๋ค. ํ์ต ์๊ฐ๊ณผ ์ด๋ฏธ์ง ์ฌ์ด์ฆ๋ฅผ ๊ณ ๋ คํ์ ๋, ์๊ฐ ๋๋น ์ฑ๋ฅ์ด ์ ๋์ค๋ Efficientnet-b4 ๋ชจ๋ธ์ ์ ํํ๋ค.
- optimizer๋ก ๊ธฐ์กด Adam์ฒ๋ผ ๋น ๋ฅด๊ฒ ์๋ ดํ๋ฉด์ SGD์ ๊ฐ์ ์ฑ๋ฅ์ด ๋๋ MadGrad๋ฅผ ์ ํํ๋ค. ํ์ต ์๊ฐ์ ๋น์ทํ๋ Adam๋ณด๋ค๋ ์กฐ๊ธ ๋ ๋์ ์ฑ๋ฅ์ ๋ณด์ฌ์คฌ๋ค.
- seed๋ก 42, 2021, 525๋ฅผ ์ค์ ํ๋๋ฐ, seed์ ๋ฐ๋ผ F1 Score ๊ฐ์ด ์์์ ๋์งธ ์๋ฆฌ์์ ์๋ค๊ฐ๋ค ํ๋ค. ์๋ฌด๋๋ ๋ฐ์ดํฐ๊ฐ ๋งค์ฐ ๋ถ๊ท ํํ๊ณ ํนํ ์ฐ์์ ์ธ ๊ฐ์ธ ๋์ด ํผ์ฒ๋ฅผ ์ต์ง๋ก ์นดํ ๊ณ ๋ฆฌ ํผ์ฒ๋ก ๋๋ด๊ธฐ ๋๋ฌธ์ ์กฐ๊ทธ๋งํ ๋ณํ์๋ ๋ชจ๋ธ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น๋ ๊ฒ์ผ๋ก ๋ณด์๋ค.
- The Marginal Value of Adaptive Gradient Methods in Machine Learning์ ๋ฐ๋ฅด๋ฉด, MadGrad๊ฐ SGD์ Adam์ ์ฅ์ ์ ์์ ๋ฐฉ๋ฒ์ด์ง๋ง, Adaptive Method์ด๊ธฐ ๋๋ฌธ์ SGD๋ณด๋ค๋ ์ฑ๋ฅ์ด ๋จ์ด์ง ์ ๋ฐ์ ์๋ค.
- ๊ทธ๋์ ์ฑ๋ฅ์ด ์ ๋์จ ๋ชจ๋ธ์ checkpoint๋ฅผ ๋ถ๋ฌ์ค๊ณ optimizer๋ฅผ SGD๋ก ๋ณ๊ฒฝํ์ฌ 1 ~ 3 epoch ์ ๋ ํ์ต์ ๋ ์งํํ๋ค. ๊ทธ ๊ฒฐ๊ณผ F1 Score๊ฐ 0.76์ผ๋ก,์ ํ๋๋ 80%๋ก ์์นํ๊ณ , 2 epoch์ผ ๋ ๊ฐ์ฅ ์ข์ ์ฑ๋ฅ(์ ํ๋ 80.5556%, F1 Score 0.7624)์ ๋ณด์๋ค.
- ๋ง์ง๋ง์ผ๋ก ๊ธฐ์กด์ ์ ์ฅ๋ checkpoint๋ฅผ ์ฌ์ฉํ์ฌ inferenceํ์ฌ ๋์จ logit ๊ฐ์ผ๋ก soft voting์ ์งํํ๋ค.
- ์ฒ์์ ๋ค๋ฅธ ๊ณ์ด ๋ชจ๋ธ์ธ ResNet๊ณผ EfficientNet์ ์์๋ธํ์์ง๋ง, ResNet ์ฑ๋ฅ(์ ํ๋ 50%)์ด ์ข์ง ์์์ ๊ทธ๋ฐ์ง best single model๋ณด๋ค ์ฑ๋ฅ์ด ๋จ์ด์ก๋ค.
- ๋ฆฌ๋๋ณด๋ ๊ธฐ์ค ์ ๋์จ ์์ 4๊ฐ ๋ชจ๋ธ์ ์์ธก๊ฐ์(SGD๋ก ์ฌํ์ต์ํจ ๋ชจ๋ธ, ์๋๊ฐ ๋ค๋ฅธ best ๋ชจ๋ธ)์ ์์๋ธํ์ฌ ์ ํ๋ 80.4762%, F1 Score 0.7625์ ์ต๊ณ ์ฑ๋ฅ์ ์ป์๋ค.
- Rotate, RandomHorizontalFlip, ColorJitter ๋ฑ ์ฌ๋ฌ
augmentation
๊ธฐ๋ฒ์ ์ ์ฉํ๋ฉด ํ์ต ์ฑ๋ฅ์ด ์คํ๋ ค ๋จ์ด์ง๋ ๊ฒฝํฅ์ด ๋ณด์๋ค. ์๋ฌด๋๋ ์ฌ๋์ ์ผ๊ตด์ด ๊ฑฐ์ ๋๋ถ๋ถ ์ด๋ฏธ์ง ์ ๊ฐ์ด๋ฐ์ ์์นํด ์๊ธฐ ๋๋ฌธ์ธ ๋ฏ ํ๋ค. criterion
์ผ๋ก Label Smoothing ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ง๋ง, CrossEntropyLoss์ ๋นํด ์ฑ๋ฅ์ด ๋จ์ด์ก๋ค. ์ถ์ธกํ ๋ฐ๋ก๋ Label Smoothing์ด ๋ชจ๋ธ์ด ์์ธกํ ํด๋์ค์ confidence๊ฐ 100%๊ฐ ๋์ง ์๋๋ก ํ๋๋ฐ ๋์ด ํผ์ฒ ๋๋ฌธ์ ํด๋์ค ๊ฐ ๊ฒฝ๊ณ๊ฐ ๋๋ ทํ์ง ์์ ์ฑ๋ฅ์ด ๋จ์ด์ง ๊ฒ ๊ฐ๋ค.
- ๋ํ ์ด๊ธฐ์ ๋ค์ํ ์คํ: ํผ์ด์ธ์ ๊ณผ ๊ฐ์๋ฅผ ํตํด ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฒ(method)๋ฅผ ๋ชจ์ ๋ค ์์ ๋ชจ๋ธ๋ก ์ฌ๋ฌ ๊ธฐ๋ฒ์ ์ฑ๋ฅ์ ํ๊ฐํ๋ฉด์ ์ด๋ค ํด์ ์ฐ๋ฉด ์ข์์ง ์ ํํ๋ ์์ผ๋ก ์คํํ๋ค. ํ์ ๋ฒ ์ด์ค์ฝ๋๋ฅผ ๊ฐ์ง๊ณ ๋ชจ๋ธ ํ์ต์ ํ ๋ ๋ฐ๋ก ํด์ ๊ฒฐ์ ํ ์ ์์๊ณ ํ์ดํผํ๋ผ๋ฏธํฐ ํ๋ ์ ๋๋ง ํ๋ค.
- Scikit-learn ํ์ฉ: Pytorch๋ ๋ชจ๋ธ ํ์ต์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ f1-score, accuracy ๊ณ์ฐ ๋ฑ๊ณผ ๊ฐ์ ๋ฉ์๋๊ฐ ๊ตฌํ์ด ๋์ด์์ง ์์๋ค. ์ด ๋ Scikit-learn์ ์ฌ์ฉํ๋ฉด ๊ธ๋ฐฉ ๊ตฌํํ ์ ์์๋ค. ์ด ๋ ์ฃผ์ํด์ผํ ์ ์ Scikit-learn์ ๋๋ถ๋ถ ์
๋ ฅ๊ฐ์
numpy.array
๋ก ๋ฐ๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๋ณ๊ฒฝํด์ฃผ๋ ์์ ์ ํด์ผํ๋ค! - ๋ํ๋ ๊ฒฝ์์ด ์๋๋ผ ํ๋ ฅ์ด๋ค: ์ด๋ฒ ๋ํ์์ ๊ฐ์ฅ ํฐ ๋์์ ์ค ์ฌ๋๋ค์ ์ญ์ ์บ ํผ๋ถ๋ค์ด์๋ค. ํผ์ด์ธ์ ๊ณผ ํ ์๋ฅผ ํตํด ์ด๋ค ๋ชจ๋ธ์ ์ฐ๋ฉด ์ข์์ง, ์ด๋ค ์์คํจ์๋ฅผ ์ฐ๋ฉด ์ข์์ง, ์ด๋ค epoch๊ฐ ์ข์์ง ๋ฑ ์ ๋ณด๋ฅผ ๋ง์ด ์ป์ ์ ์์๋ค. ๊ทธ ๋๋ถ์ ์ด๋ฐ ๋ชจ๋ธ ์ฑ๋ฅ๋ณด๋ค ํจ์ฌ ๋ ์ข์ ์ฑ๋ฅ์ ๋ชจ๋ธ์ ์ป์ ์ ์์๊ณ ์ ๋ํ ์ป์ ์ ๋ณด๋ฅผ ๋ค๋ฅธ ์บ ํผ๋ถ๋ค์๊ฒ ๊ณต์ ๋ฅผ ํ๋ค.
- ๋๋ฒ๊น ํด๊ณผ AutoML์ ๊ผญ ์ฌ์ฉํด๋ณด์: ์คํ ๊ฒฐ๊ณผ ๊ธฐ๋ก์ Notion์ ์๊ธฐ๋ก ํ๋ค ๋ณด๋ ์คํ ๊ฒฐ๊ณผ๊ฐ ์ง๊ด์ ์ผ๋ก ์๋ฟ์ง ์์๋ค. ๋ค์์๋ wandb๋ tensorboard์ ๊ฐ์ ์๊ฐํ ํด์ ์ฌ์ฉํด๋ณด๋ ค ํ๋ค. ๋ํ ํ์ดํผํ๋ผ๋ฏธํฐ ํ๋๋ ์ฒด๊ณ์ ์ด์ง ์์์ ๋ค์์๋ AutoML์ ์ฌ์ฉํด๋ณผ ์์ ์ด๋ค.