Lasiyan
Tech

딥러닝 용어정리 2 : 모델은 어떻게 학습할까?

#DeepLearning#YOLO#Tensor

딥러닝 용어정리 1탄에서는 텐서, 데이터셋, 라벨, 모델, 학습, 추론, TensorFlow, YOLO 같은 기본 개념을 정리했습니다.

1탄이 딥러닝의 전체 지도를 보는 글이었다면, 이번 2탄에서는 모델이 실제로 어떻게 학습하는지를 살펴보겠습니다.

예시는 1탄과 동일하게, 카메라 영상에서 차량을 탐지하는 모델을 사용합니다.

다루는 개념은 다음과 같습니다.

  • Epoch / Batch / Batch Size / Step(Iteration)
  • Loss / Learning Rate / Optimizer
  • Gradient Descent / Backpropagation
  • Hyperparameter / Overfitting / Underfitting

학습은 “한 번 보고 끝”이 아닙니다

차량 이미지와 정답 라벨을 준비해 모델에게 보여주면, 모델은 차량의 특징을 배웁니다.

하지만 이미지를 한 번 본다고 바로 차량을 잘 찾는 것은 아닙니다. 사람도 문제집을 한 번 본다고 모든 문제를 완벽하게 풀 수 없는 것처럼, 모델도 같은 데이터를 여러 번 반복해서 보면서 조금씩 나아집니다.

딥러닝 학습은 대략 다음 흐름을 반복합니다.

이미지 입력
→ 모델 예측
→ 정답과 비교
→ 손실값 계산
→ 각 가중치의 영향 계산
→ 가중치 수정
→ 다시 학습

이 반복 과정을 이해하려면 먼저 Epoch, Batch, Step 같은 단위 용어를 알아야 합니다.


Epoch: 전체 데이터를 몇 번 반복해서 볼 것인가

Epoch는 전체 학습 데이터를 모델이 한 번 모두 보는 것을 의미합니다.

예를 들어 차량 이미지가 10,000장 있다고 하겠습니다. 모델이 이 10,000장을 처음부터 끝까지 한 번 학습하면 1 Epoch입니다.

1 Epoch = 학습 데이터 전체를 1번 학습

만약 10 Epoch를 학습한다면, 모델은 전체 차량 이미지 10,000장을 총 10번 반복해서 보는 것입니다.

10,000장 x 10번 = 총 100,000장 분량을 본 효과

물론 같은 이미지를 반복해서 보는 것이므로 실제 이미지가 100,000장으로 늘어나는 것은 아닙니다. 같은 학습 데이터를 여러 번 반복하면서 모델의 가중치를 조금씩 개선하는 것입니다.


Batch와 Batch Size: 데이터를 나누어 학습하기

학습 데이터가 10,000장이라고 해서 모델이 한 번에 모두 처리하는 것은 아닙니다. 데이터가 너무 많으면 메모리도 많이 필요하고 계산도 무거워지기 때문입니다.

그래서 데이터를 작은 묶음으로 나누어 학습합니다. 이 작은 묶음을 Batch, 한 Batch에 들어가는 데이터 개수를 Batch Size라고 합니다.

예를 들어 Batch Size가 32라면, 모델은 차량 이미지를 32장씩 묶어 학습합니다.

전체 차량 이미지: 10,000장
Batch Size: 32장
→ 1번째 묶음 32장, 2번째 묶음 32장, 3번째 묶음 32장 ...

Batch Size는 학습의 안정성과 메모리 사용량에 영향을 줍니다.

Batch Size특징
작음메모리를 적게 사용하지만 학습이 흔들릴 수 있음
학습이 안정적일 수 있지만 메모리를 많이 사용함

초보 단계에서는 Batch Size를 “한 번에 몇 장씩 문제를 풀 것인가”로 이해하면 됩니다.


Step / Iteration: Batch 하나로 한 번 학습하는 과정

Step 또는 Iteration은 Batch 하나를 모델에 넣고, 예측·Loss 계산·가중치 수정까지 한 번 수행한 과정입니다.

예를 들어 차량 이미지 10,000장을 Batch Size 32로 학습한다고 하겠습니다.

전체 데이터: 10,000장
Batch Size: 32장

전체 데이터를 한 번 다 보려면 약 313개의 Batch가 필요합니다.

10,000 ÷ 32 ≈ 313

