과적합(overfitting) 현상은 모델이 학습 데이터에 너무 잘 맞춰져서 새로운 데이터(test data)에서 일반화되지 않는 현상을 일컫는다.
위의 그림에서 초록색 선은 과적합된 모델을, 검은색 선은 일반 모델을 나타낸다.
Training loss는 Training Time에 따라 감소하지만(모델 성능 향상되지만),
Training time이 일정 값을 초과하면(=overfitting 되면) Test loss는 증가하는 양상을 보인다.
예시를 들어서, 밤에 거리를 걷는 고양이 그림이 있다고 하자.
그렇다면 이 그림의 특징은 당연하게도 고양이가 있다는 것이다. 모델은 고양이를 인식해 그림의 특징으로 설정할 것이다. 이와 비슷한 그림들을 모델에 학습시키면(training data로 사용하여서) 모델은 고양이를 분류하는 모델이 된다.
이 모델이 overfitting 되면, 낮에 거리를 걷는 고양이 그림이 있을 때 모델이 그림을 고양이가 아니라고 판단하는 것이다.
왜냐하면 이제까지 training 했던 이미지들은 모두 배경이 밤인 고양이 사진이었기 때문이다.
드롭아웃의 실제 예시를 살펴보자. 아래의 그림은 한 모델의 손실(여기서는 설명하기 쉽게 오차라고 하겠다.) 그래프이다.
Train loss의 경우 epoch 증가에 따라 감소하는 경향을 보이는데, Test loss는 일정 횟수가 초과하면 감소하지 않고 오히려 증가한다. (*validation data는 test data와는 다르나 이해를 위해 test data라고 설명한다.)
학습과정에서의 손실 변화
- Train Loss:
- epoch가 진행됨에 따라 모델이 학습 데이터를 점점 더 잘 맞추게 되어 훈련 손실이 감소한다.(학습 데이터를 점점 더 잘 학습하게 된다.)
- Test Loss:
- 초기에는 test loss도 감소한다. 이는 모델이 train data와 유사한 새로운 데이터에 대해서도 잘 작동함을 의미한다.
- 그러나 일정 epoch 이후에는 test loss 값이 더 이상 감소하지 않고 오히려 증가한다. 이는 모델이 학습 데이터에 과적합(overfitting)되어 새로운 데이터에 대한 일반화 성능이 떨어진다는 이야기이다.
원인
- 모델의 과적합:
- 모델이 학습 데이터에 있는 노이즈나 특정 패턴을 지나치게 학습하여, 학습 데이터에는 잘 맞지만 새로운 데이터에는 잘 맞지 않게 되는 것.
- 모델 복잡도:
- 복잡한 모델은 학습 데이터의 모든 세부 사항을 학습하지만, 이는 일반화 능력을 저하시킨다.
- 복잡한 모델은 많은 파라미터를 가지고 있어, 학습 데이터의 특이한 패턴까지 모두 학습할 가능성이 크다.
과적합 방지를 위해정규화 기법을 사용할 수 있다.
1. 정규화(Regularization) 기법:
모델의 과적합을 방지하고 모델의 일반화 성능을 향상시키기 위한 기법이다.
모델의 복잡도를 제어하여 학습 데이터에 지나치게 적합하는 것을 방지하고, 새로운 데이터에 대한 성능을 향상시키는 데 도움을 준다. (Regularization에 관한 내용은 따로 서술하겠다.)
(*regularization은 normalization과는 다르다.)
2. 드롭아웃:
학습 중에 일부 뉴런을 무작위로 제외하여 특정 뉴런에만 집중되는 것을 방지한다.
일반적으로 0.5의 비율로 드롭아웃을 적용하는 경우가 많다.
model.add(Dropout(0.5))
위 코드는 각 학습 단계에서 각 뉴런이 50%의 확률로 무작위로 제외(비활성화)된다는 것을 의미한다.
'학습 > AI • ML' 카테고리의 다른 글
오토인코더(Auto-encoder)에 대한 간단 정리 (1) | 2024.10.15 |
---|---|
인공지능과 머신러닝 (3) | 2024.07.17 |