신경망 적용 ②
이번엔 추가로 Fashion-MNIST 데이터셋을 활용하여 모델 성능을 평가해보자. 데이터 셋의 데이터 예시와 각 레이블에 해당하는 의류 품목은 위와 같다. MNIST 데이터셋과 동일하게 60,000개의 학습 데이터와 10,000개의 테스트 데이터로 구성되어 있다.
데이터 그려보기
전처리 및 검증 데이터셋 생성
첫 번째 모델 구성
위의 코드에서는 MNIST 데이터셋의 코드와는 다르게 (28, 28)로 이루어진 의류 이미지 데이터를 (28*28) 형태로 변환하는 전처리 과정을 생략했다. 대신 모델의 첫 번째 층에 Flatten 층을 추가한다. Flatten층은 배치 크기를 제외하고 데이터를 1차원 배열의 형태로 변환한다.
학습 과정 설정 및 학습
첫 번째 모델 구성
작은 개수의 Dense 층만 사용해도 높은 정확도를 얻을 수 있었다. 더 많은 수의 은닉 유닛을 사용하는 Dense 층을 추가하여 더 깊은 신경망을 만들어보고 결과를 비교해보자.
두 번째 모델 구성
두 모델 비교
결과 그림에서 1행은 첫 번째 모델의 결과이고, 2행은 두 번째 모델의 결과이다. Dense(128)층을 추가한 두 번째 모델은 첫 번째 모델보다 빠르게 수렴하며 높은 정확도와 낮은 손실값을 보여주고 있다. 하지만 과대적합 문제를 주의해야 한다.
각 그림에서 1번 선과 2번 선이 벌어지기 시작하는 지점을 주의해서 보자.
첫 번째 모델(20에폭)보다 두 번째 모델(10에폭)은 벌어지는 지점이 상대적으로 빠른 것을 볼 수 있다. 30에폭을 기준으로 벌어짐의 정도 또한 더 심한 것으로 보인다. 결과 예측을 위해 두 모델 중 한 가지를 사용해야 한다면, 두 번째 모델을 기준으로 과대적합이 일어나기 전 가장 높은 성능을 가지는 8에폭까지만 모델을 학습시키고 이를 최종 성능으로 사용해야 한다.
위의 결과는 모델을 깊게 구성하면 높은 성능을 얻을 수 있는 만큼, 모델이 가지는 파라미터의 수가 매우 많아지기 때문에 과대적합 문제에도 많이 노출될 수 있음을 보여준다. 따라서 모델의 깊이는 데이터에 알맞게 조절될 필요가 있다. 어느 정도가 적절한 모델의 깊이인지 파악하기 어렵다면, 유명한 데이터셋이나 유사한 분야에서 높은 성능을 보여준 모델의 구조를 참고하여 구성해보고 실험을 진행하는 것이 좋을 것이다.