따라서 1 Epoch는 약 313 Step으로 이루어집니다.

1 Epoch = 약 313 Step

Epoch, Batch, Step의 관계를 문제집에 비유하면 다음과 같습니다.

전체 문제집을 한 번 푼 것 = Epoch
한 페이지 = Batch
한 페이지를 풀고 채점하고 고친 1번의 과정 = Step

즉, Step은 단순히 데이터를 한 번 넣는 것만이 아니라, 모델이 예측하고, 얼마나 틀렸는지 계산하고, 가중치를 한 번 수정하는 과정까지 포함합니다.


Loss: 모델이 얼마나 틀렸는가

Loss 또는 손실값은 모델의 예측과 정답이 얼마나 다른지를 숫자로 나타낸 값입니다.

예를 들어 차량 탐지 모델이 다음처럼 예측했다고 하겠습니다.

예측: 차량 위치는 화면 왼쪽, 확률 60%

그런데 실제 정답 라벨은 다음과 같습니다.

정답: 차량은 화면 중앙에 있음

예측과 정답이 다릅니다. 이 차이를 숫자로 계산한 값이 Loss입니다.

Loss가 크다 = 많이 틀렸다
Loss가 작다 = 덜 틀렸다

학습의 목표는 이 Loss를 줄이는 것입니다. 모델은 학습을 반복하면서 Loss가 작아지도록 가중치를 수정합니다.

다만 여기서 중요한 점이 있습니다. Loss는 “얼마나 틀렸는지”를 나타내는 값이고, 이 값만으로는 어떤 가중치를 얼마나 고쳐야 할지 바로 알 수 없습니다.

그래서 다음 단계에서 BackpropagationOptimizer가 필요합니다.


Backpropagation: 각 가중치가 Loss에 얼마나 영향을 줬는지 계산하기

Backpropagation, 즉 역전파는 오차를 뒤쪽에서 앞쪽으로 거슬러 전달하면서, 각 가중치가 Loss에 얼마나 영향을 줬는지 계산하는 과정입니다.

모델은 여러 층으로 이루어져 있습니다.

입력 → 1층 → 2층 → 3층 → 예측 결과

예측 결과가 틀렸다면, 마지막 결과만 보고는 어느 층의 어떤 가중치를 얼마나 고쳐야 할지 알기 어렵습니다.

그래서 모델은 오차를 뒤쪽 층부터 앞쪽 층으로 거슬러 계산합니다.

입력 → 1층 → 2층 → 3층 → 예측 결과
        ← 오차를 뒤로 전달하며 각 가중치의 영향 계산 ←

쉽게 말하면 역전파는 다음 질문에 답하는 과정입니다.

이번 예측이 틀린 데 각 가중치가 얼마나 영향을 줬을까?

정확히 구분하면, Backpropagation은 가중치를 직접 고치는 과정이라기보다 가중치를 어떻게 고쳐야 할지에 필요한 정보를 계산하는 과정입니다.

그 계산 결과를 바탕으로 실제 가중치를 수정하는 역할은 Optimizer가 합니다.


Optimizer: 가중치를 실제로 수정하는 방법

Optimizer는 손실값을 줄이기 위해 가중치를 어떻게 수정할지 정하는 방법입니다.

학습 과정에서 역할을 나누면 다음과 같습니다.

Loss = 얼마나 틀렸는지 계산
Backpropagation = 각 가중치가 Loss에 얼마나 영향을 줬는지 계산
Optimizer = 그 정보를 바탕으로 가중치를 수정

대표적인 Optimizer로는 다음이 있습니다.

SGD
Adam
RMSProp

입문 단계에서는 Adam을 자주 보게 됩니다. Adam은 여러 상황에서 안정적으로 잘 동작하는 편이라 예제 코드에서도 많이 사용됩니다.

간단히 말하면 Optimizer는 모델에게 이렇게 말하는 역할입니다.

이번에는 이 방향으로, 이 정도만큼 가중치를 고쳐보자.

Learning Rate: 얼마나 크게 고칠 것인가

모델은 Loss를 줄이기 위해 가중치를 수정합니다. 이때 한 번에 얼마나 크게 수정할지 정하는 값이 Learning Rate, 즉 학습률입니다.

Learning Rate는 Optimizer가 가중치를 수정할 때 사용하는 중요한 설정값입니다.

