Develop/ML·DL

인공신경망 - 기울기를 알아보자.

YOOZI. 2025. 2. 6. 09:20
728x90
최적의 가중치를 찾아가는 여정

 

 

 

오늘은 기울기에 대해 알아보자.

 

 

오늘의 배움
  • 경사 하강법의 원리와 구현
  • 신경망에서의 기울기 문제
  • 기울기 소실/폭발 문제와 해결방법

1. 기울기와 경사 하강법

 

  • 정의: 손실 함수의 기울기를 이용해 최적의 가중치를 찾아가는 최적화 방법
  • 핵심 개념 한 줄 설명: 산을 내려갈 때처럼 가장 가파른 방향으로 내려가면서 최저점을 찾는 방법
  • 특징:
    • 직관적이고 구현이 비교적 간단하다
    • 학습률 설정이 중요하다
    • 지역 최저점에 빠질 수 있다
[핵심 공식]
- 경사하강법: w = w - lr * ∇f(w)
- 기울기 클리핑: clip(gradient, -threshold, threshold)
- 배치 정규화: y = γ * ((x - μ)/σ) + β
📚 실제 예시로 이해하기
  • [일상적인 예시] 등산객이 안개 낀 산에서 하산하는 상황:
    • 현재 위치에서 가장 가파른 방향 확인
    • 적절한 보폭(학습률)으로 아래로 이동
    • 계곡(최저점)에 도달할 때까지 반복

 

출처: https://aicorr.com/articles/what-is-gradient-descent-in-machine-learning/

def gradient_descent(f, init_x, lr=0.1, step_num=100):
    x = init_x
    for _ in range(step_num):
        grad = numerical_diff(f, x)
        x -= lr * grad
    return x

def function(x):
    return x**2

print(gradient_descent(function, 10.0))

 


2. 핵심 개념 정리

  • [경사하강법의 기본 원리]
    • 정의: 기울기의 반대 방향으로 이동하며 최적점을 찾는 방법
    • 작동 원리: 현재 위치의 기울기 계산 → 기울기 반대 방향으로 이동
    • 특징: 학습률이 중요한 하이퍼파라미터
    • 예시: 이차함수의 최소값 찾기
  • [기울기 문제와 해결방법]
    • 정의: 기울기 소실(Vanishing Gradient)과 폭발 문제(Exploding Gradient)
    • 작동 원리: 활성화 함수와 네트워크 구조에 따른 기울기 변화
    • 특징: 깊은 신경망에서 자주 발생
    • 해결방법: ReLU 사용, 배치 정규화, 그래디언트 클리핑
  • [신경망에서의 기울기]
    • 작동 원리: 가중치에 대한 손실 함수의 기울기를 구해야함
    • 특징: 자동 미분(AutoGrad)과 역전파(Backpropagation) 알고리즘을 통해 효율적으로 계산

 

 

2-1. 기울기 소실(Vanishing Gradient) 문제

  • 심층 신경망에서는 역전파 시 기울기가 점차 작아져 초기 층까지 전달되지 않는 문제가 발생할 수 있다.
  • 특히 시그모이드(Sigmoid)나 하이퍼볼릭 탄젠트(Tanh) 함수 같은 활성화 함수를 사용할 경우, 기울기가 0에 수렴하는 현상이 발생할 가능성이 크다.
  • 해결 방법
    • 활성화 함수 변경: 렐루(ReLU)나 리키 렐루(Leaky ReLU) 등의 함수를 사용하면 기울기 소실 문제를 완화할 수 있다.
    • 잔차 연결(Residual Connection): ResNet 등의 네트워크에서 층을 건너뛰는 연결을 추가하여 기울기의 흐름을 원활하게 만든다.
      출처: https://ducj.tistory.com/228
# ReLU 활성화 함수
def relu(x):
    return max(0, x)

# 배치 정규화
def batch_norm(x, gamma, beta):
    mu = np.mean(x)
    sigma = np.std(x)
    return gamma * (x - mu)/sigma + beta

 

 

2-2. 기울기 폭발(Exploding Gradient) 문제

  • 기울기가 너무 커져서 가중치가 비정상적으로 갱신되는 현상이다.
  • RNN(Recurrent Neural Network)과 같이 깊은 네트워크에서 발생하기 쉽다.
  • 해결 방법
    • 그래디언트 클리핑(Gradient Clipping): 기울기의 크기를 일정 수준 이상 증가하지 않도록 제한한다.
    • 가중치 초기화 기법 활용: Xavier 초기화나 He 초기화를 사용하여 안정적인 학습을 유도한다.

 

2-3. 기울기 계산의 수치적 안정성

  • 기울기 계산 중 발생하는 수치적 불안정성을 방지하기 위해 정규화 기법을 사용할 수 있다.
    • 배치 정규화(Batch Normalization): 각 층의 입력을 정규화하여 학습을 안정화한다.
    • L2 정규화: 가중치 값이 과도하게 커지는 것을 방지하여 오버피팅을 줄인다.

비교 분석표

최적화 기법 장점 단점 적용 상황
SGD 구현 간단 수렴 느림 기본 학습
Momentum 수렴 빠름 하이퍼파라미터 추가 일반적 상황
Adam 안정적 메모리 사용량 큼 복잡한 모델

 

728x90