머신러닝에서의 경사하강법 📂머신러닝

머신러닝에서의 경사하강법

Gradient Descent Algorithm

개요

손실 함수기울기를 이용해 손실 함수의 극소값을 찾는 알고리즘 중 가장 간단한 방법으로 경사하강법Gradient Descent Algorithm이 있다.

설명

단, 이 때의 손실 함수 $L$ 은 데이터 셋 $X$ 가 픽스 된 상태에서 가중치와 바이어스에 대한 함수로 본다. 만약 인풋 데이터가 $\mathbb{x} \in \mathbb{R}^{m}$ 처럼 생겼다면 $L$ 은 $(w_{1} , w_{2} , \cdots , w_{m} , b) \in \mathbb{R}^{m+1}$ 에 대한 함수가 되는 것이다. 같은 데이터라도 가중치와 바이어스에 따라 손실 함수의 값은 달라지고, 손실 함수가 작아진다는 것은 그만큼 좋은 모델을 만들어냈음을 의미한다.

경사하강법은 이러한 함수 $L$ 이 만들어내는 매니폴드를 따라가며 극소값이 되는 최적의 가중치를 찾는다. 이러한 원리를 조금 더 엄밀하게 이해하고 싶다면 수치해석학에서의 경사하강법에 대해 공부해보는 게 좋다.

첫번째로 찍은 가중치와 바이어스의 벡터 $\mathbb{w}_{1} \in \mathbb{R}^{m+1}$ 에 대해 손실 함수의 값을 조금 더 작게 만든 $\mathbb{w}_{2}$ 는 어떤 적절한 양수 $\alpha$ 에 대해 $$ \mathbb{w}_{2} := \mathbb{w}_{1} - \alpha \nabla L (\mathbb{w}_{1} ) $$ 와 같이 계산된다. 이를 반복한 $$ \mathbb{w}_{n+1} := \mathbb{w}_{n} - \alpha \nabla L (\mathbb{w}_{n} ) $$ 는 손실 함수의 값을 점점 더 작게 만들어줄수도 있다. 이렇게 $\mathbb{w}_{n}$ 를 업데이트하는 것을 백프로파게이션Backpropagation이라고 한다. 머신 러닝에서는 $\alpha$ 를 러닝 레이트Learning Rate라고 부르며, 이 값에 따라 경사하강법은 성공할수도 있고 실패할 수도 있다.

20190325\_114213.png

성공하는 경우란 위 그림처럼 계산을 반복해가면서 $L$ 이 극소값이 되도록 하는 가중치와 바이어스를 정확하게 찾은 경우다. 특히 그림에서는 극소값인 동시에 최소값이 되는데, 일반적으로 극소값은 극소값일 뿐 최소값인지 확신할 수는 없다.

20190325\_124516.png

$\alpha$ 가 크면 값이 성큼성큼 바뀌면서 학습의 속도는 빨라지지만, 지나치게 큰 경우 위와 같이 수렴하지 않을 수 있다. 이러한 현상을 오버슈팅Overshooting이라고 한다.

20190325\_125126.png

반대로 $\alpha$ 가 너무 작으면 수학적으로야 수렴성을 보장할 수 있겠지만 변화가 너무 작기 때문에 시간이 너무 많이 소요되고, 국소 최소값에 걸리게 된다면 그 근방에서 벗어날 수가 없다.

이것이 경사하강법의 기본적인 개념이고, 실제로는 위와 같은 문제를 보완할 수 있도록 다양한 기법들을 사용한다.

같이보기

댓글