Part 4 · Neural Network Learning - Improving Through Repetition

한 번의 학습으로는 충분하지 않다

사람도 한 번 책을 읽었다고 모든 내용을 기억하지는 못합니다. 중요한 내용을 반복해서 접할수록 이해가 깊어지고 기억도 오래 유지됩니다. 신경망도 마찬가지입니다. 하나의 데이터만 보고 학습하는 것이 아니라, 수많은 데이터를 여러 번 반복해서 학습하며 조금씩 더 나은 모델로 발전합니다. 반복 학습은 우연히 맞히는 모델이 아니라, 새로운 데이터에도 적용할 수 있는 일반적인 패턴을 배우기 위한 과정입니다.

Why Not Once?

한 번 수정하면 끝나는 것 아닐까?

한 개의 데이터에서 예측이 틀렸다고 Weight를 한 번 수정해도, 다른 형태의 입력까지 모두 잘 처리할 수 있는 것은 아닙니다.

한 데이터 보기고양이 한 장
예측하기현재 모델의 답
오차 계산정답과 비교
한 번 수정작은 Weight 변화
다른 데이터새로운 모습 등장
신경망은 한 사례를 맞히는 것이 아니라, 여러 데이터에 공통으로 나타나는 패턴을 배워야 합니다.
Data Variety

같은 대상도 모습이 매우 다양하다

🐈‍⬛검은 고양이
🐈흰 고양이
🐱아기 고양이
↔️옆모습
🌙어두운 사진
📷일부만 보이는 사진
한 장만 보고 학습하면 그 사진의 특징을 지나치게 따라갈 수 있습니다. 다양한 데이터를 반복해서 보아야 공통적인 특징을 찾을 수 있습니다.
Small Updates

한 번의 파라미터 수정은 매우 작다

파라미터를 한 번에 크게 바꾸면 한 데이터에는 좋아져도 다른 데이터의 예측이 갑자기 나빠질 수 있습니다. 그래서 조금 수정하고 다시 확인하는 과정을 반복합니다.

0.25현재 Weight
0.26조금 수정
0.27다시 확인
0.28조금 수정
0.29반복
학습은 정답으로 한 번에 이동하는 것이 아니라, Loss를 확인하면서 조금씩 더 나은 위치로 이동하는 과정입니다.
Epoch

전체 학습 데이터를 한 번 모두 보면 1 Epoch

학습 데이터에 포함된 모든 항목을 한 번씩 사용해 학습한 것을 1 Epoch라고 합니다.

Dataset 학습에 사용할 전체 데이터입니다.
12 34 56
Epoch 1 전체 데이터를 처음부터 끝까지 한 번 사용합니다.
12 34 56
Epoch 2 같은 전체 데이터를 다시 사용하지만, 이전 Epoch에서 수정된 Weight로 시작합니다.
여러 Epoch 예측과 수정이 누적되며 Loss가 점차 줄어듭니다.
Epoch는 데이터 한 건의 학습 횟수가 아니라, 전체 Dataset을 몇 번 반복해서 보았는가를 나타냅니다.
Batch and Mini-batch

데이터를 몇 개씩 묶어 계산할까?

전체 데이터를 한꺼번에 계산하거나 한 건씩 계산할 수도 있지만, 실제 학습에서는 여러 데이터를 작은 묶음으로 나누는 Mini-batch 방식이 널리 사용됩니다.

한 건씩 학습 데이터 한 건마다 순전파, Loss, 역전파, Weight 수정을 수행합니다.

수정이 자주 일어나지만 계산 흐름이 불안정하고 장비 활용 효율이 낮을 수 있습니다.
전체를 한 번에 학습 전체 Dataset을 동시에 계산한 뒤 한 번 수정합니다.

데이터가 크면 메모리에 모두 올리기 어렵고 한 번의 수정까지 오래 기다려야 합니다.
보통 Batch는 한 번의 파라미터 수정에 함께 사용하는 데이터 묶음을 뜻하며, 전체 Dataset보다 작은 묶음을 Mini-batch라고 부릅니다.
Epoch and Batch

Epoch와 Mini-batch의 관계

전체 데이터가 1,000개이고 Mini-batch 크기가 100이라면, 10개의 Mini-batch를 모두 처리해야 1 Epoch가 끝납니다.

Dataset1,000개
Mini-batch 1100개
Mini-batch 2~9각 100개
Mini-batch 10마지막 100개
Epoch 1 완료전체 데이터 1회 사용
Mini-batch 하나를 처리할 때마다 Weight와 Bias가 수정되고, 모든 Mini-batch를 처리하면 1 Epoch가 완료됩니다.
What Changes Over Epochs?

