유승훈

lec03 - Liner Regression and How to minimize cost(Gradient Descent) 본문

강의정리/모두를 위한 딥러닝 시즌 2

lec03 - Liner Regression and How to minimize cost(Gradient Descent)

seunghuni96 2021. 2. 8. 17:28

본 글은 모두를 위한 딥러닝 강의를 듣고 작성한 글입니다.

 

앞선 강의에서 Linear Regression의 기본 개념에 대해 살펴보았습니다. 간단하게 Review하면,

 

이 Cost, 즉 비용이 적을수록 우리의 Line, Hypothesis가 실제 데이터를 잘 대변하고 있다고 볼 수 있습니다.

Linear Regression의 목적은 Cost를 최소화하는 W와 b를 찾는 것입니다.

 

우리가 썼던 앞선 가정에서 y절편인 b를 생략해봅시다.

이런 식의 가정입니다. 사실 나중에 `W`가 Matrix가 되면, b를 그 안에 집어넣을 수 있으니 크게 구조가 달라진 것은 아닙니다.

 

주어진 데이터를 기반으로 Cost를 계산하면,

W=0, Cost=4.67

W=1, Cost=0

W=2, Cost=4.67

W=3, Cost=18.67

 

지금은 W를 0,1,2,3 4가지만 놓고 계산했습니다. 이를 컴퓨터로 더 조밀한 값을 넣어 계산해주면, 사진과 같은 결과를 얻을 수 있습니다. 

 

앞서 언급했듯이, Linear Regression이 학습하는 목표는 Cost를 최소화하는 W를 찾는 것입니다. 여기서는 눈으로 쉽게 1임을 알 수 있습니다. 이렇게 눈으로 찾는것은 쉽습니다. 하지만 컴퓨터로 하여금 이 값을 찾게 하려면, 어떤 규칙, 알고리즘이 필요합니다.

 

이를 찾을때 가장 많이 활용되는 것이 Gradient Descent Algorithm입니다.

Gradient는 경사, 기울기라는 뜻이고, Descent는 하강이라는 뜻으로 경사하강법, 경사하강알고리즘으로 불립니다.

 

Gradient Descent는 말 그대로 경사를 따라 내려가면서 최저점을 찾도록 설계된 알고리즘입니다.

Cost Function,  즉 손실을 최소화하고, Linear Regression에서의 Cost 뿐 아니라 다양한 최소값 문제에서 활용되곤 합니다. 여기서 Cost(W,b)의 두개의 값을 찾는 것 뿐 아니라 3개, 4개 등 많은 값을 찾는 문제에도 광범위하게 활용됩니다.

 

그렇다면 이 Gradient Descent Algorithm은 어떻게 작동할까요?

 

최초에는 추정을 통해서 W,b값을 정합니다. 이때 (0,0)이던, Random Value건 상관없습니다. 이 최초의 값을 기반으로, Cost Function이 줄어들도록 지속적으로 W,b값을 Update해줍니다. 

 

이 W,b를 지속적을 Update할 때, 기울기를 구해서 Cost가 최소화되는 방향으로 Update를 하는 것입니다. 이 과정을 최저점에 도달했다고 판단할 때 까지 반복합니다.

 

앞서 W값에 따른 Cost(W)를 봅시다.

 

임의의 Initial Value에서 기울기를 구하고, $W-(W*기울기)$로 `W`를 ${W}'$로 업데이트합니다. 새로운 ${W}'$에서의 기울기를 구하고, ${W}'-({W}'*기울기)$로 ${W}'$는 ${W}''$로 업데이트 됩니다. 이 과정을 계속해서 반복하는 것입니다.

 

물론 무한히 반복하는 것은 아닙니다. 이 과정을 계속 반복하다 보면, 기울기가 굉장히 작아지는 타이밍이 옵니다. 기울기가 매우 작아지면, $W-(W*기울기)$가 더 이상 값의 변화를 가져오지 않는 순간이 옵니다. 이때가 최저점입니다.

 

Gradient Descent는 Initial Value가 어디건 최저점으로 갑니다.

예시로 반대에 있는 Red Point에서 시작했다고 합시다. Inital Value의 기울기는 음수이기 때문에,

$W-(W*기울기)$가 W+\alpha로 W값이 증가합니다. 결국 아까와 같은 최저점으로 가는 것입니다.

 

기울기가 이동하는 정도에 영향을 미치기 때문에, 기울기가 클수록 더 많이 이동하고, 작을수록 더 적게 이동합니다. 즉, 초반에는 이동의 보폭이 크지만, 반복되어 최저점을 향해 다가갈수록 이동하는 보폭이 계속해서 작아집니다.

 

이런 형태의 Cost Function을

 

평균을 위해서 m으로 나누어줬던 것을 2m으로 바꿔줍니다. 이렇게 해도 Cost의 특성에는 변화가 없습니다. 단지 미분과정에서 지수의 약분을 위해 바꿔준것입니다.

 

미분한 식 자체가 기울기인데, 그 앞에 `a`가 붙어있는 것을 볼 수 있습니다. 이 $\alpha$는 Learning Rate로, 우리가 구한 기울기 값을 `W`가 변화하는데 얼마나 반영할지를 결정합니다. $\alpha$가 크면 기울기가 비교적 많이 반영되고, $\alpha$가 작으면 우리가 구한 기울기값이 비교적 적게 반영되는 것입니다.

 

$\alpha$는 기울기값을 통한 `W`의 Update 폭을 결정합니다. 보통 매우 작은 값이 사용되는데, 0.01, 0.001 정도의 값이 사용됩니다.

 

Gradient Descent는 주변의 경사를 따라 내려가며 최저점을 찾습니다. 하지만 그림과 같은 경우에는 Initial Point에 따라 전체에서의 최소점, 이를 Global Minimum이라고 하는데요, 이 지점을 못 찾을수도 있습니다.

 

Initial Point는 근처에 있더라도, Point1과 Point2는 서로 다른 위치에서 최소값이 선언되었습니다. Point1은 Global Minimum을 찾은 반면, Point2는 Global Minimum인 Point1보다 더 큰 지점에서 최소값이 선언되었습니다.

 

이처럼 분홍색으로 표시된 점들은 주변의 값들 중에서는 가장 작은 값들임은 확실합니다. 이러한 값들을 Local Minimum이라고 합니다. 위의 그림과 같이 Local Minimum이 여러개 존재한다면, Gradient Descent는 Global Minimum으로의 수렴을 보장할수가 없습니다. Point2처럼 Local Minimum에서 마무리 될 수 있는 것입니다. 따라서 Gradient Descent는 이런 상황에서 쓰는 것은 별로 좋지 않습니다.

 

Local Minimum이 여러개 있는 것 보다는 위와 같이 Global Minimum이 Local Minimum인 형태에서 쓰는 것이 좋습니다. Initial Point와는 상관없이 Global Minimum을 향해 나아가기 때문입니다.

 

 

Comments