본문 바로가기
학습/AI

활성화 함수, 오차 역전파, 경사하강법

by 황성안 2025. 11. 8.
728x90
반응형

🎯 학습 목표

  • 활성화 함수의 개념과 종류를 이해한다.
  • 오차 역전파(Backpropagation)의 개념을 이해한다.
  • 경사하강법(Gradient Descent)의 다양한 종류를 학습한다.
  • Keras에서의 적용 방법을 이해한다.

🔋 1. 활성화 함수 (Activation Function)

🧩 개념

  • 신경망은 단순한 선형 회귀와 달리 각 층의 출력을 그대로 전달하지 않고,
    활성화 함수를 통해 비선형 변환을 수행한다.
  • 실제 뉴런처럼 “역치(threshold)” 이상일 때만 다음 뉴런으로 신호를 전달하는 구조를 모방.
  • 비선형성을 도입해야 다층 구조의 효과가 살아난다.
    복잡한 패턴 인식이 가능

🔸 활성화 함수의 역할

  • 모델에 비선형성(Non-linearity) 추가
  • 학습된 패턴의 일반화 성능 향상
  • 분류 문제 해결을 위해 필수적

🔹 주요 활성화 함수 비교

함수수식 / 개념특징주요 사용처
Step Function 출력이 0 또는 1 단순한 분류, 미분 불가 고전적 구조
Sigmoid f(x)=11+e−xf(x)=\frac{1}{1+e^{-x}} 출력 범위 (0~1), 미분 가능 이진 분류
Tanh f(x)=tanh⁡(x)f(x)=\tanh(x) 출력 (-1~1), 중심화된 데이터 처리 RNN
ReLU f(x)=max⁡(0,x)f(x)=\max(0,x) 학습 속도 빠름, Gradient Vanishing 해결 CNN, 대부분의 신경망
Softmax 각 클래스 확률 합=1 다중 분류에서 확률화된 출력 분류 모델 출력층

💡 중간층에서 선형 함수 사용 시 문제점

  • 선형함수 h(x)=xh(x) = x 를 사용하면, 아무리 층을 쌓아도 단층 선형 모델과 동일한 효과
  • 즉, 비선형 활성화 함수를 반드시 사용해야 함

🧠 다중분류(Softmax) 예시

  • 출력층의 각 퍼셉트론이 각 클래스의 확률을 출력
  • 모든 확률의 합이 1이 되도록 정규화
  • 예측값과 실제 정답(원-핫 인코딩된 벡터)을 비교하여 학습
  • 오차 계산을 위해 출력의 범위가 0~1이어야 함 (Sigmoid/Softmax 사용)

🔢 활성화 함수 & 손실함수 매칭

문제 유형출력층 활성화 함수손실함수(Loss Function)
회귀(Regression) Linear (항등 함수) MSE (Mean Squared Error)
이진 분류(Binary) Sigmoid Binary Crossentropy
다중 분류(Multi-Class) Softmax Categorical Crossentropy

🔁 2. 오차 역전파 (Backpropagation)

🔹 개념

  • 순전파(Forward Propagation)
    입력 데이터를 네트워크를 통해 전달하며 예측값 계산
  • 역전파(Backward Propagation)
    예측값과 실제값의 오차(Error) 를 계산하고,
    그 오차를 역방향으로 전파하여 가중치(w)와 편향(b) 을 업데이트

🔸 핵심 아이디어

  1. 손실함수 LL 을 각 가중치 ww 에 대해 미분(∂L/∂w)
  2. 기울기(Gradient)를 이용해 손실이 줄어드는 방향으로 업데이트
  3. 이 과정을 반복하며 모델을 최적화

🔹 학습 흐름 요약

 
입력 → 순전파 → 손실 계산 → 역전파 → 가중치 업데이트 → 반복

⛰️ 3. 경사하강법 (Gradient Descent)

🧮 개념

손실함수의 기울기(Gradient)를 이용해
가장 낮은 손실값(최적점, Minimum) 을 찾는 최적화 알고리즘

w=w−α∂L∂ww = w - \alpha \frac{\partial L}{\partial w}

  • α\alpha: 학습률(Learning Rate)
  • ∂L∂w\frac{\partial L}{\partial w}: 기울기(Gradient)

⚙️ 경사하강법의 종류

알고리즘설명장단점
Batch Gradient Descent 전체 데이터를 이용해 한 번에 업데이트 안정적이지만 느림
Stochastic Gradient Descent (SGD) 1개의 샘플로 즉시 업데이트 빠르지만 불안정
Mini-Batch Gradient Descent 일부 샘플(batch_size) 단위로 업데이트 효율적, 가장 일반적 방식

🧠 모멘텀 (Momentum)

  • 이전 기울기의 방향을 일정 비율로 유지하며 업데이트
  • 진동(Zigzag)을 줄이고 수렴을 빠르게 함
  • 일반적으로 m=0.9m = 0.9 정도 사용

수식:
vt=mvt−1−α∇L(wt)v_t = m v_{t-1} - \alpha \nabla L(w_t)
wt+1=wt+vtw_{t+1} = w_t + v_t


⚡ 네스테로프 모멘텀 (Nesterov Accelerated Gradient)

  • 모멘텀의 단점(불필요한 overshoot) 개선
  • **“미리 이동한 위치”**에서 기울기를 계산해 더 효율적
  • 불필요한 방향 이동 감소 → 수렴 가속화

🧮 적응적 학습률 (Adaptive Learning Rate)

알고리즘특징
Adagrad 학습 초기에 큰 보폭으로, 이후 점차 학습률 감소
RMSProp Adagrad의 단점(학습률 급감) 개선, 최근 기울기 반영
Adam Momentum + RMSProp 결합, 대부분의 딥러닝에서 표준
Nadam / AdamW Adam의 변형, 정규화와 안정성 향상

💻 Keras에서의 Optimizer 예시

 
from tensorflow.keras.optimizers import SGD, Adam model.compile(
  optimizer=Adam(learning_rate=0.001),
  loss='categorical_crossentropy',
  metrics=['accuracy']
)

지원 Optimizer: SGD, Momentum, NAG, Adagrad, RMSprop, Adam 등


🧩 종합 정리

항목핵심 내용
활성화 함수 비선형성을 추가해 복잡한 패턴 학습 가능
오차 역전파 손실의 기울기를 계산하여 가중치 갱신
경사하강법 손실을 최소화하는 방향으로 학습 진행
최적화 기법 SGD → Momentum → NAG → Adam 순으로 발전
Keras 적용 Optimizer와 Activation 함수 조합으로 손쉽게 구현 가능

✨ 한 줄 요약

활성화 함수는 신경망의 비선형성을 부여하고,
오차 역전파와 경사하강법은 그 신경망이 학습하도록 만드는 핵심 엔진이다.


 

728x90
반응형