Ch6. Gradient Descent(경사하강법)
1. Error Surface
회귀분석에서의 Error는 이제까지 언급함 MSE라고 생각하시면 됩니다. Error surface는 모든 가능한 가중치(일반적으로 통계학에서는 회귀계수 , 으로 표현하고, 학습쪽에서는 가중지 로 표현하고는 합니다.)들에 대한 조합에 대해 Error 값을 계산하여 시각화를 하고자 한 것입니다. 통계학에서는 최소제곱법을 이용하여 회귀계수를 추정하지만, 기계학습에서의 회귀계수 추정은 살짝 다릅니다. 이 Error Surface에서 MSE가 최소점이 되는 가중치의 조합을 찾는 방식으로 회귀계수를 추정합니다.
Error Surface는 일반적으로 볼록한 그릇 모양입니다. 그 의미는 MSE가 최소가 되는 바닥이 존재할 것이며, 그 바닥을 Global minimum이라고 합니다. 이러한 접근법을 저희는 least squares optimization이라고 합니다.
2. Gradient Descent
앞서 말했듯이, 선형 회귀분석에서 global minimum을 찾기 위하여 가능한 모든 가중치의 조합(회귀계수의 조합)을 계산하는 방식은 데이터의 크기가 방대할 경우, 연산 속도가 너무 길어지기 때문에 현실적으로 구현하기에는 어려운 점이 있습니다. 하지만, Error surface에서 global minimum이 존재한다는 사실을 기반으로, 효율성을 높이기 위해 gradient descent(경사 하강법)방법을 사용합니다.
Gradient Descent(경사 하강법)의 원리는 다음과 같습니다.
- 앞을 보기 힘들 정도로, 안개가 낀 협곡에 있다고 가정합시다.
- 앞이 보이지 않아, 협곡을 내려가는 길을 찾을 수가 없지만, 바로 앞에서의 협곡의 경사는 확인할 수는 있습니다.
- 경사가 내려가면 해당 방향으로 가고, 경사가 올라가면 내려가는 경사를 찾아 방향을 정합니다.
- 이렇게 꾸준히 조심히 내려가다 보면, 언젠가는 바닥에 도착할 것입니다.
이를 그대로 알고리즘 원리에 비유를 하면,
Gradient Descent는 임의의 위치에서 시작합니다.(위치 : 가중치, 회귀계수)
임의로 주어지는 가중치는 범위로 주어집니다.
- 전체 조합이 아닌, 해당 위치를 기준으로한 가중치를 범위로 잡습니다.
SSE(Sum of Squared Error)을 계산합니다.
- SSE를 통해 해당 지역(가중치, 회귀계수의 범위 내)에서의 Error Surface를 찾을 수 있습니다.
Error surface에서 경사를 계산합니다.
- 경사가 내려가는 곳을 방향으로 설정한 후, 새로운 Error Surface로 이동을 합니다.
계산이 무수히 반복되다보면, global minumum을 찾을 수 있습니다.
- 가중치들은 계산이 진행됨에 따라서 한 곳으로 수렴하게 되는 데, 해당 부분이 Globar minimum이 될 것입니다.
일반적으로 Gradient Descent는 다음의 그래프를 통해 이해한다면 더 수월해질 것입니다.
여기서, learning rate 라는 것이 등장하는데, 이는 쉽게 말하면 계곡에서 한걸음씩 내려갈 때 보폭을 어느 정도의 크리고 설정하는 정도라고 생각하시면 됩니다. 보폭이 크면 씩씩하게 걸을 수는 있지만, 방향을 제대로 잡지 못해 알고리즘이 잘못 작동할 가능성이 있습니다. 반대로 보폭을 너무 짧게 하면 방향은 정확하게 정해서 내려갈 수 있겠지만, 속도가 너무 느리게 됩니다. 이는 저희의 퇴근시간에 매우 방해되는 문제입니다. 이 역시도 learning rate를 잘 설정하는 센스가 중요한 영역입니다.
아래의 그래프는 가중치가 변할 때마다 Error값이 어떻게 낮아지는지 나타냈습니다. 흔히, Cost function이라고 합니다.
왼쪽은 learning rate가 너무 크게 잡혔을 경우, 방향을 잘못 잡아 오히려 올라가는 현상이 발생할 수도 있습니다. 오른쪽은 반대로 learning rate가 너무 낮게 잡혀, 내려가는 과정이 매우 뎌지게 진행됩니다.
learning rate가 내려가는 보폭을 정한다면, 방향을 정하는 것은 Delta Function이 담당합니다. 계산 방식은 편미분을 통해 진행이 되는데, 수식이 조금 많이 복잡할 수도 있지만, 간단하게 원리를 설명해드리겠습니다. 여러분들도 아시다시피 미분을 활용한 최소 혹은 최대점을 찾기 위한 방법입니다. Delta Function은 error surface가 낮아지는 방향을 제시해주는 역할을 합니다.
- Error Loss function 정의
먼저 Error function을 정의하는데, 여기서 는 SSE라고 생각하시면 됩니다. 가 벡터 형태로 표시되어 이질감이 드는 것일 뿐, 풀어쓰면 이기 때문입니다.
- Error Surface에서 편미분을 통해 global minimum 찾기
Loss Function을 각 가중치(기울기, 회귀계수)로 편미분을 하여 0 이되는 지점을 찾습니다. 이는 회귀분석에서 최소제곱법과 비슷한 방식이라고 생각하면 됩니다. 만약 회귀식이 Multiple인 경우에는 식의 형태는 조금 변하겠지만 원리는 바뀌지 않습니다.
복잡한 편미분을 계산하면 Delta Function이 계산이 됩니다.
- 방향 설정 방법
이렇게 learning rate 와 를 곱해준 값을 더해줌으로써 방향과 보폭을 결정할 수 있습니다.
Learning rate 및 초기 가중치 설정 방법
마지막으로 최적의 learning rate 및 초기 가중치 설정 방법을 찾아주는 그렇다할 이론은 없다는 것이 학계의 정설입니다. 초기 가중치 설정은 변수를 Normalizaton을 한 후 추정하는 것이 유리합니다. 여기서 Normalization이란,
변환을 의미합니다. 변환 후에 x 값은 [0,1]사이의 상대적인 비율값을 가지게 됩니다. Learning rate 및 초기 가중치 설정은 경험적인 판단에서 결정을 내리는 것이 좋습니다.
요약하면 열심히 반복문 코드를 구성해서 실험하라는 뜻입니다.
댓글
댓글 쓰기