모델 구조를 정했어도 "어떻게 학습시키는가"가 성능을 좌우한다. 오늘은 딥러닝 학습의 엔진인 손실 함수·옵티마이저·학습률과, 적은 데이터로 큰 성과를 내는 전이학습·파인튜닝, 그리고 시험에 등장하는 프레임워크(TensorFlow/PyTorch)와 SageMaker 통합을 다룬다. MLS-C01은 이 영역에서 "학습이 안 될 때/느릴 때/과적합일 때 무엇을 바꿀까"를 묻는다.
손실은 학습의 "나침반"이다. 손실 곡선이 떨어지지 않으면 학습률·구조·데이터를 점검한다.
⚠️ 함정: 손실 함수(최적화 대상)와 평가 지표(선택 기준)를 섞으면 안 된다. 불균형 데이터에서 accuracy가 높다고 좋은 모델이 아니듯, 손실이 낮다고 비즈니스 목표를 달성한 것도 아니다. 지표는 recall·PR-AUC처럼 비용 구조를 반영하는 것으로 따로 고른다.
SGD: w ← w - η * ∇LAdam: 1차/2차 모멘트 추정으로 파라미터별 적응적 보폭
실무 기본값은 Adam: 빠른 수렴과 적은 튜닝. 매우 큰 모델의 마지막 미세조정엔 SGD가 더 나은 일반화를 보이기도 한다.
Adam은 각 파라미터마다 기울기의 1차 모멘트(평균)와 2차 모멘트(분산)를 추정해 적응적 학습률을 적용한다. 덕분에 학습률에 덜 민감하고 빠르게 수렴해 대부분의 딥러닝 프로젝트의 안전한 출발점이다. 시험에서 "딥러닝 학습이 너무 느리거나 학습률 튜닝이 어렵다"면 Adam이 자연스러운 선택지다.
학습 곡선 진단이 핵심이다. 손실이 폭증/진동 → 학습률 낮추기. 학습 손실은 낮은데 검증 손실이 높아짐 → 과적합(드롭아웃·정규화·증강·조기 종료). 학습·검증 손실 모두 높음 → 과소적합(모델 키우기·더 학습·특성 추가). SageMaker Automatic Model Tuning(베이지안 최적화)으로 학습률·배치·층 수를 자동 탐색할 수 있다.
대규모 데이터로 사전학습된 모델의 지식을 새 과제로 옮긴다. 적은 데이터·짧은 시간에 강력하다.
사전학습 모델(ImageNet/대형 코퍼스) ├─ 백본(특징 추출기): 가중치 재사용 └─ 헤드(출력층): 새 과제에 맞게 교체·재학습
[특징 추출 — 데이터가 매우 적을 때] [파인튜닝 — 데이터가 어느 정도 있을 때] ❄️ Conv 블록 1 (동결) ❄️ Conv 블록 1 (동결 유지) ❄️ Conv 블록 2 (동결) ❄️ Conv 블록 2 (동결 유지) ❄️ Conv 블록 3 (동결) 🔥 Conv 블록 3 (낮은 학습률로 해동) 🔥 새 Dense 헤드 (학습) 🔥 새 Dense 헤드 (학습) ❄️ = 가중치 고정 🔥 = 갱신됨 헤드를 먼저 학습한 뒤 백본을 점진적으로 푸는 "단계적 해동"이 안정적이다.
두 가지 방식:
특징 추출(feature extraction): 백본을 동결(freeze) 하고 새 헤드만 학습. 데이터가 매우 적을 때.
파인튜닝(fine-tuning): 백본 일부/전체를 낮은 학습률로 함께 재학습. 데이터가 어느 정도 있을 때.
파인튜닝 시 사전학습 가중치를 망치지 않도록 처음부터 학습할 때보다 훨씬 낮은 학습률을 쓴다. 또 헤드를 먼저 학습한 뒤(백본 동결) 백본을 점진적으로 푸는 "단계적 해동"이 안정적이다. SageMaker JumpStart는 비전·NLP 사전학습 모델과 파인튜닝 스크립트를 제공해 이 과정을 단순화한다.
전이학습에서 "모든 층을 큰 학습률로 동시에 재학습"은 오답이다. 사전학습으로 얻은 지식을 첫 몇 스텝에 지워 버린다.