728x90
경사하강법에 대해 알기 전 Gradient에 대해서 알아보자.
1. Gradient(기울기, 경사)란?
- 출력값이 입력값에 따라 얼마나 변하는지 나타내는 값이다.
- 손실함수(Loss Function)를 최소화하기 위해 가중치를 업데이트하는 과정에서 사용한다.
손실 함수(Loss function) 정의 및 유형 별 종류
: 머신러닝과 딥러닝에서 모델의 예측값과 실제값 사이의 차이를 측정하는 함수 모델 학습의 핵심은 이 손실 값을 최소화하는 방향으로 가중치와 편향을 조정하는 것이다.1. 손실함수의 역할오
hello-heehee.tistory.com
1) Scalar 함수일 때
- Gradient는 1차원 곡선 한 점에서의 기울기를 나타낸다.
2) Vector 함수일 때
- Gradient는 여러 입력변수에서의 변화율을 포함한 벡터(Gradient Vector)로 나타낸다.
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
'DeepLearning > 딥러닝 기초' 카테고리의 다른 글
[딥러닝 기초] Sparse Data 희소 데이터 (2) | 2024.12.14 |
---|---|
[딥러닝 기초] 신경망의 기본 구조 (2) | 2024.12.12 |
[딥러닝 기초] 활성 함수(Activation Function) 정의 및 종류 (1) | 2024.12.05 |
[딥러닝 기초] 손실 함수(Loss function) 정의 및 유형 별 종류 (4) | 2024.12.04 |
[딥러닝 기초] 순방향 알고리즘(Forward Propagation) vs 역전파 알고리즘(Backward Propagation) (2) | 2024.12.02 |