DeepLearning/딥러닝 기초

[딥러닝 기초] 경사하강법 Gradient Descent

헬로희 2024. 12. 13. 21:56
728x90

경사하강법에 대해 알기 전 Gradient에 대해서 알아보자.


1. Gradient(기울기, 경사)란?

  • 출력값이 입력값에 따라 얼마나 변하는지 나타내는 값이다.
  • 손실함수(Loss Function)를 최소화하기 위해 가중치를 업데이트하는 과정에서 사용한다.
 

손실 함수(Loss function) 정의 및 유형 별 종류

: 머신러닝과 딥러닝에서 모델의 예측값과 실제값 사이의 차이를 측정하는 함수 모델 학습의 핵심은 이 손실 값을 최소화하는 방향으로 가중치와 편향을 조정하는 것이다.1. 손실함수의 역할오

hello-heehee.tistory.com

1) Scalar 함수일 때

  • Gradient는 1차원 곡선 한 점에서의 기울기를 나타낸다.

스칼라 함수일 때 Gradient

2) Vector 함수일 때

  • Gradient는 여러 입력변수에서의 변화율을 포함한 벡터(Gradient Vector)로 나타낸다.

벡터 함수일 때 Gradient

3) Machine Learning 에서

  • 손실함수를 최소화하기 위해 가중치의 변화를 계산한다.

2. 경사하강법이란?
: 모델을 학습할 때 사용하는 최적화 전략으로 미분 가능한 함수에서 최소값을 찾기 위한 최적화 알고리즘이다.

1) 경사하강법 특징 및 공식

 

  • 손실함수의 기울기를 따라 최소값을 찾아가는 최적화 알고리즘이다.
  • 기울기가 가리키는 방향으로 가중치를 업데이트하여 점진적으로 손실을 줄인다.


2) Gradient 계산

  • 순전파(Forward Propagation)는 입력데이터를 통해 손실을 계산하고,
  • 역전파(Backward Propagation)은 Gradient를 계산하고 가중치를 업데이트 한다.
 

순방향 알고리즘(Forward Propagation) vs 역전파 알고리즘(Back Propagation)

1. 순방향 알고리즘(Forward Propagation): 주어진 입력 데이터를 기반으로 예측 값을 계산하는 과정1) 특징입력층 -> 은닉층 -> 출력층 순으로 계산 (간단하고 직관적인 과정) 예측, 학습 과정에서 사용

hello-heehee.tistory.com


3) Gradient 특징

  • Gradient가 양수면 값을 줄여야 손실이 감소한다.
  • Gradient가 음수면 값을 늘려야 손실이 감소한다.
  • Gradient가 0이면 극값(local minimum, maximum)또는 안장점(saddle point)일 가능성이 있다.

4) Gradient의 한계

  • Gradient는 항상 손실이 감소하는 방향으로 이동하지만, Global Minimum이 아닌 Local Minimum에 도달할 수도 있다.

  • Gradient가 0에 가까운 안장점에 도달하면 학습이 멈출 수도 있다.
  • Gradient가 너무 작아지거나 너무 커져 학습이 불안해 질 수 있다. 이 때 ReLU나 가중치 초기화기법을 사용한다.

3. 경사하강법 Python으로 구현하기

import torch
import torch.nn as nn

# 간단한 모델과 데이터 정의
model = nn.Linear(1, 1)  # 1 입력 -> 1 출력
criterion = nn.MSELoss()  # 손실 함수: 평균제곱오차
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)  # 경사하강법

# 데이터
x = torch.tensor([[1.0]], requires_grad=True)
y = torch.tensor([[2.0]])

# 순전파
output = model(x)
loss = criterion(output, y)

# 역전파
loss.backward()

# 기울기 확인
for param in model.parameters():
    print("Gradient:", param.grad)

# 가중치 업데이트
optimizer.step()

4. Gradient Vanishing(기울기 소실)

1) 정의

  • 역전파 과정중 발생할 수 있는 문제로, Gradient가 점점 작아져서 0에 가까워지는 현상이다.
  • 0에 가까워질 경우 가중치가 제대로 업데이트 되지 않아 학습이 어려워 지거나 멈추게 된다.


2) 원인

  • 시그모이드(Sigmoid)나 하이퍼볼릭 탄젠트(Tanh)와 같은 활성함수는 입력값이 매우 크거나 작으면 기울기가 0에 가까워진다.
  • 신경망이 깊을수록 역전파 과정에서 기울기가 여러 층을 거쳐 곱해지기 때문에 점점 작아지게 된다.
    결과적으로 초기 층의 가중치는 거의 업데이트 되지 않아 학습이 비효율적이다.
  • 가중치 초기값이 너무 크거나 작을 경우 기울기가 0에 가까워지는 경향이 있다.
  • 가중치가 비대칭적으로 초기화되면 기울기가 0에 가까워진다.
 

활성 함수(Activation Function) 정의 및 종류

: 뉴런의 출력값을 결정하는데 사용1. 역할비선형성 추가- 입력과 출력의 관계를 비선형으로 만들어 신경망이 복잡한 데이터 분포를 학습할수 있게 만듦- 비선형 함수가 없으면 여러 층의 뉴런

hello-heehee.tistory.com


3) 영향

  • 초기 층에서 기울기가 0게 가까워지면 가중치가 업데이트 되지 않아 학습이 불안정하다.
  • 네트워크의 일부 층은 가중치가 거의 변화하지 않아 학습 속도 저하가 있다.
  • 모델 성능이 저하되고 더 깊은 신경망 구조를 사용 할 때 얕은 구조보다 나쁜 결과를 초래할 수 있다.

4) 해결방법

활성함수를 변경한다.

  • ReLU
    - 기울기 소실문제를 완화시켜 현재 딥러닝 모델에서 널리 사용된다.
  • Leaky ReLU
    - ReLU의 변형으로 음수영역에서도 작은 기울기를 유지한다.

가중치를 초기화한다.

  • Xavier 초기화
    - Layer의 입력과 출력 뉴런 수에 따라 가중치를 초기화하여 기울기가 소실되거나 커지지 않도록 한다.

  • He 초기화
    - ReLU 계열 활성 함수에 적합하도록 설계된 초기화 방법이다.

Residual Connections

  • ResNet과 같은 구조에서 사용한다.
  • 입력값을 그대로 다음층으로 전달하여 기울기 소실을 방지한다.

Batch Normalization

  • 각 Layer의 입력을 정규화하여 학습 안정성을 높이고 기울기 소실 문제를 완화한다.

 

728x90