[Coursera/IBM course #2] Backpropagation & Vanishing Gradient & Activation Functions

2025. 5. 11. 15:57·🥇 certification logbook
728x90
반응형

 

[IBM AI course #2] Introduction to Deep Learning & Neural Networks with Keras

 

Backpropagation

신경망이 가중치(w)와 편향(b)을 최적화하여 학습하는 방법을 이해

역전파(backpropagation)를 통해 오차를 이용한 가중치/편향의 업데이트 과정 설명

 

딥러닝 모델 학습 과정

1.초기화: 가중치와 편향을 무작위로 설정

2.순전파 (Forward Propagation): 입력 → 출력 계산

3.오차 계산: 예측값과 정답(레이블) 간 차이 계산 (손실 함수)

4.역전파 (Backpropagation): 오차를 각 가중치/편향에 대해 미분하여 기울기(gradient) 계산

5.가중치/편향 업데이트: 경사하강법을 이용해 업데이트

 

위 과정을 지정된 에폭 수 또는 오차 기준치 도달 시까지 반복

 

 

[코드로 이해] XOR 문제 해결

x1 x2 d (XOR)
0 0 0
0 1 1
1 0 1
1 1 0

 

네트워크는 입력층(2개) → 은닉층(2개) → 출력층(1개) 구조로 구성

# 입력 (x1, x2)
# → 은닉층 (z1 → a1)
# → 출력층 (z2 → a2)
# → 오차 계산 (d - a2)
# → 역전파 (출력층 → 은닉층)
# → 가중치, 편향 업데이트
# → 반복

for epoch in range(epochs):
	z1 = np.dot(w1, X) + b1
	a1 = 1 / (1 + np.exp(-z1))  # 은닉층 활성화값 (Sigmoid)
	
	z2 = np.dot(w2, a1) + b2
	a2 = 1 / (1 + np.exp(-z2))  # 출력층 활성화값 (Sigmoid)
	
	error = d - a2 # 예측값 a2와 실제값 d사이의 오차 계산.
	da2 = error * (a2 * (1 - a2))  # 출력층의 gradient
	
	da1 = np.dot(w2.T, da2)        # 은닉층으로 역전파된 gradient
	dz1 = da1 * (a1 * (1 - a1))    # 은닉층 gradient
	
	# 가중치 & 편향 업데이트
	w2 += lr * np.dot(da2, a1.T)
	b2 += lr * np.sum(da2, axis=1, keepdims=True)
	w1 += lr * np.dot(dz1, X.T)
	b1 += lr * np.sum(dz1, axis=1, keepdims=True)

 

* sigmoid 함수 : $ \sigma(z) = \frac{1}{1 + e^{-z}} $

sigmoid 함수를 미분하면 : $\sigma'(z) = \sigma(z)(1 - \sigma(z)) $

즉, $ \frac{d}{dz} \left( \frac{1}{1 + e^{-z}} \right) = a2 (1 - a2) $

 

* chain rule에 의해,

$\frac{\partial E}{\partial z2} =\frac{\partial E}{\partial a2} ⋅\frac{\partial a2}{\partial z2}$

$\frac{\partial E}{\partial a2} = -(d - a2) = -error$

$\frac{\partial a2}{\partial z2} = a2(1 - a2)$

결과적으로:

$\frac{\partial E}{\partial z2} = -error \cdot a2(1 - a2)$

 

Vanishing Gradient

Vanishing Gradient 문제란, 역전파(backpropagation) 중 기울기(gradient)가 점점 작아져서 앞쪽 레이어(early layers)가 거의 학습되지 않는 문제를 말함.

 

이 문제는 주로 Sigmoid나 tanh 같은 전통적인 활성화 함수를 사용할 때 발생

예를 들어, Sigmoid 함수에서 출력값은 항상 0과 1 사이이기 때문에

역전파 중 연쇄적으로 1보다 작은 값들끼리 곱해짐

→ 그런데 곱해지는 값이 대부분 1보다 작기 때문에

→ 레이어를 거칠수록 기울기가 매우 작아지며 거의 0에 가까워짐

→ 기울기 소멸

 

영향

전체 모델 학습 속도가 현저히 느려지고, 최종 성능(정확도)도 저하될 수 있음

→ 실제로 과거에는 이 문제로 인해 신경망 기반 모델이 널리 사용되지 못함

 

해결 방안

Sigmoid, tanh 함수 사용 지양

대신, ReLU 계열의 함수 사용 (예: ReLU, Leaky ReLU 등)

 

정리

Sigmoid 함수의 한계로 인한 Vanishing Gradient는 딥러닝 발전에 큰 제약이 되었음

현재는 ReLU 같은 비선형 함수 사용으로 해당 문제를 극복하며 딥러닝이 활성화됨

 

Activation Functions 

활성화 함수는 신경망의 학습과 표현 능력에 중요한 역할을 함.

특히 비선형성 부여를 통해 신경망이 단순 선형 모델을 넘어 복잡한 문제를 학습 가능하게 함.

 

주요 활성화 함수

총 7가지 유형이 존재.  
Binary step function, Linear function, Sigmoid function, Hyperbolic tangent function(tanh), Rectified linear unit (ReLU) function, Leaky ReLU function, Softmax function.

 

1. Sigmoid (시그모이드)

과거에 은닉층에서 많이 사용되었으나 지금은 잘 쓰이지 않음

$$a = 1 / (1 + exp(-z))$$

  • 출력 범위: 0 ~ 1
  • z=0일 때 출력은 0.5
  • 입력이 ±3 이상이면 출력 평탄(flat) → gradient 거의 0

단점

Vanishing Gradient 문제 발생

0~1 범위로 인해 출력이 모두 양수 → 중심 대칭 아님

 

2. Tanh (Hyperbolic Tangent)

$$a = tanh(z) = (exp(z) - exp(-z)) / (exp(z) + exp(-z))$$

  • 출력 범위: -1 ~ 1
  • Sigmoid보다 중심 대칭성 확보

단점

여전히 Vanishing Gradient 문제 존재

깊은 신경망에서 gradient가 소멸될 수 있음

 

3. ReLU (Rectified Linear Unit)

현재 은닉층에서 가장 널리 사용되는 활성화 함수

$$a = max(0, z)$$

  • 음수는 0, 양수는 그대로 출력
  • 비활성화된 뉴런(sparsity) 발생 → 계산 효율성 증가
  • Vanishing Gradient 문제 완화

단점

Dead Neuron 문제 (입력이 항상 음수일 경우 gradient 0)

 

4. Softmax

$$a_i = exp(z_i) / sum(exp(z_j))$$

→ 출력층의 각 뉴런에 적용

  • 출력의 확률화 → 모든 출력의 합이 1
  • 주로 분류 모델의 출력층에서 사용 (예: [1.6, 0.55, 0.98] → [0.51, 0.18, 0.31])

 

권장 사항

Sigmoid, tanh 함수는 vanishing gradient로 인해 현재는 잘 사용되지 않음.

ReLU는 기본값으로 시작하기 좋으며, 성능이 좋지 않을 때 다른 함수로 교체 가능.

Softmax는 분류 문제에서 출력층 전용으로 사용.

728x90
반응형

'🥇 certification logbook' 카테고리의 다른 글

[Coursera/IBM course #2] Using Pretrained Models & Fine-Tuning  (0) 2025.05.18
[Coursera/IBM course #2] Transformers & Autoencoders  (1) 2025.05.18
[Coursera/IBM course #2] CNN & RNN  (1) 2025.05.17
[Coursera/IBM course #2] Deep Learning Libraries & Keras Models  (1) 2025.05.17
[Coursera/IBM course #2] Gradient Descent  (0) 2025.05.11
[Coursera/IBM course #2] Neurons and Neural Networks & Artificial Neural Networks  (0) 2025.05.10
[Coursera/IBM] Introduction to Deep Learning & Neural Networks with Keras 코스 소개  (1) 2025.05.10
[Coursera/IBM course #1] Evaluating and Validating Machine Learning Models  (0) 2025.05.10
'🥇 certification logbook' 카테고리의 다른 글
  • [Coursera/IBM course #2] CNN & RNN
  • [Coursera/IBM course #2] Deep Learning Libraries & Keras Models
  • [Coursera/IBM course #2] Gradient Descent
  • [Coursera/IBM course #2] Neurons and Neural Networks & Artificial Neural Networks
이소야
이소야
✔ 공부 기록 ٩(๑•̀o•́๑)و
  • 이소야
    I study SO
    이소야
    ✔ 공부 기록 ٩(๑•̀o•́๑)و
  • 전체
    오늘
    어제
    • 분류 전체보기 (216)
      • 🤖 ai logbook (39)
      • 💻 developers logbook (1)
      • 🥇 certification logbook (66)
      • ⚖️ legal logbook (108)
      • ⚡ electronics logbook (1)
      • 🌍 english logbook (0)
      • 🎁 etc (1)
  • 최근 글

  • 인기 글

  • 태그

    ADsP
    인공지능 입문
    형법
    IBM
    온라인 강의 추천
    빅데이터분석기사
    자격증
    deeplearning
    데이터사이언스 입문
    Python
    민법
    Coursera
    방통대
    머신러닝
    법학과
    기본권의기초이론
    datascience
    근로기준법
    certificate
    데이터분석준전문가
  • hELLO· Designed By정상우.v4.10.3
이소야
[Coursera/IBM course #2] Backpropagation & Vanishing Gradient & Activation Functions
상단으로

티스토리툴바