머신러닝 내공쌓기
[머신러닝] 경사하강법 이해하기 본문
경사하강법을 이해하려면 앞선 포스트에서 설명드린 최소제곱법에서 출발해야 합니다.
(https://mltutorial.tistory.com/3?category=903849)
최소제곱법은 선형함수 모델의 예측값과 실제값의 오차(error)의 크기를 나타내주지만, 그 자체로는 이러한 오차를 어떻게 줄여야 하는지, 그 방법을 제시하지는 못합니다. 단지, 선형함수 모델이 얼마나 실제값에 근사한 예측을 하는지 판단하는 지표일 뿐입니다. 따라서 최소제곱법을 이용해 값을 구하는 것만으로는 충분하지 않고, 최소제곱법을 이용해 손실함수(Loss Function)을 그려주어야 합니다. 그런데 최소제곱법을 이용한 손실함수는 2차함수의 포물선 그래프로 그려지게 됩니다. 이때 x축은 가중치(Weight)를, y축은 손실(Loss)을 나타내므로, 손실을 최소로 하는 가중치 값을 찾는 것이 곧 머신러닝의 목표가 됩니다. 바로 이 가중치 값을 찾기 위해 사용되는 기법이 경사하강법(Gradient Descent)입니다.
우리는 2차 그래프 위의 한 점(특정 가중치)를 기준으로 편미분을 하면, 그 점에서 접선의 기울기를 구할 수 있습니다. 그런데 손실이 최소로 되는 지점은 기울기가 0이어야 하므로, 기울기가 0에 가까울수록 기계학습의 성능이 좋아진다고 말할 수 있습니다. 따라서 특정 지점에서 편미분하여 구한 기울기가 0이 아니라면, 적당한 거리를 이동해 가면서 기울기가 점차 작아지는 방향으로 움직여야 합니다. 경사하강법의 공식을 살펴보면, 기존의 가중치값에서 '손실함수의 접선에서의 기울기에 알파를 곱한 값'을 빼서 기존의 가중치값을 새로운 값으로 대체하고 있는 것을 알 수 있습니다. 이때 알파를 학습률(learning rate)라고 부릅니다. 알파값이 클수록 가중치값의 변동폭이 커지는데, 이 경우 기계학습을 진행할수록 기울기가 0으로 수렴하는 게 아니라 오히려 발산해버리는 문제가 생길 수 있습니다. 반면 학습률이 너무 작으면 기존의 가중치에서 변동된 정도가 미미해서 학습에 오랜 시간이 걸릴 수 있습니다.
기울기가 0이 되는 가중치값을 기준으로 왼쪽은 접선의 기울기가 마이너스 값을, 오른쪽은 플러스 값을 가지게 됩니다. 따라서 특정 가중치의 접선기울기가 마이너스인 경우, 경사하강법 공식에 의해 기존의 가중치에 양의 값을 더하는 결과가 되어 가중치값이 오른쪽으로 이동하고, 접선기울기가 플러스인 경우, 가중치값이 왼쪽으로 이동하게 되어 지그재그 모양의 학습을 진행하게 됩니다.
'머신러닝' 카테고리의 다른 글
[머신러닝] 레이블 인코딩, 원핫 인코딩 (0) | 2021.06.18 |
---|---|
[머신러닝] 선형회귀 정리하기 (0) | 2021.06.16 |
[머신러닝] 머신러닝 조감도 그리기 (0) | 2021.06.16 |
머신러닝 블로그를 시작하기에 앞서 (0) | 2021.06.16 |