경사하강법 (Gradient Descent)
신경망 학습의 핵심은 가중치(weight)를 최적의 값으로 찾아내는 것.
이때 손실(loss)을 최소화하는 방향으로 가중치를 조금씩 조정하는 알고리즘이 바로 경사하강법(Gradient Descent)임.
경사하강법이란?
최적의 매개변수를 찾아내기 위해 손실 함수가 최솟값이 될 때의 매개변수 값을 찾기 위한 방법
매개변수 공간이 광대하여 어디가 최솟값이 될 지 짐작할 수 없는 경우 기울기를 이용해 함수의 최솟값 혹은 가장 작은 것을 찾으려고 하는 방법
기울기를 따라 나아가지만, 그 지점이 정말 최솟값인지는 보장할 수 없음.
함수가 극솟값, 최솟값, 또 안장점이 되는 장소에서는 기울기가 0임.
평평한 곳으로 파고들면서 고원이라 하는 학습이 진행되지 않는 정체기에 빠질 수 있음.

학습률(learning rate)
기울기를 따라 이동하다보면, 얼마만큼씩 이동할거냐를 결정해야 하는데, 이는 매우 중요함
즉, 경사하강법에서 중요한 하이퍼파라미터는 학습률(n)
학습률 값은 일반적으로 먼저 정해둘 수도 있는데, 너무 커도 작아도 장단점이 존재하여 학습률을 변경하면서 올바르게 학습하고 있는지를 확인함.
- 학습률이 너무 크면 최소점을 지나쳐 발산할 수 있음.
- 학습률이 너무 작으면 수렴은 하지만 매우 느림
경사하강법의 종류
배치 경사하강법 (Batch Gradient Descent)
- 모든 학습 데이터를 한 번에 사용해 기울기 계산
- 안정적이지만 연산량이 많고 느림
확률적 경사하강법 (Stochastic Gradient Descent, SGD)
- 데이터를 하나씩(random) 사용해 매번 업데이트
- 빠르고 자주 진동하지만, 지역 최소값(local minima) 탈출에 유리
미니배치 경사하강법 (Mini-batch Gradient Descent)
- 데이터 일부(배치 단위)를 사용해 기울기 계산
- 실제 딥러닝에서 가장 널리 사용되는 방법
장단점 정리
- Batch: 데이터 전체를 사용하며, 느리지만 안정적임
- SGD: 데이터를 하나씩 랜덤으로 뽑기에 자주 진동하지만 지역 최소값 탈출에 유리함.
- Mini-Batch: 일부, 균형 잡힌 효율적 방식으로 실제로 자주 사용도미
학습에서의 영향
1 epoch(학습 1번)마다 가중치가 업데이트되어 반복이 많아질수록 손실 값은 점차 줄어들게 됨.
초기에는 빠르게 줄어들며, 학습을 진행할수록 완만하게 수렴하는 그래프 형태를 띔.
그래프로 시각화하여 학습 과정을 살펴보면서 하이퍼파라미터를 조절하는 것이 좋음
경사하강법을 이용하여 극값 찾는 코드 샘플
# From calculation, we expect that the local minimum occurs at x=9/4
x_old = 0
x_new = 6 # The algorithm starts at x=6
eps = 0.01 # step size
precision = 0.00001
def f_prime(x):
return 4 * x**3 - 9 * x**2
while abs(x_new - x_old) > precision:
x_old = x_new
x_new = x_old - eps * f_prime(x_old)
print(f"Local minimum occurs at: {x_new}")'AI > DeepLearning' 카테고리의 다른 글
| SGD, Momentum, AdaGrad, RMSprop, Adam (0) | 2025.11.09 |
|---|---|
| 활성화 함수 계층 기본 구현 정리 (0) | 2025.11.09 |
| 오차역전파 (0) | 2025.11.05 |
| 신경망 학습 (Neural Network Training) (0) | 2024.04.23 |
| 신경망 Neural Network (0) | 2024.04.17 |