경사하강법(Gradient Descent)은 최적해를 찾는 최적화 알고리즘입니다.
경사하강법은 크게 배치 경사하강법, 미니배치 경사하강법, 확률적 경사하강법으로 나뉘어져 있습니다.
먼저 경사하강법의 큰 그림부터 살펴보도록 하겠습니다.
경사하강법은 비용함수(cost function)의 최저점을 찾는 알고리즘입니다.
모델을 경사하강법으로 학습시키기 위해 비용함수가 필요한 이유가 이 때문이죠.
1. 정의된 가중치로 비용함수를 사용하여 cost를 구합니다.
2. 각 가중치의 편도함수를 만들어 기울기를 구합니다.
3. 새로운 가중치는 현재 가중치 - 기울기로 구합니다.
이제 경사하강법을 세부적으로 알아보도록 하겠습니다.
모델의 비용함수를 Cost(W)로 정의했다고 해봅시다.
그레디언트 벡터는 다음과 같을 것입니다.
그리고 가중치들을 다음과 같이 업데이트가 진행됩니다.
learning rate는 가중치를 업데이트할때 얼만큼 반영하여 업데이트할지를 결정합니다.
learning rate가 너무 작게되면 수렴이 늦게 되고, learning rate가 너무 크게 되면 발산하게 될 수도 있습니다.
그럼 이제 배치 경사하강법, 미니배치 경사하강법, 확률적 경사하강법에 대해 알아보도록 하겠습니다.
배치 경사하강법은 매번 데이터셋의 Cost를 전부 구해 가중치를 업데이트해나가는 방식입니다.
미니배치 경사하강법은 데이터셋을 작게 나누어 각 샘플링에서 Cost를 구하며 가중치를 업데이트해나가는 방식입니다.
확률적 경사하강법은 매번 데이터셋에서 랜덤으로 하나를 뽑아 Cost를 구하고 가중치를 업데이트해나가는 방식입니다.
배치 경사하강법으로 학습을 시키면 각 가중치가 안정적으로 최저점에 수렴하게 됩니다.
그리고 미치배치 경사하강법으로 학습을 시키게 되면 배치경사하강법보다 더 빠르게 최저점의 주변에 도달하지만, 최저점 주변에서 진동하게 됩니다.
마지막으로 확률적 경사하강법은 매우 빠르게 최저점의 주변에 도달하게 되지만, 최저점 주변에서 크게 진동하게 됩니다.
미니배치 경사하강법과 확률적 경사하강법이 쉽게 수렴하지 못하는 점을 해결하기 위한 방법으로는 learning schedule이 존재합니다. learnign schedule은 점차 learning rate을 줄여가며 진동의 폭을 줄입니다.
경사하강법에 대해 알아보았으니, 선형회귀의 학습 방법에 대해 알아보겠습니다.
제일 먼저 선형회귀 모델의 비용함수를 정의해야 합니다. 선형회귀를 학습시킬 때 대부분 MSE를 사용하므로 이를 사용하여 보겠습니다.
MSE 비용함수의 편도함수 또한 구해본다면 다음과 같을 것입니다.
Gradient Descent Vector도 정의하여 위의 그림과 같이 가중치를 업데이트해나가면 모델은 최적해를 찾아낼 것입니다.
하지만 경사하강법의 문제점이 하나 있습니다.
global minimum이 아닌 local minimum에 갇혀버릴 수 있다는 점입니다.
가중치의 초기값은 무작위로 초기화되므로 global minimum을 찾아낼지, local minimum을 찾아낼지 모릅니다.
배치 경사하강법을 사용하게 된다면 local minimum에 갇혀버릴 수도 있을 것입니다.
그 반면 미니배치 경사하강법과 확률적 경사하강법은 빠르게 최저점에 수렴하고 step이 불규칙적이기 때문에 local minimum에 갇힐 확률을 줄여줍니다.
적절히 경사하강법의 종류를 선택하여 최적해를 찾아내는 것도 중요한 과제가 될 것입니다.
다행히 저희가 학습시키려는 선형회귀의 MSE 비용함수는 local minimum이 없는 convex function이기 때문에 항상 global minimum을 찾게 됩니다.
'인공지능 > 이론' 카테고리의 다른 글
(11) SVM (0) | 2021.10.11 |
---|---|
(8) 선형회귀 과대적합/과소적합 (0) | 2021.10.10 |
(6) 선형 회귀 (0) | 2021.10.10 |
(5) ROC 곡선 (0) | 2021.10.07 |
(4) 정밀도/재현율 (0) | 2021.10.07 |