-
Gradient Descent (경사 하강법) | Supervised Machine Learning: Regression and ClassificationMachine Learning/Stanford ML Specialization 2023. 10. 17. 22:54
Gradient Descent
앞서서 우리는 Linear Regression에 대해서 알아보았고, Cost Function을 사용해서 가장 Minimum 오차값을 보이는 w, b를 찾아 아래 함수를 완성시켜, 가장 유력한 선을 그려내는 방법에 대해 배웠다.
$ f(x) = wx + b $
그런데, 이 값을 최소화 할 수 있는 방법이 있는데 Gradient Descent(경사 하강법)이라고 한다. 이 과정의 아웃라인은 간단하다.
- 어떤 w, b 값부터 시작한다. 예를들면 w = 0, b = 0 와 같은 값이다.
- w, b를 계속 바꿔가면서 J(w, b)값을 줄여간다.
- Minimum 값에 도달하거나, 거의 근접할 때 까지 계속 진행한다.
https://youtu.be/WtlvKq_zxPI?si=s7Vmu2_RHM8wL8mp 위의 예시를 보자. Squared Error Cost방식으로 했을때는 접시 모양의 형태가 나와서 쉽게 J(w, b)값의 Minimum을 찾을 수 있었는데, Newral Network와 같은 학습법에서는 위와 같이 여러개의 협곡(?)을 보이는 형태의 J(w, b)가 보여진다. 이럴 경우 어떻게 Minimum을 찾을 수 있을것인가? 바로 gradient descent를 이용하는것이다. Outline에서 언급한대로, 어디서 시작할지 결정한다. 동그라미 친 곳들이 시작접이고, 그 시작점에서 가장 가파른 방향으로 계속 내려가다 보면, 가장 Minimum에 도달하는데, 이것들을 Local Minima라고 부른다. 서로 닿을 수 없는 두 Minimum 지점을 의미한다.
방법은 다음과 같다. 매번 w와 b값을 업데이트 해주면 되는데, J(w, b)지점에서 w값은 w값에서 a(알파)값에 J(w, b)를 w에 대해 Derivative한 값을 곱해서 빼준 값으로 업데이트 하고, 같은 방식으로 b도 없데이트 해주어서 지금보다 더 낮은곳으로, Minimum으로 도달할 수 있도록 해주는 방식이다. 여기서 주의해야할 점은, w, b값을 바꾸기 전에 계산을 먼저 해서 tmp값에 임시 저장을 한 후, 다음 업데이트 될 tmp값들이 모두 계산이 된 이후에 w, b값을 업데이트 해줘야 한다는 점이다.
여기서 a는 알파, 또는 learning rate라고 부른다.
J(w)
Derivative과 Learning rate등 복잡한 것들이 많이 등장한 관계로, b값을 생각하지 않고 J(w)로만 생각해보자.
J(w)값의 miimum 값을 찾기 위해서는 위와 같이 w값을 계속 업데이트 해주어야 한다. b가 없어졌으므로, w 값만 생각하게 된다면, 2D의 차트로 나타낼 수 있다. Gradient Descent를 이용해서 J(w)의 Minimum을 찾는것은 다음과 같다.
위의 예시를 보자. 어떤 점이 있고, J(w)의 그래프에서 오른쪽에 위치한다. a(알파, learning rate)는 언제나 Positive이므로, 만약 J(w)의 도함수, Derivitive가 음수인지 양수인지에 따라서 w값은 늘기도, 줄기도 한다. 이 예시에서 해당 w에 대한 접선을 그리게 되면 선의 기울기는 오른쪽으로 상승해있는 모습이고, 이는 기울기가 positive 하며, derivitive를 계산하면 역시 양수가 나오게 된다. 그러면 실제 그 다음 w 값은 w - (양수) 에 의해서 감소하게 된다. 그래프를 보게 되면 실제 우리가 찾으려는 minimum 값으로 가려면 조금 왼쪽으로 이동해야하고, 이를 위해서 w는 현재 있는 오른쪽보다, 왼쪽으로, 즉 감소해야한다.
그 아래 예시도 마찬가지인데, 반대의 경우이다. 왼쪽 점과 그래프에 접선을 그리게 되면 왼쪽으로 하강하는데, 이는 기울기도, Derivitive도 음수가 된다. 즉, 식은 w + (양수) 가 되고, 이는 w 에서 증가된 값이 w가 되게 된다. 이렇게 어떤 점에서, 기울기가 더 낮은 쪽을 향해서 가는 방식을 Gradient Descent, 한국 말로는 경사 하강법 이라고 한다.
Reference
https://www.youtube.com/watch?v=WtlvKq_zxPI&list=PLkDaE6sCZn6FNC6YRfRQc_FbeQrF8BwGI&index=15
https://youtu.be/w_2vCijLiiM?si=jp4vILhIXxzMStaf
'Machine Learning > Stanford ML Specialization' 카테고리의 다른 글