• 모델(모형) 정의: 모델(모형) 정의 단계에서 신경망을 생성합니다. 일반적으로 은닉층 개수가 많을수록 성능이 좋아지지만 과적합3이 발생할 확률이 높습니다. 즉, 은닉층 개수에 따른 성능과 과적합은 서로 상충 관계에 있다고 할 수 있습니다. 따라서 모델 정의 단계에서 신경망을 제대로 생성하는 것이 중요합니다.
• 모델(모형) 컴파일: 컴파일 단계에서 활성화 함수4, 손실 함수5, 옵티마이저6를 선택합니다. 이때 데이터 형태에 따라 다양한 옵션이 가능합니다. 훈련 데이터셋 형태가 연속형7이라면 평균 제곱 오차(Mean Squared Error, MSE)를 사용할 수 있으며, 이진 분류(binary classification)8라면 크로스 엔트로피(cross entropy)를 선택합니다. 또한, 과적합을 피할 수 있는 활성화 함수 및 옵티마이저 선택이 중요합니다.
• 모델(모형) 훈련: 훈련 단계에서는 한 번에 처리할 데이터양을 지정합니다. 이때 한 번에 처리해야 할 데이터양이 많아지면 학습 속도가 느려지고 메모리 부족 문제를 야기할 수 있기 때문에 적당한 데이터양을 선택하는 것이 중요합니다. 따라서 전체 훈련 데이터셋에서 일정한 묶음으로 나누어 처리할 수 있는 배치와 훈련의 횟수인 에포크 선택이 중요합니다. 이때 훈련 과정에서 값의 변화를 시각적으로 표현하여 눈으로 확인하면서 파라미터9와 하이퍼파라미터10에 대한 최적의 값을 찾을 수 있어야 합니다. 참고로 모델과 관련하여 훈련과 학습이라는 용어는 의미가 같기 때문에 책에서도 혼용해서 사용합니다.
▲ 그림 1-12 모델 훈련에 필요한 하이퍼파라미터