비유하면 “공부 방향을 고칠 때 얼마나 크게 고칠 것인가”입니다.

Learning Rate가 너무 크면 문제가 생길 수 있습니다.

너무 크게 수정함
→ 정답에 가까워지지 못하고 주변에서 계속 튐
→ 학습이 불안정해짐

반대로 Learning Rate가 너무 작아도 문제가 있습니다.

너무 조금씩 수정함
→ 학습이 너무 느림
→ 좋은 결과에 도달하기 어려움

정리하면 다음과 같습니다.

Learning Rate결과
너무 큼정답 주변에서 튀어 학습이 불안정할 수 있음
적절함손실값이 안정적으로 줄어듦
너무 작음학습이 매우 느려질 수 있음

Learning Rate는 딥러닝 학습에서 매우 중요한 설정값입니다.


Gradient Descent: Loss가 줄어드는 방향으로 이동하기

Gradient Descent, 즉 경사하강법은 손실값이 줄어드는 방향으로 가중치를 수정한다는 기본 원리입니다.

비유해보겠습니다.

안개가 낀 산 위에 서 있고, 가장 낮은 지점으로 내려가야 한다고 하겠습니다. 주변이 잘 보이지 않을 때 할 수 있는 것은 발밑의 경사를 보고 아래쪽으로 조금씩 내려가는 것입니다.

딥러닝도 비슷합니다.

현재 가중치에서 Loss 계산
→ Loss가 줄어드는 방향 계산
→ 가중치 조금 수정
→ 다시 Loss 계산

이 과정을 반복하면서 모델은 손실값이 낮아지는 방향으로 이동합니다.

여기서 Gradient Descent와 Optimizer의 관계를 구분하면 좋습니다.

Gradient Descent = Loss가 줄어드는 방향으로 내려간다는 기본 아이디어
Optimizer = 그 아이디어를 실제 학습에서 적용하는 구체적인 방법

예를 들어 SGD는 Gradient Descent의 기본적인 형태에 가깝고, Adam은 학습이 더 안정적으로 진행되도록 여러 보정 방법을 추가한 Optimizer라고 이해하면 됩니다.


학습 과정의 핵심 관계 정리

지금까지 나온 개념을 한 번 정리해보겠습니다.

차량 이미지 한 Batch가 모델에 들어가면 다음 과정이 일어납니다.

1. 모델이 차량 위치와 확률을 예측합니다.
2. 정답 라벨과 비교해 Loss를 계산합니다.
3. Backpropagation으로 각 가중치가 Loss에 준 영향을 계산합니다.
4. Optimizer가 그 정보를 사용해 가중치를 수정합니다.
5. Learning Rate는 수정 폭을 조절합니다.

이 관계가 2탄에서 가장 중요한 부분입니다.

조금 더 짧게 정리하면 다음과 같습니다.

Loss = 얼마나 틀렸는가
Backpropagation = 무엇이 얼마나 영향을 줬는가
Optimizer = 어떻게 고칠 것인가
Learning Rate = 얼마나 크게 고칠 것인가

이 과정 하나가 Step입니다. 이 Step이 반복되면 1 Epoch가 되고, 여러 Epoch를 반복하면서 모델은 점점 차량을 잘 찾게 됩니다.


Hyperparameter: 사람이 정하는 학습 설정값

Hyperparameter는 모델이 학습으로 스스로 배우는 값이 아니라, 사람이 학습 전에 미리 정하는 설정값입니다.

대표적인 예시는 다음과 같습니다.

Epoch 수
Batch Size
Learning Rate
Optimizer 종류
모델 구조
이미지 크기

가중치는 학습을 통해 모델이 직접 조정하는 값입니다. 반면 Hyperparameter는 개발자가 미리 정해주는 값입니다.

정리하면 다음과 같습니다.

가중치 = 모델이 학습하면서 스스로 바꾸는 값
Hyperparameter = 사람이 학습 전에 정하는 설정값

좋은 성능을 얻으려면 Hyperparameter를 적절히 정하는 것이 중요합니다.


Overfitting과 Underfitting

모델이 학습된다고 해서 항상 좋은 방향으로만 가는 것은 아닙니다. 대표적인 문제가 OverfittingUnderfitting입니다.

Overfitting, 즉 과적합은 모델이 학습 데이터에는 너무 잘 맞지만 새로운 데이터에는 잘 동작하지 못하는 상태입니다.

