케라스 창시자에게 배우는 딥러닝 개정 3판 - 3

책의 5장과 6장에 대한 학습 정리입니다.
5장. 머신러닝의 기본 요소
일반화와 과대적합
머신러닝의 목표는 훈련에 사용하지 않은 데이터에서도 좋은 성능을 내는 일이다. 이를 일반화라고 한다.
모델이 훈련 데이터의 패턴을 충분히 배우지 못하면 과소적합이다. 훈련 데이터의 잡음이나 우연한 특징까지 학습해 새로운 데이터에서 성능이 떨어지면 과대적합이다. 훈련 손실이 계속 줄어도 검증 손실이 높아진다면 과대적합을 의심한다.
딥러닝 모델은 데이터에 숨어 있는 구조를 배우고, 이를 바탕으로 학습한 사례와 비슷한 새 입력을 처리한다. 이를 학습 사례 사이의 보간으로 이해할 수 있다. 따라서 훈련 데이터가 실제로 만날 사례를 충분히 담아야 한다. 학습한 범위에서 크게 벗어난 입력까지 잘 처리한다고 기대하기는 어렵다.
모델 평가
데이터는 역할에 따라 나눈다.
- 훈련 세트: 모델의 가중치를 학습한다.
- 검증 세트: 모델과 하이퍼파라미터를 선택한다.
- 테스트 세트: 개발을 마친 모델을 최종 평가한다.
검증 세트를 반복해 참고하면 선택 과정이 검증 세트에 맞춰질 수 있다. 테스트 세트는 최종 평가까지 따로 둔다. 데이터가 적을 때는 교차 검증을 활용한다. 시간 순서를 무시하거나 중복 데이터를 나누어 담으면 평가가 실제보다 좋아 보일 수 있다. 데이터 분리 방식도 살핀다.
모델을 평가할 때는 단순한 기준점도 필요하다. 예를 들어 대부분의 메일이 정상 메일이라면, 모든 메일을 정상으로 분류하는 방법의 성능과 비교한다. 이 기준을 넘지 못한다면 모델이 문제에 쓸 만한 패턴을 배웠는지 다시 확인한다.
성능 개선
훈련 손실이 줄지 않으면 학습률과 배치 크기를 살핀다. 문제에 맞는 모델 구조를 선택하고, 필요한 경우 층이나 유닛을 늘려 모델 용량을 키운다.
훈련 성능은 좋지만 검증 성능이 나쁘다면 일반화 개선에 집중한다. 데이터의 오류와 누락을 고치고, 실제 상황을 대표할 수 있도록 데이터를 보강한다. 문제에 도움이 되는 입력 특성을 만드는 특성 공학도 활용한다.
검증 성능이 더 이상 좋아지지 않을 때 학습을 멈추는 조기 종료도 유용하다. 모델 크기를 조정하거나 가중치 규제, 드롭아웃을 적용해 과대적합을 줄일 수도 있다. 효과는 검증 세트로 확인한다.
6장. 일반적인 머신러닝 워크플로
1. 작업 정의
먼저 해결할 문제와 모델의 출력을 정한다. 데이터를 수집한 뒤에는 데이터의 분포와 오류를 살핀다. 성공 지표도 실제 목표에 맞게 선택한다. 예를 들어 스팸 탐지에서는 정확도만 보지 않고 스팸을 놓치는 비율과 정상 메일을 잘못 분류하는 비율도 살펴야 한다.
2. 모델 개발
데이터를 준비하고 평가 방법을 정한다. 단순한 기준점을 세운 다음, 이를 넘는 모델을 만든다. 이후 모델의 학습 능력이 충분한지 살피기 위해 용량을 키우고, 과대적합이 나타나는지 확인한다. 훈련 데이터를 충분히 학습하는지 확인한 뒤에는 규제와 하이퍼파라미터 조정으로 검증 성능을 개선한다.
3. 모델 배포와 운영
모델의 성능과 한계를 고객에게 설명하고 기대치를 맞춘다. 모델을 배포한 뒤에는 실제 입력과 성능을 지속해서 관찰한다. 데이터나 사용 환경이 바뀌면 원인을 확인하고 모델을 다시 학습하거나 교체한다.
읽고 나서
모델 학습은 전체 과정의 한 단계다. 문제와 데이터를 이해하고, 신뢰할 수 있는 평가 방법을 만든 뒤, 배포 후에도 성능을 살피는 과정이 이어진다. 이번 장에서는 특히 훈련 점수보다 새로운 데이터에서의 성능을 먼저 생각해야 한다는 점을 배웠다.