1. 경사하강법이란?
경사하강법(Gradient Descent)은 머신러닝 알고리즘에서 가장 널리 사용되는 최적화 기법 중 하나다.
함수의 입력 변수 값을 점진적으로 조정하여 함수의 출력값을 최소화 또는 최대화하는 방식이다.
2. 경사하강법을 사용하는 이유?
목적 함수의 최적해를 탐색하기 위해 사용된다.
미분하면 되지 않나?라고 생각할 수 있는데 머신러닝의 목적 함수는 대부분 복잡하고 비선형 함수다. 따라서 미분으로 최솟값 혹은 최대값을 구하기 어렵다.
3. 경사하강법을 이용해 최적화하는 방법
과정은 다음과 같다.
1. 목적 함수(cost function) 설정: 최소화하려는 오차 함수를 정의한다.
2. 변수 초기값 설정: 최적화할 변수들의 초기값을 임의로 정한다.
3. 경사(gradient) 계산: 현재 변수 값에서 목적 함수의 기울기(변화율)을 계산한다.
4. 변수 업데이트: 계산된 기울기 방향과 반대 방향으로 일정 비율(학습률)만큼 변수 값을 조정한다.
5. 반복: 목적 함수 값이 최소가 될 때까지 반복한다.
4. 경사하강법의 문제점
1. 적절한 학습률(learning rate)
보통 학습률과 기울기를 혼합하여 나아갈 정도와 방향을 결정한다.
학습률은 모델이 학습을 진행할 때 각각의 가중치(weight)를 얼마나 업데이트할지 결정하는 하이퍼파라미터이다.
학습률은 딥러닝 모델의 학습 속도와 안정성을 결정하는 중요한 요소이다.
만약, 학습률이 높으면 변화가 커진다.
학습률이 낮으면 발산하지 않는 대신 최적값에 수렴하는 시간이 오래 걸릴 수있다.
2. Local Minimum(지역 최솟값)
우리가 찾고자 하는 것은 전역 최솟값(Global minimum)이다.
하지만 운이 안 좋으면 지역 최솟값을 전역 최솟값으로 인식해 지역 최솟값에서 탈출하지 못하고 해당 값에 수렴할 수도 있다.
5. 경사하강법 종류
경사하강법의 종류에는 배치 경사하강법, 확률적 경사하강법, 미니배치 경사하강법이 있다.
5-1. 배치 경사 하강법( Batch Gradient Descent)
전체 데이터 셋에 대해 경사를 계산하고 가중치를 업데이트한다.
장점: 수렴할 때까지 가장 정확한 최적해를 찾을 수 있다.
단점: 계산 비용이 크고 속도가 느리다.
5-2. 확률적 경사 하강법( Stochastic Gradient Descent)
데이터를 한 번에 하나씩 불러와 경사를 계산하고 가중치를 업데이트한다.
장점: 계산 비용이 작고 수렴 속도가 빠르다.
단점: 실제 최적해 주변에서 진동이 심할 수 있다.
5-3. 미니배치 경사 하강법( Mini-Batch Gradient Descent)
데이터를 작은 그룹(미니배치)으로 나누어 경사를 계산하고 가중치를 업데이트한다.
배치와 확률적 방식의 중간 지점으로 두 방식의 장단점을 적절히 보완한다.
실무에서 가장 많이 사용되는 기법이다.