728x90
반응형
데이터 입력부터 가중치 업데이트, 그리고 테스트까지 어떤 순서로 진행되는지 알아보려고 합니다.
이 글에서는 딥러닝의 학습 전 과정에 대해, 특히 Activation Function과 Optimizer의 역할을 확실히 구별하여 전체 흐름을 이해하기 쉽게 정리했습니다.
1. 딥러닝 학습의 전체 흐름 요약
- 데이터 입력
- 순전파 (Forward Propagation)
- 손실 함수 계산 (Loss)
- 역전파 (Backpropagation)
- 옵티마이저로 가중치 업데이트
- 위 과정을 여러 Epoch 반복
- 학습 완료 후 테스트 데이터로 성능 평가
2. Step by Step 자세히 설명
1️⃣ 데이터 입력 및 전처리
- 학습에 사용할 데이터를 모델에 넣습니다.
- 예: 이미지 → 픽셀 값, 텍스트 → 임베딩 벡터 등
- 표준화 등을 통해 전처리를 합니다.
2️⃣ 순전파 (Forward Propagation)
입력 데이터를 이용해 초기 예측값(y^hat)을 계산하는 과정입니다.
🔸 2-1. 가중치 연산
z=w⋅x+b
🔸 2-2. 활성화 함수(Activation Function)
a = f(z)
- ReLU, Sigmoid, Tanh 등 사용
- 선형으로 z를 계산한 뒤에 출력값에는 비선형성을 부여하여 복잡한 문제 해결 가능
이 과정이 여러 레이어(뉴런들)들을 거치면서 반복됩니다.
3️⃣ 출력층 → 예측값 도출
- 마지막 레이어에서 초기 예측값 을 출력
- 마지막 레이어에서는 Softmax (분류), Linear (회귀) 등 사용
4️⃣ 손실 함수 계산 (Loss Function)
- 예측값과 실제값 사이의 오차를 계산합니다.
L=loss(y,y^hat)
- 예:
- 이진 분류: Binary Cross-Entropy
- 다중 분류: Categorical Cross-Entropy
- 회귀: Mean Squared Error (MSE)
5️⃣ 역전파 (Backpropagation)
이제 이 Loss를 기준으로 각 파라미터(w, b)에 대해 미분을 시작합니다. 손실 값을 줄이기 위해 각 가중치가 얼마나 영향을 줬는지 계산합니다.
- 가중치에 대한 미분, bias에 대한 미분
- 핵심은 "출력층부터 입력층으로 거꾸로" 가는 것 입니다.
6️⃣ 옵티마이저(Optimizer)로 가중치 업데이트
경사(gradient)를 이용해 파라미터를 조정합니다.
- SGD
- Adam, RMSProp 등은 이 과정을 더 정교하게 개선
7️⃣ Epoch만큼 반복 학습
- 위 과정을 전체 데이터셋에 대해 수천~수만 번 반복
- 모델이 점점 똑똑해짐!
model.fit(x_train, y_train, epochs=10)
8️⃣ (선택) Validation으로 중간 성능 확인
- 학습 중 과적합 여부 확인
- 조기 종료(Early Stopping), 학습률 조정 등에 사용
model.fit(x_train, y_train, validation_data=(x_val, y_val))
9️⃣ 테스트(Test) 데이터로 성능 평가
학습에 사용되지 않은 데이터를 이용해 모델의 일반화 능력 평가
test_loss, test_accuracy = model.evaluate(x_test, y_test)
print("Test Accuracy:", test_accuracy)
- 역전파 ❌ 없음
- 가중치 업데이트 ❌ 없음
- 순전파만 수행하여 예측값을 출력
3. 정리
Activation Function | 뉴런의 출력 결정, 비선형성 부여 |
Optimizer | 손실을 줄이기 위해 파라미터 업데이트 |
Epoch | 전체 데이터셋을 1번 학습하는 단위 |
Test 단계 | 학습에 사용되지 않은 데이터로 성능 확인 |
이 글 하나로 딥러닝의 학습과 테스트 전 과정을 흐름을 이해하셨길 바랍니다.
감사합니다!
728x90
반응형
'전공 > 신경망딥러닝' 카테고리의 다른 글
신경망딥러닝(13)_큰 dataset 처리 with tf dataset API (0) | 2025.04.17 |
---|---|
신경망딥러닝(10)_전이 학습(Transfer Learning) (1) | 2025.04.08 |
신경망딥러닝(1)_개요 (0) | 2025.04.03 |
신경망딥러닝(1)_batch와 epoke (0) | 2025.04.03 |