ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • #7. 과대적합과 과소적합
    인공지능/케라스 창시자에게 배우는 딥러닝 2021. 2. 14. 21:47
    반응형

     

    UnderFitting → Good Model → OverFitting

    머신러닝은 결국 최적화(Optimization)일반화(Generalization) 사이의 균형을 맞추는 작업이다. 데이터가 무한할 경우 학습을 반복하는 것이 모델에 도움이 될 수 있지만 한정된 데이터 안에서 학습을 계속하는 것은 해당 학습 데이터에만 맞춰진 모델을 구축하는 결과를 낳는다. 이를 방지하기 위해 우리는 데이터를 더 모으거나, 모델이 수용할 수 있는 양을 조정하거나 저장할 수 있는 정보에 제약을 줌으로써 더 나은 일반화가 가능하다.

     

    네트워크 크기 축소

    과대적합을 막는 가장 단순한 방법은 네트워크 크기 축소다. 모델에 있는 학습 파라미터를 줄이게 되면 데이터는 압축된 표현을 학습하게 되고 이는 일반화의 성능을 올려준다. 쉽게 생각해 데이터를 뭉뚱그려 표현함으로써 좀 더 많은 데이터가 이에 적합할 수 있게 만들어준다고 할 수 있다. 반대의 경우, 데이터의 특성 하나 하나에 민감해짐으로써 더 빠른 수렴이 가능하지만 일반화의 성능을 낮춘다. 임의의 데이터에 대한 손실 그래프를 확인해보자.

     

    # 원본 모델
    model = models.Sequential()
    model.add(layers.Dense(16, activation='relu', input_shape=(10000,)))
    model.add(layers.Dense(16, activation='relu'))
    model.add(layers.Dense(1, activation='siogmoid'))
    # 작은 용량의 모델
    model = models.Sequential()
    model.add(layers.Dense(6, activation='relu', input_shape=(10000,)))
    model.add(layers.Dense(6, activation='relu'))
    model.add(layers.Dense(1, activation='siogmoid'))

    위와 같이 적은 용량의 모델의 경우 과적합이 나타나는 에포크가 미뤄지는 것을 알 수 있다.

     

    # 원본 모델
    model = models.Sequential()
    model.add(layers.Dense(16, activation='relu', input_shape=(10000,)))
    model.add(layers.Dense(16, activation='relu'))
    model.add(layers.Dense(1, activation='siogmoid'))
    # 큰 용량의 모델
    model = models.Sequential()
    model.add(layers.Dense(1024, activation='relu', input_shape=(10000,)))
    model.add(layers.Dense(1024, activation='relu'))
    model.add(layers.Dense(1, activation='siogmoid'))

    반대의 경우, 위와 같이 수렴 속도는 큰 용량의 모델이 더 높다.

    하지만 한번의 몇번의 학습도 없이 바로 과적합이 시작된다. 이러한 이유로 모델에서 알맞는 용량을 찾는 것은 중요한 역할을 한다. 이에 대한 정확한 정답은 없으므로 일반적으로 적은 수의 층의 파라미터로 시작하여 검증 손실 감소 전까지 층 혹은 유닛의 수를 늘리는 방법으로 알맞는 용량을 찾는다.

     

    가중치 규제 추가

    또다른 방법으로는 가중치 규제(Weight Regularization)가 있다. 

    [추가 예정]

    드롭아웃 추가

    마지막으로 생각할 수 있는 방법은 드롭아웃(Dropout)이다. 

    [추가 예정]

    반응형
Designed by Tistory.