그라디언트 이해: Neural Network 학습을 이끄는 엔진

발행: (2025년 12월 27일 오전 06:08 GMT+9)
4 min read
원문: Dev.to

Source: Dev.to

이전 기사에서는 활성화 함수에 대해 살펴보고 Python을 사용해 시각화했습니다.
이제는 그라디언트가 무엇인지 알아보겠습니다.

What Is a Gradient?

신경망은 활성화 함수를 사용해 입력을 변환합니다. 네트워크가 잘못된 출력을 만들면, 무엇을 어떻게 조정해야 할지 알아야 하는데, 이때 그라디언트가 사용됩니다.

  • 언덕을 걷는 것을 생각해 보세요: 가파른 경사는 위쪽과 아래쪽을 명확히 알려주지만, 평평한 지역은 방향을 결정하기 어렵게 합니다.
  • 그라디언트는 특정 지점에서 곡선이 얼마나 가파른지를 나타내는 숫자입니다.

Gradients in Neural Networks

  • 그라디언트는 파라미터를 얼마나 바꿔야 하는지를 알려줍니다.
  • 그라디언트가 클수록 업데이트가 크게 이루어집니다.
  • 그라디언트가 0이면 학습이 멈춥니다.

학습 과정:

  1. 예측을 수행합니다.
  2. 손실을 계산합니다(예측이 얼마나 틀렸는지).
  3. 손실을 줄이도록 가중치를 업데이트합니다.

가중치 업데이트는 전적으로 그라디언트에 의존합니다.

각 활성화 함수는 다음을 가집니다:

  • 곡선(활성화 자체).
  • 그라디언트 곡선(활성화의 미분).

ReLU Gradient

import numpy as np
import matplotlib.pyplot as plt

def relu_grad(x):
    return np.where(x > 0, 1, 0)

# Example usage
x = np.linspace(-5, 5, 400)
plt.figure()
plt.plot(x, relu_grad(x), label="ReLU Gradient")
plt.title("Gradient of ReLU")
plt.xlabel("Input")
plt.ylabel("Gradient")
plt.grid(True)
plt.legend()
plt.show()

Observations

  • 전체 음수 영역의 그라디언트는 0입니다.
  • 양수 영역은 일정한 그라디언트 1을 가집니다.

Implications

  • ReLU는 활성화될 때 매우 빠르게 학습합니다.
  • ReLU 뉴런은 항상 음수 입력만 받으면 “죽을” 수 있습니다.

Softplus Gradient

def softplus_grad(x):
    return 1 / (1 + np.exp(-x))

# Plotting
plt.figure()
plt.plot(x, softplus_grad(x), label="Softplus Gradient")
plt.title("Gradient of Softplus")
plt.xlabel("Input")
plt.ylabel("Gradient")
plt.grid(True)
plt.legend()
plt.show()

Observations

  • 그라디언트 형태가 시그모이드 활성화와 일치합니다.
  • 부드러운 전이를 제공하므로 학습이 완전히 멈추지 않습니다.

Implications

  • Softplus는 뉴런이 죽는 현상을 방지하고 안정성을 높여 주지만, ReLU보다 학습 속도가 느립니다.

Sigmoid Gradient

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

def sigmoid_grad(x):
    s = sigmoid(x)
    return s * (1 - s)

# Plotting
plt.figure()
plt.plot(x, sigmoid_grad(x), label="Sigmoid Gradient")
plt.title("Gradient of Sigmoid")
plt.xlabel("Input")
plt.ylabel("Gradient")
plt.grid(True)
plt.legend()
plt.show()

Observations

  • 양극단(큰 양수 또는 큰 음수 입력)에서는 그라디언트가 매우 작습니다.
  • 곡선의 중간 부분에서만 강한 그라디언트를 가집니다.

Implications

  • 이러한 특성 때문에 소실 그라디언트 문제가 발생하며, 이는 깊은 네트워크의 학습을 방해합니다. 다음 기사에서 이 문제를 더 자세히 살펴보겠습니다.

Try It Yourself

위의 코드 스니펫을 Colab 노트북에서 직접 실험해 볼 수 있습니다.

Back to Blog

관련 글

더 보기 »