ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 6. Overfitting 과적합
    general ML, DL, NLP/딥러닝 2022. 4. 20. 18:06

    *본 게시물은 22-1학기 연세대학교 일반대학원 딥러닝을이용한비정형데이터분석(이상엽 교수님) 수업 내용을 정리한 것입니다.

    1. 과적합

    1) 과적합이란

    과적합은 학습 데이터는 잘 설명하는 반면, 새로운 데이터는 잘 설명하지 못하는 상태를 말합니다. 

    학습을 하는 이유는 새로운 데이터를 잘 설명하기 위해서입니다. 그런데 반대가 된다면 곤란합니다 ^^;

    2) 과적합 원인

    모형이 너무 복잡해서 파라미터 수가 너무 많을 때

    ② 모형이 학습 데이터에 너무 민감하게 반응하게 때문에 발생합니다.

    보통 딥러닝 모형은 기본적으로 파라미터가 많기 때문에 과적합이 쉽게 발생하는 편입니다. 

    과적합 발생을 알아차릴 수 있는 방법에는 validation dataset이 있습니다. 즉 검증 데이터셋은 훈련 데이터의 일부이나, 훈련에는 사용되지 않는 데이터이므로 모형이 새로 보는 데이터에도 좋은 성능을 내는지를 관찰합니다. 가령 훈련 시에 훈련 loss나 accuracy는 시원시원하게 내려가거나 올라가는데도 validation loss나 accuracy는 그대로인 경우, 최악의 상황은 val_loss가 갑자기 튀거나 val_accuracy가 떨어지는 경우를 들 수 있습니다^^...

    3) 과적합 해결 방법: Regularization, Dropout (Early Stopping, Batch Normalization...)

    해결방법에는 크게 regularization, dropout이 있습니다. 

    (1) Regularization: L1, L2 규제화

    비용함수에 penalty term을 가하여 새로운 비용함수를 만들어 가중치 갱신을 새롭게 만드는 방법입니다. Penalty term에는 L1, L2가 있습니다. 

    ① L1 규제

    비용 함수에 가중치 절댓값인 L1 norm을 더합니다. 예측 영향력이 작은 feature의 영향력을 0으로 만들어, 해당 feature가 영향을 미치지 못하게 하는 것입니다. 이를 위해 가중치 크기에 상관없이 상수값을 계속 빼게 됩니다.

     

    ②  L2 규제

    비용 함수에 L2 norm의 제곱을 더하는 방법으로, 영향력이 큰 feature의 영향력을 감소시키는 방법입니다. 이에 따라 큰 가중치에 대해서는 강한 규제를, 작은 가중치에 대한 규제는 약하게 할 수 있어 결론적으로는 모든 가중치들이 고르게 반영될 수 있습니다. 이에 따라 weight decay가 이루어집니다. 

     

     

    (2) Dropout

    모형에 존재하는 노드 중 일부 노드를 사용하지 않고 제거하여 모형을 단순화하는 방법입니다. 학습 진행마다 랜덤하게 노드를 제거합니다. 노드 수가 감소하므로 파라미터 수가 감소하게 됩니다. 

    또한 노드 수가 줄어 파라미터 수가 감소하는 것에 더하여, 학습을 할 때마다 랜덤하게 노드가 제거되므로 매 학습마다 '다른 형태의 네트워크'가 사용되는 것과 같은 효과를 누립니다. 

    다만 훈련 시에 드롭아웃을 사용했다면, test를 할 때에는 원래 파라미터 값에 p를 곱하여 보정하게 됩니다. 왜냐면 test 과정에서는 모든 노드들을 사용하게 되기 때문입니다. 

    'general ML, DL, NLP > 딥러닝' 카테고리의 다른 글

    8. CNN 코드 - MNIST, Cifar-10  (0) 2022.04.21
    7. CNN(Convolutional Neural Network)  (0) 2022.04.20
    5. FFNN(Feed Forward Neutral Network)  (0) 2022.04.20
    3. 경사하강법 & 4. optimizer  (0) 2022.04.19
    2. 활성화 함수  (0) 2022.04.19

    댓글

Designed by Tistory.