
✔ Gradient Descent란?
- Gradient Descent는 함수의 parameter 값을 반복적으로 조정하여 주어진 함수를 최소화하는 최적화 알고리즘입니다.
이 알고리즘의 목적은 함수의 최소값을 제공하는 parameter를 찾는 것입니다. 머신 러닝에서는 주로 비용 함수나 손실 함수의 최소값을 찾는 데 사용됩니다.
✔ Gradient Descent Algorithm
Gradient Descent 알고리즘은 다음과 같은 단계로 작동합니다:
-
초기 매개변수 설정:
- 함수의 매개변수 (\theta)의 초기 값을 설정합니다.
- 이 값은 랜덤으로 선택되거나 특정 값으로 설정될 수 있습니다.
-
기울기 계산:
- 현재 매개변수 값에서 비용 함수의 기울기(Gradient)를 계산합니다.
- 이 기울기는 비용 함수가 가장 급격히 증가하는 방향을 나타냅니다.
-
매개변수 업데이트:
- 매개변수 값을 기울기의 음의 방향으로 업데이트합니다.
- 기울기의 일부를 매개변수 값에서 빼는 방식입니다.
- 이 비율을 학습률(Learning Rate)이라고 하며, 학습률은 매개변수 업데이트의 스텝 크기를 결정합니다.
θ:=θ−α∇J(θ) 여기서:
- θ는 매개변수입니다.
- α는 학습률입니다.
- ∇J(θ)는 손실 함수 J(θ)의 기울기입니다.
- 반복:
- 비용 함수가 최소값에 수렴할 때까지 위 과정을 반복합니다.
✔ Learning Rate(학습률)
학습률은 Gradient Descent 알고리즘에서 중요한 하이퍼파라미터입니다. 학습률은 매개변수 값을 얼마나 크게 업데이트할지를 결정합니다.
- 학습률이 너무 작은 경우: 매개변수 업데이트가 매우 작아져서 알고리즘이 최소값에 도달하는 데 오랜 시간이 걸릴 수 있습니다.
- 학습률이 너무 큰 경우: 매개변수 업데이트가 너무 커서 최소값을 지나치게 되어 알고리즘이 수렴하지 않거나 발산할 수 있습니다.
따라서 적절한 학습률을 선택하는 것이 중요합니다. 적절한 학습률을 선택하면 알고리즘이 적절한 반복 횟수 내에 최소값에 수렴할 수 있습니다.
✔ Gradient Descent의 변형
경사 하강 알고리즘에는 매개 변수 값을 업데이트하는 방식이 다른 여러 가지 변형이 있습니다.
1️⃣ Stochastic Gradient Descent(SGD)
- 설명: 데이터 샘플 1개씩 loss를 계산하고 모델을 업데이트
- 장점: 더 빠른 반복, 큰 데이터셋에서도 효과적.
- 단점: local minima에 빠질 위험이 있음
2️⃣ Mini-Batch Gradient Descent
- 설명:
- 데이터 샘플 (K)개씩 loss를 계산하고 모델을 업데이트
- Full batch gradient descent와 Stochastic gradient descent의 절충안
- 장점:
- SGD의 속도와 Batch Gradient Descent의 안정성을 결합.
- local minima에 빠질 위험 적어짐
- global minima를 찾아가기에 적절한 stochastic이 있어서 local minima를 탈출하기에 좋음
- 단점: 적절한 배치 크기 선택이 필요함
3️⃣ Momentum-based Gradient Descent
- 설명: 이전 기울기 값을 사용해 현재 기울기에 가속도를 부여.
- 장점: 학습 속도 증가, 지역 최적값에서 벗어나는 데 도움.
- 단점: 적절한 모멘텀 값 설정이 필요함.
4️⃣ Adam Optimization
설명:
- 아담 최적화는 각 파라미터에 대한 적응형 학습률을 사용하는 Gradient Descent의 인기 있는 변형.
- Momentum과 RMSprop을 결합하여, 각 파라미터에 대한 학습률을 계산
- 장점: 대부분의 문제에서 잘 작동, 자동으로 학습률 조정.
- 단점: 추가 하이퍼파라미터 설정 필요.
✔ 결론
경사 하강은 머신러닝과 딥러닝에서 비용 함수 또는 손실 함수를 최소화하기 위해 널리 사용되는 최적화 알고리즘입니다. 이 알고리즘은 함수의 매개변수 값을 음의 기울기 방향으로 반복적으로 조정하는 방식으로 작동합니다.
학습 속도는 신중하게 선택해야 하는 중요한 하이퍼파라미터입니다. 경사 하강에는 확률적 경사 하강, 미니 배치 경사 하강, 운동량 기반 경사 하강, 아담 최적화 등 여러 가지 변형이 있습니다. 각 변형에는 장단점이 있으므로 당면한 문제의 요구 사항에 따라 선택해야 합니다.
❓ FAQ
1️⃣ Gradient decent의 목적은 무엇인가요?
경사 하강은 주어진 함수의 최소값을 찾는 것을 목표로 하는 최적화 알고리즘입니다. 머신 러닝의 맥락에서 비용 함수 또는 손실 함수를 최소화하는 데 사용됩니다.
2️⃣ Batch Gradient Descent and Stochastic Gradient Descent의 차이점은 무엇인가요?
일괄 경사 하강은 전체 훈련 데이터 세트를 처리한 후 매개변수 값을 업데이트하는 반면, 확률적 경사 하강은 각 훈련 예제를 처리한 후 매개변수 값을 업데이트합니다.
3️⃣ 경사 하강에서 학습률이란?
학습률은 음의 경사 방향으로의 스텝 크기를 결정하는 하이퍼파라미터입니다. 학습률이 작으면 수렴이 느려지고 학습률이 크면 최소값을 초과할 수 있습니다.