728x90
반응형


데이터 입력부터 가중치 업데이트, 그리고 테스트까지 어떤 순서로 진행되는지 알아보려고 합니다.
이 글에서는 딥러닝의 학습 전 과정에 대해, 특히 Activation FunctionOptimizer의 역할을 확실히 구별하여 전체 흐름을 이해하기 쉽게 정리했습니다.

1. 딥러닝 학습의 전체 흐름 요약

  1. 데이터 입력
  2. 순전파 (Forward Propagation)
  3. 손실 함수 계산 (Loss)
  4. 역전파 (Backpropagation)
  5. 옵티마이저로 가중치 업데이트
  6. 위 과정을 여러 Epoch 반복
  7. 학습 완료 후 테스트 데이터로 성능 평가

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
반응형

+ Recent posts