본문 바로가기

Programming/[Data Science]

[ML] 과적합(Overfitting)을 막는 방법들

반응형

모델의 과적합은 모델의 성능을 낮추는 주요 이슈입니다. 과적합을 막는 방법을 간단히 알아보겠습니다.

 

1. 데이터의 양을 늘리기

  • 데이터의 양이 적을 경우, 데이터의 특정 패턴이나 노이즈를 쉽게 학습하여 과적합 현상 발생 확률이 증가합니다.
  • 데이터의 양을 늘릴 수록 모델은 데이터의 일반적인 패턴을 학습하여 과적합을 방지할 수 있습니다.
  • 의도적으로 기존의 데이터를 조금씩 변형하고 추가하여 데이터의 양을 늘리기도 하는데 이를 데이터 증식 또는 증강 (Data Augmentation)이라고 합니다. 이미지의 경우 데이터 증식이 많이 사용됩니다. (회전, 노이즈, 일부 수정 등)

2. 모델의 복잡도 줄이기

  • 인공 신경망의 복잡도는 은닉층의 수나 매개변수의 수 등으로 결정됩니다.
  • 과적합 현상이 포착됐을 때, 인공 신경망의 복잡도를 줄여 과적합을 방지합니다.

3. 가중치 규제(Regularization) 적용하기

모델의 복잡도를 줄이는 방법으로 가중치 규제(Regularization)가 있습니다.

  • L1 규제 : 가중치 w들의 절대값 합계를 비용 함수에 추가, L1 norm 이라고도 합니다.
  • L2 규제 : 모든 가중치 w들의 제곱합을 비용 함수에 추가, L2 norm 이라고도 합니다.

두 식 모두 비용함수를 최소화하기 위해서는 가중치 w들의 값이 작아져야 하는 특징이 있습니다.

  • L1 규제는 어떤 특성들이 모델에 영향을 주고 있는지를 정확하게 판단하고자 할때 유용합니다.
  • 이러한 판단이 필요없다면 L2 규제가 더 잘 작동하므로 L2 규제를 더 권장합니다. 인공 신경망에서 L2 규제는 가중치 감쇠(weight decay)라고도 부릅니다.

파이토치에서는 옵티마이저의 weight_decay 매개변수를 설정하므로서 L2 규제를 적용합니다. (기본값은 0)

model = Architecture1(10, 20, 2)
optimizer = torch.optim.Adam(model.parameters(), lr=1e-4, weight_decay=1e-5)

4. 드롭아웃(Dropout)

드롭아웃은 학습 과정에서 신경망의 일부를 사용하지 않는 방법입니다.

드롭아웃의 비율을 0.5로 설정한 인공신경망

  • 드롭아웃은 신경망 학습 시에만 사용하고, 예측 시에는 사용하지 않는 것이 일반적입니다.
  • 학습 시 인공 신경망의 특정 뉴런 또는 특정 조합에 너무 의존적이게 되는 것을 방지
  • 매번 랜덤 선택으로 뉴런들을 사용하지 않으므로 서로 다른 신경망들을 앙상블하여 사용하는 것 같은 효과를 내어 과적합을 방지합니다.

[출처] : https://wikidocs.net/60751

 

09. 과적합(Overfitting)을 막는 방법들

학습 데이터에 모델이 과적합되는 현상은 모델의 성능을 떨어트리는 주요 이슈입니다. 모델이 과적합되면 훈련 데이터에 대한 정확도는 높을지라도, 새로운 데이터. 즉, 검증 데이 ...

wikidocs.net

 

반응형