Epoch가 반복되면 Loss와 정확도는 어떻게 변할까?

Loss 변화 예시

학습이 진행되면서 Loss가 전반적으로 낮아질 수 있습니다.

정확도 변화 예시

정답을 맞히는 비율이 높아지다가 점차 변화 폭이 줄어듭니다.

실제 Loss와 정확도는 항상 매끄럽게 변하지 않습니다. Mini-batch 구성과 Learning Rate에 따라 오르내릴 수 있으며, 전체적인 추세를 보는 것이 중요합니다.
Overfitting

너무 오래 학습하면 새로운 데이터에 약해질 수 있다

학습 데이터를 반복해서 보는 것은 필요하지만, 지나치게 오래 학습하면 데이터의 공통 패턴보다 개별 사례를 외우는 문제가 생길 수 있습니다. 이를 과적합(Overfitting)이라고 합니다.

학습 데이터

이미 여러 번 본 문제이므로 거의 모두 맞힙니다.

정확도: 99%

하지만

처음 보는 데이터

표현이나 형태가 조금 달라지면 제대로 판단하지 못합니다.

정확도: 68%

좋은 모델은 학습 데이터를 외우는 모델이 아니라, 처음 보는 데이터에도 적용할 수 있는 공통 패턴을 학습한 모델입니다.
Interactive Epoch Lab

Mini-batch를 처리하며 Epoch를 완성해 보기

현재 설정: 5 Epoch

Dataset 진행 상황

현재 Epoch
0%
전체 학습
0%

현재 학습 상태

Epoch 1
Mini-batch 0 / 3
Loss 1.40
정확도 52%
실제 학습에서는 각 Epoch가 시작될 때 데이터 순서를 섞는 경우가 많으며, Loss와 정확도 변화도 데이터와 모델에 따라 달라집니다.
When Should Training Stop?

언제 학습을 멈춰야 할까?

Loss 변화가 거의 없을 때 여러 Epoch 동안 학습 지표가 더 이상 의미 있게 좋아지지 않는지 확인합니다.
새로운 데이터 성능이 나빠질 때 학습 데이터 성능은 좋아지지만 검증 데이터 성능이 떨어지면 과적합을 의심합니다.
정해 둔 학습 조건에 도달했을 때 최대 Epoch, 시간, 비용 등의 조건에 따라 학습을 종료할 수 있습니다.
학습은 오래 할수록 무조건 좋아지는 것이 아닙니다. 새로운 데이터에서도 잘 작동하는 시점을 찾는 것이 중요합니다.
The Complete Loop

반복 학습 전체 흐름 정리

Dataset
Mini-batch
순전파
Loss
역전파
Weight Update
다음 Batch
모든 Mini-batch를 처리하면 1 Epoch가 끝나고, 다시 전체 Dataset을 반복하며 학습을 이어갑니다.
Common Questions

자주 생기는 의문

Epoch가 많을수록 항상 좋은가?
아닙니다. 너무 적으면 충분히 학습하지 못할 수 있지만, 너무 많으면 학습 데이터를 지나치게 외우는 과적합이 발생할 수 있습니다.
Batch Size가 크면 항상 빠른가?
장비가 지원한다면 계산 효율이 좋아질 수 있지만, 메모리 사용량이 증가하고 학습 특성도 달라집니다. 모델과 데이터, 장비에 맞는 크기를 선택해야 합니다.
Mini-batch마다 Weight를 수정하는가?
일반적인 Mini-batch 학습에서는 한 Mini-batch의 Loss와 Gradient를 계산한 뒤 Weight와 Bias를 한 번 수정합니다.
Summary

학습 내용 정리

  • 한 번의 학습으로는 다양한 데이터의 공통 패턴을 충분히 배우기 어렵습니다.
  • 파라미터는 한 번에 크게 바꾸지 않고 조금씩 반복해서 수정합니다.
  • 전체 Dataset을 한 번 모두 사용해 학습한 것을 1 Epoch라고 합니다.
  • 한 번의 Weight 수정에 함께 사용하는 데이터 묶음을 Batch라고 합니다.
  • 전체 Dataset보다 작은 Batch를 Mini-batch라고 합니다.
  • 모든 Mini-batch를 처리하면 1 Epoch가 완료됩니다.
  • Epoch가 반복되면서 Loss는 전반적으로 감소하고 정확도는 향상될 수 있습니다.
  • 지나치게 오래 학습하면 학습 데이터를 외우는 과적합이 발생할 수 있습니다.
  • 좋은 학습은 처음 보는 데이터에도 적용되는 공통 패턴을 찾는 과정입니다.
  • 이제 신경망의 기본 학습 원리를 바탕으로 문맥과 순차 모델을 살펴볼 수 있습니다.