# ML : Gradient Descent

1. What is Gradient Descent Algorithm?



  • 위와 같이  J(θ0,θ1) 값이 최소가 되는 θ0θ를 찾아내야 한다.
    • 값을 바꾸면서 최소 값이 될 때까지 진행한다.
    • 각 theta 값에 따라 h 값(기울기)이 달라지고, 이는 J 값에 영향을 주게 된다.
  • 예를 들어 특정 높은 산에서 낮은 저지대로 이동한다고 가정한다면, 이 중 가장 빠르게 내려갈 수 있는 방법을 찾아낸다고 해보자. 결국 가장 가파른 곳을 선택하면서 내려가야 할 것이다.


  • 맨 위에서부터 차례대로 저지대 대략적인 위치 J(0.45,0.8)로 이동할 수도 있고


  • 다른곳에서부터 시작 한다면 J(0.3,0.2)로 이동할 수도 있다.
    • 결국 가장 최소 값을 갖는 J(θ0,θ1) 값을 선택하게 되고 더이상 내려가지 않는다.
  • The way we do this is by taking the derivative (the tangential line to a function) of our cost function.
    • 해당 비용함수의 접선(함수의 미분 = 탄젠트의 기울기)을 이용한다.
    • We make steps down the cost function in the direction with the steepest descent.
    • 각 단계의 크기는 학습 속도를 의미하는 매개 변수 α에 의해 결정된다. 
    • 예를 들어, 각 포인트 사이의 거리는 매개 변수 α에 의해 결정되는데, α가 작아질수록 단계는 작아지고 α가 커지면 단계는 커진다. 
  • 이를 식으로 표현하면 다음과 같다. 
    • := 는 할당(assign)의 의미로, 우항 값을 좌항 값에 할당한다는 말이다.
    • 우리가 흔히 쓰는 = 는 좌항과 우항이 논리적으로 같다는 의미로 사용한다.
  • At each iteration j, one should simultaneously update the parameters θ1,θ2,...,θn. Updating a specific parameter prior to calculating another one on the j(th) iteration would yield to a wrong implementation.
    • 이 때, 계산 과정은 항상 'simultaneously(개별적으로)' 동작해야 한다. 

  • 위의 문제같은 경우, 개별적으로 먼저 구하고 할당해야 하기 때문에 다음과 같다.

2. Gradient Descent Intuition

  • 파라미터를 한개(θ1)만 사용하여 Gradient Descent 알고리즘을 직관적으로 확인하자.
    • θ0을 0으로 두고 진행한다.
  • d/dθ1*J(θ1)의 기울기 부호와 관계 없이, θ1는 결국 최 하위 값으로 수렴하게 된다.
  • 위의 그래프는 화살표가 가리키는 최소값(minimum) 포인트로 이동하는 과정에서, 경사 값이 음수(<0) 일때 θ1의 값이 증가하고, 양(>0)의 값일 경우 θ1의 값이 감소하고 있는 것을 보여준다.
  • 위의 그림은 매개 변수 α 값의 크기 설정이 얼마나 중요한지 보여준다.
  • 매개 변수 α는 Gradient Descent 알고리즘의 합리적 수렴 시간을 파악하기 위해 사용되는데, 만약 α가 너무 작으면 포인트 이동 거리가 짧기 때문에 전체를 확인하는데 상당한 시간이 걸리고, 만약 α가 너무 크다면 minimum 값이 존재하는 포인트를 건너뛰고 진행될 수도 있을 것이다.
    • 우리는 적당한 α 값을 설정해야 한다!

3. How does gradient descent converge with a fixed step size α?


  • d/dθ1*J(θ1) 을 통해, 볼록함수의 최하단(바닥)부분에 접근할수록 d/dθ1*J(θ1) 값은 0에 수렴한다는 것을 확인할 수 있다. 그러므로 다음과 같이 도출할 수 있다.

  • optimum한 값에 위치하게 되면, 그대로 θ1을 내버려두면 된다.



댓글