들어가기전에
오버피팅이 무엇일까?
train loss는 줄지만, val loss가 줄지 않거나 발산하는 현상입니다. 해당 현상의 원인 중 하나는 모델 크기에 비해 학습 데이터가 적어서 생기는 것인데요. 쉽게 이해하면 데이터가 적어 모델이 해당 데이터의 패턴을 그냥 다 외워버려 학습 데이터에서는 좋은 성능을 보이지만, 이전에 보지 못한 새로운 데이터에 대해서는 낮은 성능을 보이는 것입니다.
이에 대한 해결책을 생각해보면 두가지가 있습니다. 1. 데이터를 늘린다. 2. 모델의 크기를 줄인다. 모델의 크기를 줄이는 방법으로는 layer의 수를 줄이거나 regularization을 사용하는 방법이 있습니다.
이번 포스팅에서 다룰 DataAugmentation은 데이터 수를 늘리는 방법으로 오버피팅을 방지하고자 합니다.
1. DataAugmentation이란 ?
기존 데이터 세트를 변형하여 새로운 데이터를 생성하는 기술로 실질적인 데이터 세트의 규모를 키울 수 있는 방법입니다.
data augmentation을 할 때 주의할 점은 기존 data의 성질을 바꾸면 안됩니다. 즉 데이터의 본질을 변형시키면 안되는 것입니다.
해결하고자 하는 Task 와 현재 데이터의 이해를 기반으로 적절한 Augmentation을 진행하는 것이 중요합니다.
2. 기본적인 Data Augmentation
기본적으로 알려진 data augmentation 방법들입니다. 자르기, 밝기 조정, 뒤집기 등등 이 있습니다. 요즘은 해당 방법 보다 아래 있는 방법들을 더 많이 사용한다고 합니다. (해당 방법은 정말 성능이 오르지 않을 때 마지막에 시도해볼만한 그런 방법이라고 한다. 물론 정답은 없겠지만.. )
3. Advanced Data Augmentation
요즘 많이 쓰이는 dataaugmentation 기법입니다. 해당 방법들은 이미지의 덜 중요한 부분까지 포커싱하게 만드는 regional dropout 전략이라고 볼 수 있습니다.
예를 들어 강아지와 고양이를 분류한다고 가정해봅시다. 만일 모델이 강아지의 얼굴만 포커싱하여 학습했다면 해당 부분을 가리거나 mix 함으로써 모델이 집중하지 못했던 부분을 학습하게 만드는 전략입니다.
- Mixup : 임의의 두 사진을 선형 보간
- Cutout : 임의의 사진의 한 부분을 가림
- Cutmix : 사진의 한 부분을 다른 사진의 부분으로 대체
4. CutMix 에 대해서
cutmix는 서로 다른 이미지 부분의 영역을 합쳐서 하나의 이미지로 만드는 기법입니다. 이미지 데이터에서 부분적으로 정보를 Dropout 하는 방법들은 CNN의 성능 향상에 기여를 해왔습니다. 이러한 방법들은 모델이 덜 중요한 부분에 집중할 수 있도록 도와줍니다.
하지만 이러한 방법들이 학습 이미지를 검정색(zero로 채워짐) 또는 랜덤 노이즈로 지워버리기에 부분적으로 이미지의 손실(pixel 정보의 비율 ↓) 을 야기할 수 밖에 없으며, 이는 모델 학습과정에서 비효율적이거나 바람직하지 않은 결과를 낳을 수도 있습니다.
이러한 Cutout의 문제점을 보완한 방법으로 Cutmix을 제시했습니다. Cutmix는 학습 이미지의 부분들을 합쳐서 하나의 이미지 데이터를 만드는 방법으로 이미지의 pixel을 제거하기 보단, 제거된 부분에 다른 이미지의 부분을 가져와 대체합니다.
학습과정에서 데이터가 없는 경우가 없으며, 학습의 효율성을 가져오면서 dropout의 효과도 함께 가져올 수 있습니다.
✏️ 참고자료
https://hongl.tistory.com/223#google_vignette
https://pytorch.org/vision/main/auto_examples/transforms/plot_cutmix_mixup.html
https://eumgill98.tistory.com/41
'STUDY > ML&DL' 카테고리의 다른 글
[DL] Dropout (0) | 2024.06.20 |
---|---|
[DL] Batch Normalization (1) | 2024.06.19 |
[DL] Activation Function , Non-linear Function (0) | 2024.06.18 |
[DL] CrossEntropy , KL Divergence (0) | 2024.06.14 |
[CV] Diffusion이란? (1) | 2024.04.26 |