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
학습에 사용할 전체 데이터입니다.
123456
Epoch 1
전체 데이터를 처음부터 끝까지 한 번 사용합니다.
123456
Epoch 2
같은 전체 데이터를 다시 사용하지만,
이전 Epoch에서 수정된 Weight로 시작합니다.
여러 Epoch
예측과 수정이 누적되며 Loss가 점차 줄어듭니다.
Epoch는 데이터 한 건의 학습 횟수가 아니라,
전체 Dataset을 몇 번 반복해서 보았는가를 나타냅니다.
Batch and Mini-batch
데이터를 몇 개씩 묶어 계산할까?
전체 데이터를 한꺼번에 계산하거나 한 건씩 계산할 수도 있지만,
실제 학습에서는 여러 데이터를 작은 묶음으로 나누는 Mini-batch 방식이 널리 사용됩니다.
한 건씩 학습
데이터 한 건마다 순전파, Loss, 역전파, Weight 수정을 수행합니다.
수정이 자주 일어나지만 계산 흐름이 불안정하고 장비 활용 효율이 낮을 수 있습니다.
전체를 한 번에 학습
전체 Dataset을 동시에 계산한 뒤 한 번 수정합니다.
데이터가 크면 메모리에 모두 올리기 어렵고 한 번의 수정까지 오래 기다려야 합니다.
Mini-batch 학습
32개, 64개처럼 적당한 수의 데이터를 묶어 계산하고 한 번 수정합니다.
계산 효율과 안정성 사이의 균형을 맞출 수 있습니다.
보통 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를 한 번 수정합니다.