티스토리 뷰

Gradient Descent


 - Gradient Descent를 그래프상에 표현해보면 위와같다.

 - 각 축은 weights와 error로 구성되어있고, 그 위에 면의 형태로 펼쳐져 있음.

 - inputs으로는 W1과 W2가, Error function은 E로 주어진다.

 - E의 gradient(경사도)는 W1과 W2에 대하여 편미분한 벡터값의 합에 의해 주어진다.

 - 이 그라디언트는 error function을 가장 높게 상승(∇E)시키고자 할 경우 움직여야 할 방향(direction)을 말해준다.

 - 즉 가장 가파른 기울기를 가진 방향(∇E)을 알려주게 된다는 의미.

 - 그러므로 우리가 그 그라디언트의 음수값(-∇E)을 얻게된다면, 이것이 error function을 가장 감소시키는 방향이 된다.


 - 현 위치에서 error function의 음의 그라디언트 방향으로 이동을 한다.

 - 그렇게 되면 낮은 위치(lower position)에 위치하게되고, 우리는 그걸 반복할 것임

 - 언제까지?? 우리가 산의 바닥까지 내려올 때 까지.



 - 그럼 이제 그라디언트를 계산해보자.

 - 최초 prediction값인 yHat = sig(Wx + b) 에서 시작한다.

 - 이 prediction은 Bad이다. 왜냐면 현재 산의 높은곳에 있기때문(즉, Error의 값이 크기 때문)

 - yHat = sig(Wx + b) = sig(W1*X1 + ... + Wn*Xn + b)가 되고, 

 - 그다음 앞서 확인한 공식에 의해 error function값을 구할 수 있다. (위의 그림 참고)

 - 근데 여기서 중요한 점은 error function의 그라디언트(경사, 기울기)이다.

 - error function의 그라디언트는 weights와 bias에 대한 error function의 편미분에 의해 형성된 벡터이다.

 - 이 값을 구했으면 우리는 구한 값의 음의 방향 즉, 반대방향으로 이동한다.

 - 이 때, 이전과 같이 우리는 급격한 변화(dramatic changes)를 원하지 않으므로

 - alpha라는 작은 learning rate를 적용시킨다.

 - 즉, 그라디언트에 alpha를 곱해준다는 얘기.

 - 현 위치에서 아래로 내려가는 것(taking the step)은 weights와 bias를 업데이트하는 것과 동일하다.

 - 가중치 W는 W'이 되는데, 이때 W' = Wi - ∝*(∂E/∂Wi) 가 된다.

 - 바이어스 b는 b'이 되는데, 이때 b' = b - ∝*(∂E/∂b) 가 된다.

 - 이렇게 진행하면 error function을 최소화 하는 방향으로 prediction이 나아가게 된다.

 - 이것이 Gradient Descent에 대한 개념.






Gradient Calculation

 - 이제 실제로 error function의 미분을 계산해보도록 하자.

 - 위에서 오류를 줄여 나가는 방법으로 기존의 sig(x)로 부터 sig'(x)를 얻어내 나가면서 최소화 해 나가는

 - Gradient Descent를 실제로 계산해 볼 차례다.

 - sig(x)를 미분한 sig'(x)는 sig(x)*(1-sig(x))와 동일하다.



 - 그리고 m개의 점이 존재 하고, prediction은 yHat = sig(Wx + b)이므로

 - 위와같이 prediction을 일반화 할 수 있다. 이 때 error formula는 다음과 같다.

 - 우리의 목표는 E의 그라디언트(기울기)를 구하는 것이므로, x라는 점(x = x1, ..., xn)에서 얻을 수 있는 편미분값은

 - 이렇게 된다.

 - 계산을 단순화 하기위해선, 각 점의 error에 대해 먼저 생각해본 이후에 이 값에 대한 미분을 계산해야한다.



 - error의 총 합(total error)는 각 점에서의 error의 평균이 된다.



 - weights을 고려해서 error를 미분하려면, 우리는 먼저 아래 좌변에 대해 계산해줘야한다.

 - 이 때, yHat = sig(Wx + b) 임을 기억하자.



 - 이제 weight인 Wj에 대한 점 x에서의 error값 E의 미분을 계산할 수 있다.



 - 이와 유사한 계산인 아래의 방정식을 보자.

 - 이 계산식을 통해 매우 중요한 점을 알 수 있는데, 

 - x1, ... xn까지 좌표상의 점들과 label y 그리고 prediction yHat에 있어서

 - error function의 그라디언트는 다음과 같다.



 - 이를 요약하자면 그라디언트는

 - 위와같이 구할 수 있다.



 - 지금까지의 모든 흐름을 생각해보면, 그라디언트는 스칼라 값 * 좌표상의 점 으로 표현될 수 있다.

 - 그리고 그 스칼라 값은 label과 prediction의 차의 배수에 지나지 않는다.

 - 그리고 이 스칼라 값이 의미하는 바는 다음과 같다.

 - 만약 특정 점이 잘 분류되었다면, 우린 작은 값의 그라디언트(small gradient)를 얻게 될 것이고,

 - 특정 점이 잘못 분류되었다면, 우린 큰 값의 그라디언트를 얻는다.

 - 즉, label과 prediction이 가까울수록 small gradient를

 - label과 prediction이 멀 수록 large gradient를 얻는다.



 - 따라서 작은 값의 그라디언트는 즉, 경사가 낮다면 우리의 좌표는 약간만 수정되며

 - 큰 값의 그라디언트 즉, 경사가 높다면 좌표 수정의 폭이 더 넓다.






Gradient Descent Step

 - Gradient Descent step은 단순히 모든 점에서의 error function의 그라디언트 배수를 빼 준 것으로 구성된다.

 - 따라서 다음과 같이 weights를 업데이트한다.

 - 이것은 아래와도 동치이다.



 - 마찬가지로 다음과 같이 bias를 업데이트한다.



 - 참고로 우리는 error들에 대해 평균을 취했으므로, 추가해야 할 항은 1/m * ∝ 

 - 즉, alpha를 클래스의 개수로 나눠줘야 하지만 alpha는 상수이므로 계산을 단순화 하기위해 그냥 알파로 표기.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함