[์๋น์ค๊ฐ๋ฐํ ํฉ์ค์ ]
๊ธฐ๊ณํ์ต ๋ชจ๋ธ์ ์ง๋ ํ์ตํ ๋ ๋ผ๋ฒจ๊ฐ ๋ฐ์ดํฐ์ ๊ฐ์๊ฐ ๋ถ๊ท ํํ ๋ฐ์ดํฐ์ ์ ํ๋ จ ๋ฐ์ดํฐ๋ก ์ผ์ ๊ฒฝ์ฐ, ๋น์จ์ด ์์ ๋ผ๋ฒจ์ ์ํ ์ํ๋ค์ ๋ํ ํ์ต์ด ์ ์ด๋ฃจ์ด์ง์ง ์๋ ํ์์ ๊ฒช๊ฒ ๋ฉ๋๋ค. ๋จ์ํ ์ํ์ ๊ฐ์ ์์ฒด๊ฐ ์ ๋ค๋ฉด ๋น์ฐํ ํ์ต์ด ์ ์ด๋ฃจ์ด์ง์ง ์์ ๊ฒ์ด๋ฉฐ, ์ํ์ด ์ถฉ๋ถํ ํ์ตํ ๋งํผ์ ์๋ค๊ณ ํ๋๋ผ๋, ๋น์จ ์ฐจ์ด๊ฐ ๊ทน์ฌํ๋ค๋ฉด ๋ชจ๋ธ์ ํธํฅ์ฑ์ ๊ฐ์ง๊ฒ ๋ ๊ฒ์ ๋๋ค. ํนํ, ์๋ฅผ ๋ค์ด ๋น์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฅํ๋ ๋ฌธ์ ๊ฑฐ๋ ๋ถ๋ฅํด์ผ๋๋ ๋ผ๋ฒจ์ด ๋๋ฌด ๋ง์ ๋ฌธ์ ์ธ ๊ฒฝ์ฐ์ ํํ ๋ฐ์ํ๋ ํ์์ ๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ์ ์๋ฌด๋ฆฌ ์ข์ state-of-the-art ๋ชจ๋ธ์ ์ฌ์ฉํ๋ค๊ณ ํ๋๋ผ๋, ์ ๋๋ก๋ ์ฑ๋ฅ์ ์ด๋์ด๋ด๊ธฐ ํ๋ค์ด์ง๋๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก ํฌ๊ฒ 4๊ฐ์ง๊ฐ ์์ต๋๋ค.
- ์ ์ ํ ํ๊ฐ ์งํ ์ฌ์ฉ
๋ถ๊ท ํ ๋ฐ์ดํฐ์ ๋ฌธ์ ๋ฅผ ์ง์ ์ ์ผ๋ก ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์ํ๋ค๊ธฐ ๋ณด๋ค, ํ์ฌ ํ์ต๋ ๋ชจ๋ธ์ ์ ํํ ํด์ ๋ฐ ํ์ ํ์ฌ ํ์ ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ์ฉํ๊ธฐ ์ํ ์ฒซ๊ฑธ์์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ผ๋ฒจ 0๊ณผ 1์ ์ด์ง ๋ถ๋ฅํ๋ ๋ฌธ์ ์ด๋ฉฐ, ์ ์ฒด ๋ฐ์ดํฐ์ ๋๋น ๋ผ๋ฒจ 0์ ์ํ๋ ์ํ ๋น์จ์ด 99%, ๋ผ๋ฒจ 1์ ์ํ๋ ์ํ ๋น์จ์ด 1%๋ผ๊ณ ๊ฐ์ ํด๋ณด๊ฒ ์ต๋๋ค. ๋ง์ฝ ํ์ต๋ ๋ชจ๋ธ์ด ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ 0์ผ๋ก ๋ถ๋ฅํ๋ค๊ณ ํ๋ค๋ฉด, ์ด ๋ชจ๋ธ์ ์ ํ๋(accuracy)๋ 99%๊ฐ ๋ ๊ฒ์ ๋๋ค. ์ด accuracy๊ฐ ํ๋ฆฐ ์งํ๋ ์๋์ง๋ง, ๊ณผ์ฐ ์ด 99%๋ผ๋ ์ฑ๋ฅ ์งํ๊ฐ ์ด ๋ชจ๋ธ์ ์ฑ๋ฅ์ ์ ๋๋ก ์ด์ผ๊ธฐํด์ค ์ ์์๊น์? ๋ณดํธ์ ์ผ๋ก ์ฐ๋ฆฌ๋ ์ด๋ฌํ ๋ฐ์ดํฐ์์ 0์ ์ ํํ ๋ถ๋ฅํ๋ ๊ฒ์ด ์๋๋ผ 1์ ์ ํํ ๋ถ๋ฅํ๊ณ ์ถ์ดํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด, ์ด ์งํ๋ ๊ฐ์น์๋ค๊ณ ํ ์ ์์ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ accuracy ๋ฟ๋ง ์๋๋ผ ์ฌ๋ฌ๊ฐ์ง ์ธก๋ฉด์ ๋ณผ ์ ์๋ ๋ค์๊ณผ ๊ฐ์ ํ๊ฐ ์งํ[1]๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ์ ๋ฐ๋ (Precision): True Positive / (True Positive + False Positive); ๋ชจ๋ธ์ด True๋ผ๊ณ ๋ถ๋ฅํ ๊ฒ ์ค์์ ์ค์ True์ธ (๋ง์ถ) ๋น์จ
- ์ฌํ์จ (Recall): True Positive / (True Positive + False Negative); ์ค์ True์ธ ๊ฒ ์ค์์ ๋ชจ๋ธ์ด True๋ผ๊ณ ์์ธกํ (๋ง์ถ) ๋น์จ
- F1 score: 2 * Precision * Recall / (Precision + Recall); ์ ๋ฐ๋์ ์ฌํ์จ์ ์กฐํ ํ๊ท
- ACU: ๋ชจ๋ ์๊ณ๊ฐ์์ ๋ถ๋ฅ ๋ชจ๋ธ์ ์ฑ๋ฅ์ ๋ณด์ฌ์ฃผ๋ ๊ทธ๋ํ์ธ ROC ์ปค๋ธ์ ์๋ ์์ญ ๋์ด๋ฅผ ์๋ฏธ
์ ์งํ๋ค ์ค์์ ๋น์จ์ด ์ ์ ๋ผ๋ฒจ์ ๋ํ ์ ๋ฐ๋์ ์ฌํ์จ์ด ๊ต์ฅํ ๋ฎ๊ฒ ๋์ค๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์ฆ, ํด๋น ๋ผ๋ฒจ์ ๋ํ ํ์ต์ด ์ ์ด๋ฃจ์ด์ง์ง ์์ ๊ฒ์ ๋๋ค.
- ํ์ต ๋ฐ์ดํฐ์ ์ํ๋ง
์ ํ๊ฐ ์งํ๋ฅผ ํตํด ๋ชจ๋ธ์ ํ์ต์ด ์ ์ด๋ฃจ์ด์ง์ง ์์๋ค๊ณ ํ๋จ๋ ๊ฒฝ์ฐ, ๊ฐ์ฅ ๋จผ์ ๊ฐ๋จํ๊ฒ ์ ์ฉํด๋ณผ ์ ์๋ ์ ๋ต์ ๋๋ค. ๋ผ๋ฒจ๊ฐ ๋น์จ์ ๋ง์ถฐ์ฃผ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ถ๊ท ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
- Under-sampling[2]: ๋ง์ ๋น์จ์ ์ฐจ์งํ๋ ์ํ์ ๊ฐ์๋ฅผ ์ค์ฌ์ ๊ท ํ ๋ฐ์ดํฐ์ ์ ๋ง๋๋ ๊ฒ, ๋ฐ์ดํฐ์ ์์ด ์ถฉ๋ถํ ๋ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ.
- Over-sampling[3]: ์ ์ ๋น์จ์ ์ฐจ์งํ๋ ์ํ์ ๊ฐ์๋ฅผ ๋๋ ค์ ๊ท ํ ๋ฐ์ดํฐ์ ์ ๋ง๋๋ ๊ฒ, ๋ฐ์ดํฐ์ ์์ด ์ถฉ๋ถํ์ง ์์ ๋ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ. (ex. repetition, bootstrapping, SMOTE, ROSE)
์ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ ์ ์ ํ ์กฐํฉํ๋ฉด[4] ๋ ์ข์ ์ํ๋ฌ๋ฅผ ๋ง๋ค ์ ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฅ๋ฌ๋ ํ๋ ์์ํฌ๋ก ํํ ์ฌ์ฉํ๋ PyTorch์ ์ ์ฉ ๊ฐ๋ฅํ Imbalanced Dataset Sampler[5]๊ฐ ๊ณต๊ฐ ๋์ด์์ผ๋ ์ฐธ๊ณ ํ๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ง๋ง, ๋ถ๋ฅํ๊ณ ์ ํ๋ ๋ผ๋ฒจ์ ์ํ ๋ฐ์ดํฐ๊ฐ ๊ทน๋๋ก ์ ์ด ํ์ตํ๊ธฐ์ ์ถฉ๋ถํ์ง ์์ ๊ฒฝ์ฐ ์ํ๋ง ๋ฐฉ๋ฒ๋ง์ผ๋ก ํด๊ฒฐ์ด ๋ถ๊ฐ๋ฅํ ์ ์์ต๋๋ค.
- ๋ฐ์ดํฐ ์ฆ๊ฐ (Augmentation)
๋ฐ์ดํฐ์ ์๊ฐ ๊ทน๋๋ก ์ ์ ๊ฒฝ์ฐ์ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋๋ค. ํ์ง๋ง, ์ด๋ฌํ ๋ฐ์ดํฐ ์ฆ๊ฐ ๋ฐฉ์์ ๋๋ฉ์ธ์ ๋ฐ๋ผ ํ์คํฌ์ ๋ฐ๋ผ ์ ์ฉ ์ฌ๋ถ์ ๋ฐฉ๋ฒ์ด ๊ฐ๋ผ์ง ๊ฒ์ ๋๋ค.
- Image Augmentation
- Text Augmentation
์ ์์๋ ์ด๋ฏธ์ง์ ํ ์คํธ ๋ฐ์ดํฐ์ ๋ํด ๋ณดํธ์ ์ผ๋ก ์ ์ฉํ๋ Data Augmentation ๊ธฐ๋ฒ์ ๋๋ค. ์ด๋ฏธ ๋น์จ์ด ๋ง์ ๋ผ๋ฒจ์ด ์๋ ๋น์จ์ด ์ ์ ๋ผ๋ฒจ์ ์ํ๋ค์ Augmentationํ์ฌ ํ์ต์ ์ฌ์ฉํ๋ฉด ์ฑ๋ฅ์ ์ฌ๋ฆด ์ ์์ต๋๋ค.
- ๋ถ๊ท ํ ๋ฐ์ดํฐ์ ์ ์ํ ์์ค ํจ์ ์ฌ์ฉ
๋ง์ง๋ง์ผ๋ก, ๋ถ๊ท ํ ๋ฐ์ดํฐ์ ๋ง๋ ์์ค ํจ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ๋ถ๊ท ํ ๋ฐ์ดํฐ์ ๊ฐ์ฅ ๋์ค์ ์ผ๋ก ์ฌ์ฉํ๋ ์์ค ํจ์ ์ค ํ๋๋ Focal Loss[6]์ ๋๋ค. ์ด ์ธ์๋ ์ฌ๋ฌ๊ฐ์ง ์์คํจ์๊ฐ ์กด์ฌํ๋ฉฐ, CVPR 2021์์ ์๊ฐ๋ LADE Loss[7]๋ ์์ต๋๋ค.
- Focal Loss: ๋ถ๋ฅ ์๋ฌ์ ๊ทผ๊ฑฐํ์ฌ ์์ค๊ฐ์ ๊ฐ์ค์น๋ฅผ ๋ถ์ฌํ์ฌ ํด๊ฒฐ
LADE Loss: ๋ถ๊ท ํ ํ์ต ๋ฐ์ดํฐ์ ๋ผ๋ฒจ ๋ถํฌ๋ฅผ ํ๊ฒ ๋ฐ์ดํฐ์ ๋ผ๋ฒจ ๋ถํฌ๋ก ๋ณํ(Distribution Shifting)ํ์ฌ ํด๊ฒฐ
์์ ํ ๋ฐฉ๋ฒ๋ณด๋ค ๋ ๊ทผ๋ณธ์ ์ธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ฐ์ดํฐ์ ์ ๋ ํ๋ณดํ๋ ๊ฒ์ ๋๋ค. ํ์ง๋ง ์ ์ ํ ๋ฐ์ดํฐ์ ์ ์์งํ๋ ๊ฒ๊ณผ ๋ผ๋ฒจ๋ง ์์ ์ ๋๋ ๋น์ฉ์ด ์๋นํฉ๋๋ค. ํด๊ฒฐํ๊ณ ์ ํ๋ ๋ฌธ์ ์ ๋์๋๋ ๋ฐ์ดํฐ์ ์ ์์ด ๊ธฐ๊ณํ์ต ๋ชจ๋ธ์ ํ์ต์ํฌ๋งํผ ์ถฉ๋ถํ ํ๋ณด๋์ง ์๋๋ค๋ฉด ์ ๋ชจ๋ ๋ฐฉ๋ฒ์ ๋์ํด๋ ํด๊ฒฐํ์ง ๋ชปํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ์ ์ด ์ถฉ๋ถํ์ง๋ง, ๋ถ๊ท ํ์ด ์ฌํ ๊ฒฝ์ฐ ์์ ๋ฐฉ๋ฒ์ ์ ์ฉํ์ฌ ์ฑ๋ฅ์ ์ด๋์ด๋ผ ์ ์์ ๊ฒ์ ๋๋ค. ๋ง์ง๋ง ๋ฐฉ๋ฒ์ธ ์์ค ํจ์๋ฅผ ์ฌ์ฉํ ๋ฐฉ๋ฒ์ ์ฝ๋๋ก ๊ณต์ ํ๊ณ ํฌ์คํ ์ ๋ง์น๊ฒ ์ต๋๋ค.
https://github.com/Joonsun-Hwang/imbalance-loss-test/blob/main/Loss%20Test.ipynb
[1] https://en.wikipedia.org/wiki/Precision_and_recall
[2] https://imbalanced-learn.org/stable/under_sampling.html
[3] https://imbalanced-learn.org/stable/over_sampling.html
[4] https://imbalanced-learn.org/stable/combine.html
[5] https://github.com/ufoym/imbalanced-dataset-sampler
[6] https://arxiv.org/abs/1708.02002
[7] https://github.com/hyperconnect/LADE