예를 들어 특정 주차장 차량 이미지로만 학습한 모델을 생각해보겠습니다. 이 모델은 그 주차장에서는 차량을 잘 찾지만, 실제 도로 영상에서는 잘 찾지 못할 수 있습니다.

차량의 일반적인 특징을 배운 것이 아니라 특정 이미지에 과도하게 맞춰진 것입니다.

쉽게 말해 과적합은 문제집 정답만 외운 상태입니다.

반대로 Underfitting, 즉 과소적합은 모델이 학습 데이터조차 제대로 맞추지 못하는 상태입니다.

차량 이미지로 학습했는데도 학습 데이터에서 차량을 잘 찾지 못한다면 과소적합일 수 있습니다.

과소적합은 모델 구조가 너무 단순하거나, 학습이 부족하거나, 설정이 적절하지 않을 때 발생할 수 있습니다.

과적합 = 문제집은 외웠지만 응용 문제를 못 풂
과소적합 = 문제집도 제대로 못 풂

좋은 모델은 학습 데이터뿐 아니라 새로운 데이터에서도 잘 동작해야 합니다.


전체 학습 흐름 정리

차량 탐지 모델의 학습 과정을 전체적으로 보면 다음과 같습니다.

1. 차량 이미지와 라벨을 준비합니다.
2. 데이터를 Batch 단위로 나눕니다.
3. Batch 하나를 모델에 입력해 차량 위치와 확률을 예측합니다.
4. 정답 라벨과 비교해 Loss를 계산합니다.
5. Backpropagation으로 각 가중치가 Loss에 얼마나 영향을 줬는지 계산합니다.
6. Optimizer가 Learning Rate를 기준으로 가중치를 수정합니다.
7. 이 과정이 1 Step입니다.
8. 여러 Step을 반복해 전체 데이터를 한 번 다 보면 1 Epoch입니다.
9. 여러 Epoch를 반복하며 모델을 개선합니다.
10. 검증 데이터로 과적합 여부를 확인합니다.
11. 학습이 끝나면 테스트 데이터로 최종 평가합니다.

마무리

딥러닝 학습은 모델이 예측하고, 틀린 정도를 계산하고, 가중치를 조금씩 수정하는 과정을 반복하는 것입니다.

차량 탐지 예시로 보면 모델은 차량 이미지를 보고 차량 위치와 확률을 예측합니다. 예측이 정답과 다르면 Loss가 계산됩니다. Backpropagation은 각 가중치가 Loss에 얼마나 영향을 줬는지 계산합니다. Optimizer는 그 계산 결과를 바탕으로 가중치를 수정합니다. Learning Rate는 이때 가중치를 얼마나 크게 수정할지 정합니다.

이 과정이 Batch, Step, Epoch 단위로 반복되면서 모델은 점점 차량을 잘 찾게 됩니다.

핵심 개념을 정리하면 다음과 같습니다.

개념의미비유
Epoch전체 데이터를 한 번 모두 학습문제집 1회독
Batch한 번에 학습하는 데이터 묶음문제집 한 페이지
Batch SizeBatch에 들어가는 데이터 개수한 번에 푸는 문제 수
Step / IterationBatch 하나로 예측, Loss 계산, 가중치 수정까지 한 번 수행한 페이지 풀이와 오답 수정 1번
Loss모델이 얼마나 틀렸는지 나타내는 값오답 정도
Backpropagation각 가중치가 Loss에 얼마나 영향을 줬는지 계산틀린 원인 분석
Optimizer계산 결과를 바탕으로 가중치를 수정하는 방법공부 방향 조정 방식
Learning Rate가중치를 얼마나 크게 수정할지수정 폭
Gradient DescentLoss가 줄어드는 방향으로 이동하는 기본 원리산 아래로 내려가기
Hyperparameter사람이 미리 정하는 학습 설정값학습 계획
Overfitting학습 데이터에만 지나치게 맞음문제집 암기
Underfitting학습 데이터도 제대로 못 맞춤공부 부족

결국 2탄의 핵심은 다음 한 문장으로 정리할 수 있습니다.

딥러닝 학습은 모델이 예측하고, Loss를 계산하고, Backpropagation으로 원인을 계산한 뒤, Optimizer가 Learning Rate에 맞춰 가중치를 수정하는 과정을 Batch, Step, Epoch 단위로 반복하는 것입니다.

댓글