1. 딥러닝 준비
1-0. 케라스(Keras)
- 고수준의 딥러닝 라이브러리
- GPU 연산을 수행하는 기능을 직접 실행하지 않고 텐서플로, CNTK, Theano, MXNet 등의 백엔드 엔진을 지정하여 사용
- 직관적이고 사용자 친화적인 라이브러리
1-1. 주요 용어
1) 하이퍼 파라미터(hyper parameter)
- 모델을 훈련할 때 사용자가 직접 설정해 주는 설정 값
- 사용자가 어떠한 값을 설정하느냐에 따라 모델의 성능 및 결과가 달라짐
- 별도의 설정이 없으면 지정된 기본값이 자동으로 적용됨
- 튜닝(tuning): 하이퍼 파라미터의 값을 조절하는 행위
2) 과소적합(underfitting) vs 과대적합(overfitting)
-
머신러닝 학습에서의 데이터는 크게 훈련용(train) 데이터와 예측용(test) 데이터로 구분됨

-
머신러닝에서 주어진 훈련 데이터에 대한 패턴 학습을 통해 모델을 완성해 나감
- 훈련용 데이터를 반복적으로 학습하면서 모델은 사람이 발견하지 못하는 패턴을 발견할 수도 있음
- 그러나 예측할 데이터가 모델이 학습한 데이터와 다른 분포를 가지거나, 또는 학습한 데이터가 특정 레이블에 편향된 데이터로 구성된 경우 모델의 학습 후 예측 성능이 저하됨

-
모델이 충분히 학습되지 못한 경우 예측 성능이 떨어짐 → 과소적합
-
모델이 학습 데이터를 지나치게 반복 학습하게 되어 과하게 적합된 상태 → 과대적합
- 훈련 데이터에 존재하는 불필요한 노이즈까지 과도하게 모델에 반영되어 주어진 훈련 데이터에 대한 예측 성능은 좋음
- 그러나 정작 중요한 예측 데이터에 대한 예측 오차가 발생하는 문제

-
모델 학습 시 과소적합과 과대적합 문제를 최소화하면서 정확도를 가장 높일 수 있도록 해야 함
- 예측 데이터와 분포가 동일하도록 훈련 데이터를 구성하여야 함
- 불필요한 노이즈는 데이터 분석 및 전처리를 통해 해소해야 함
- 훈련 데이터의 일부를 검증 데이터로 활용하여 검증 성능이 가장 좋은 구간을 모델의 가장 이상적인 학습 지점으로 판단 후 최종 모델을 결정
3) 에포크(epoch)
- 딥러닝 모델이 반복 훈련을 할 때 데이터셋을 전부 학습에 사용하는 1회의 훈련 루프(loop)
- 훈련 데이터셋을 빠짐없이 모두 1번 모델 훈련에 사용하면 1 epoch의 훈련 과정을 마치고 다음 epoch으로 넘어감
- 사전에 설정된 최대 epoch 횟수까지 반복적으로 진행 후 종료
- 최대 epoch까지 반복 학습이 끝나더라도 모델이 과소적합되었다고 판단된다면 epoch을 늘려 다시 학습할 필요가 있음
- 반대로 만약 모델이 빠르게 과대적합 구간으로 진입한다면 epoch을 줄여서 최적 구간에서 학습을 조기에 종료하여 과대적합을 방지할 필요가 있음