AI 공부 저장소

Linear Regression (선형 회귀) - Gradient Descent (경사 하강법) 개념, 원리와 코드 구현 본문

Artificial Intelligence/ML&DL

Linear Regression (선형 회귀) - Gradient Descent (경사 하강법) 개념, 원리와 코드 구현

aiclaudev 2022. 2. 5. 15:24

 

본 글은 Sung Kim 교수님의 PyTorchZeroToAll 강의를 토대로 저의 지식을 아주 조금 덧붙여 작성하였습니다.
글 작성에 대한 허락을 받아, 개인 공부용으로 작성합니다.
문제가 발생할 시 비공개로 전환함을 알립니다.
https://www.youtube.com/channel/UCML9R2ol-l0Ab9OXoNnr7Lw

 

 

 

① Gradient Descent의 목적 - Find w that minimizes the loss

최적의 Linear Regression의 모델을 찾기 위해 Loss 라는 개념이 사용되었었습니다.

Loss는 간단히 설명하자면, 최적의 Linear Regression 모델과의 error라고 말할 수 있습니다. 따라서, error가 최소화 되는 = Loss가 최소화 되는) w값을 찾는다면 그것이 바로 최적의 모델이라고 말할 수 있습니다.

 

 

 

② Gradient Descent Algorithm

Gradient란 수학에서 '경사'를 의미합니다. 즉, '직선의 기울기'라고 생각하시면 편할 것입니다.

컴퓨터는 임의의 w값으로부터 시작하여 최적의 w (Loss가 최소인 w)를 찾아나가게 되는데요, 이 때 초기의 시작점 w를 Initial weight라고 표현합니다. 이제 Gradient Descent를 통해 어떻게 최적의 w를 찾아나가는지 알아봅시다.

 

임의의 값 w를 가지는 초기 점에서 먼저 기울기 (Gradient)를 측정합니다. 만약 기울기가 양수(+)라면, w가 작아지는 방향 (왼쪽 방향)으로 점은 이동합니다. 이후 다시 기울기를 측정한 후, 기울기가 또 양수라면 w가 작아지는 왼쪽 방향으로 점은 다시 이동합니다. 이처럼 한점에서의 기울기를 측정한 후, 기울기의 부호(또는 기울기의 크기)에 따라 점은 Loss가 최소가 되는 w로 점점 이동하는데요, 이처럼 '이동'에 대한 수식은 아래와 같습니다.

위 수식은 『w의 변화에 따른 Loss의 변화』(즉, Gradient)에 따라 w값이 갱신되어가는 과정을 나타냅니다. (이 때, α는 굉장히 작은 값이라고 생각하시면 됩니다. )

또한, '점은 어느 방향으로 이동할 것인가?'를 결정하는 것이 바로 우변의 - 입니다. 만약 Gradient가 음수라면, Gradient의 음수와 -가 결합하여 +가 되겠죠. 따라서 w는 더 커질 것입니다. 반대로, Gradient가 양수라면, 우변의 -는 그대로 살아있겠죠? 따라서, w는 더 작아지는 것입니다. 이와 같은 방법으로 컴퓨터는 Loss가 최소가 되는 w를 찾아나가게 됩니다.

 

경사 하강법을 통해 Loss가 최소가 되는 w를 찾아가는 과정을 간단히 요약하자면 아래와 같습니다.

① : 현재 점에서의 Gradient를 측정한다.

②-1 : Gradient가 양수라면, 점은 왼쪽으로 이동한다.

②-2 : Gradient가 음수라면, 점은 오른쪽으로 이동한다.

③ : 위 과정을 반복한다.

 

 

 

③ 코드 구현

코드 구현에 앞서, 위 사진에서 두 번째 식에 있는 Gradient는 코드 상에서 어떻게 나타내어야 할까요?

고민할 것 없이, loss를 w로 직접 미분해주면 됩니다. 

 

이제 이 식을 'w의 이동'에 대한 식에 대입해보고 정리해봅시다.

 

문제가 되는 부분은 해결하였군요. 이제 코드로 구현해봅시다. 

 

 

 

 

 

 

④ Exercise - Compute Gradient and Implement

 

 

 

 

Answer)

 

 

 

 

 

본 글은 Sung Kim 교수님의 PyTorchZeroToAll 강의를 토대로 저의 지식을 아주 조금 덧붙여 작성하였습니다.
글 작성에 대한 허락을 받아, 개인 공부용으로 작성합니다.
문제가 발생할 시 비공개로 전환함을 알립니다.
https://www.youtube.com/channel/UCML9R2ol-l0Ab9OXoNnr7Lw