본문 바로가기

학습/AI • ML

과적합(Overfitting)이란 무엇인가?

과적합(overfitting) 현상은 모델이 학습 데이터에 너무 잘 맞춰져서 새로운 데이터(test data)에서 일반화되지 않는 현상을 일컫는다. 

https://ko.wikipedia.org/wiki/%EA%B3%BC%EC%A0%81%ED%95%A9

위의 그림에서 초록색 선은 과적합된 모델을, 검은색 선은 일반 모델을 나타낸다.

Training loss는 Training Time에 따라 감소하지만(모델 성능 향상되지만),
Training time이 일정 값을 초과하면(=overfitting 되면) Test loss는 증가하는 양상을 보인다. 

예시를 들어서, 밤에 거리를 걷는 고양이 그림이 있다고 하자.
그렇다면 이 그림의 특징은 당연하게도 고양이가 있다는 것이다. 모델은 고양이를 인식해 그림의 특징으로 설정할 것이다. 이와 비슷한 그림들을 모델에 학습시키면(training data로 사용하여서) 모델은 고양이를 분류하는 모델이 된다.

이 모델이 overfitting 되면, 낮에 거리를 걷는 고양이 그림이 있을 때 모델이 그림을 고양이가 아니라고 판단하는 것이다.
왜냐하면 이제까지 training 했던 이미지들은 모두 배경이 밤인 고양이 사진이었기 때문이다. 


드롭아웃의 실제 예시를 살펴보자. 아래의 그림은 한 모델의 손실(여기서는 설명하기 쉽게 오차라고 하겠다.) 그래프이다.

 

Train loss의 경우 epoch 증가에 따라 감소하는 경향을 보이는데, Test loss는 일정 횟수가 초과하면 감소하지 않고 오히려 증가한다. (*validation data는 test data와는 다르나 이해를 위해 test data라고 설명한다.)

학습과정에서의 손실 변화

  1. Train Loss:
    • epoch가 진행됨에 따라 모델이 학습 데이터를 점점 더 잘 맞추게 되어 훈련 손실이 감소한다.(학습 데이터를 점점 더 잘 학습하게 된다.)
  2. Test Loss:
    • 초기에는 test loss도 감소한다. 이는 모델이 train data와 유사한 새로운 데이터에 대해서도 잘 작동함을 의미한다.
    • 그러나 일정 epoch 이후에는 test loss 값이 더 이상 감소하지 않고 오히려 증가한다. 이는 모델이 학습 데이터에 과적합(overfitting)되어 새로운 데이터에 대한 일반화 성능이 떨어진다는 이야기이다. 

원인

  1. 모델의 과적합:
    • 모델이 학습 데이터에 있는 노이즈나 특정 패턴을 지나치게 학습하여, 학습 데이터에는 잘 맞지만 새로운 데이터에는 잘 맞지 않게 되는 것.
  2. 모델 복잡도:
    • 복잡한 모델은 학습 데이터의 모든 세부 사항을 학습하지만, 이는 일반화 능력을 저하시킨다.
    • 복잡한 모델은 많은 파라미터를 가지고 있어, 학습 데이터의 특이한 패턴까지 모두 학습할 가능성이 크다.

과적합 방지를 위해정규화 기법을 사용할 수 있다.

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