더북(TheBook)

3 그래프로 과적합 확인하기

 

역전파를 50번 반복하면서 학습을 진행했습니다. 과연 이 반복 횟수는 적절했을까요? 학습의 반복 횟수가 너무 적으면 데이터셋의 패턴을 충분히 파악하지 못합니다. 하지만 학습을 너무 많이 반복하는 것도 좋지 않습니다. 너무 과한 학습은 13.2절에서 이야기한 바 있는 과적합 현상을 불러오기 때문입니다. 적절한 학습 횟수를 정하기 위해서는 검증셋과 테스트셋의 결과를 그래프로 보는 것이 가장 좋습니다. 이를 확인하기 위해 학습을 길게 실행해 보고 결과를 알아보겠습니다.

먼저 에포크 수를 2000으로 늘려 긴 학습을 해 보겠습니다.

history = model.fit(X_train, y_train, epochs=2000, batch_size=500, validation_split=0.25)

이 코드를 포함해 그동안 model.fit()을 실행할 때마다 결과를 항상 history에 저장해 왔습니다. 이제 저장된 history를 어떻게 활용할 수 있는지 알아보겠습니다.

model.fit()은 학습을 진행하면서 매 에포크마다 결과를 출력합니다. 일반적으로 loss 값이 출력되고 model.compile()에서 metricsaccuracy로 지정하면 accuracy 값이 함께 출력됩니다. loss는 학습을 통해 구한 예측 값과 실제 값의 차이(=오차)를 의미하고 accuracy는 전체 샘플 중에서 정답을 맞춘 샘플이 몇 개인지의 비율(=정확도)을 의미하지요. 이번 예제처럼 검증셋을 지정하면 val_loss가 함께 출력됩니다. 이때 metricsaccuracy로 지정하면 accuracy와 함께 val_accuracy 값도 출력됩니다. val_loss는 학습한 모델을 검증셋에 적용해 얻은 오차이고, val_accuracy는 검증셋으로 얻은 정확도입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.