[Gradient Descent]

2024. 7. 11. 19:38study/DL(1)

 

 

 

머신러닝에서 손실함수(Loss function:실제데이터값과 모델이 내놓은 데이터 값의 차이를 나타내는 함수)을 최적화(Optimizaion:손실함수를 어떻게 가장 작게 할 것인지에 대한 수학적인 방법)해야한다고 하였다. 앞선 포스팅에서는 최소제곱법을 소개하였다. 이번 포스팅에서는 최적화 방법 중의 하나인 경사하강법(gradient descent)에 대해 소개하겠다. 최소제곱법같은 경우에는 한번에 계산해서 찾아내는 방법으로 선형함수, 선형회귀에서만 사용가능한 수학적인 방법이였지만, 경사하강법은 선형함수, 선형회귀 뿐만 아니라 대부분의 함수에서 사용할 수 있는 방법이다. 

 

 

 

우리가 경사하강법을 사용해서 얻고자 하는 목표는 손실함수의 최저점을 찾기 위함이였다. 그렇다면 미분계수가 0인 지점을 찾으면 되는 것인데, 실제 딥러닝에서의 손실함수는 굉장히 복잡하기 때문에 미분 계수가 0이 되는 완벽한 지점을 찾기는 불가능에 가깝다 따라서 현재 기울기(w에 대해 미분한 값)가 증가하고 있으면 그 반대방향으로 w(변수=파라미터)를 업데이트하여 최저점에 가깝게 만들고 기울기가 감소하고 있으면 그 반대방향인 w를 증가시키면 되는 것이다. 

 

 

 

 

위는 경사하강법 수식이다. 앞에 델타는 학습률(learning rate)로 한번의 단계에서 w(parameter,가중치)값을 얼만큼 변화시키는 지 나타내는 척도이다. 학습률을 너무 크게 잡아버리면 발산해버려서 수천번 계산하더라도 최솟값을 찾을 수 없다. 그렇다고 너무 작게 잡아버리면 시간이 너무 오래걸리기때문에 효율적이지 못하다.

 

 

 

 

 

그렇다면 경사하강법으로 정확한 최저점을 찾기는 힘들지만 최저점에 가까워 질 수 있는 수학적인 방법이라고 했다. 그렇다면 언제 경사하강법을 종료시키고 그 지점을 minimum으로 받아들여야할까? 특정값 이하고 gradient가 감소하면 종료하는Thresholding, n번 반복하고 값의 변화가 없을 때 종료하는 auto-stopping option 등 다양한 방법이 있다. 이처럼 종료할 조건은 컴퓨터가 판단하는게 아니라 우리가 설정해줘야하는 것인데 이런 변수를 hyper parameter이라고 한다. 경사하강법의 hyper parameter에는 초깃값(gaussian random distribution으로 선택), 학습률(10의 거듭제곱들 사용), 종료조건, 반복횟수가 있겠다. 

 

 

 

 

경사하강법은 모든 함수에서 사용가능하다고 하였지만 한계가 있다. 데이터가 많아지면 계산량이 많아지며 local minimum과 plateau 문제가 있다. local minimum은 최소점을 잘못찾은 경우다. global minimum을 찾아야 하지만 local minimum에 빠지게 되는 경우가 있다.

 

 

 

 

plateau는 평탄한 지역에서는 학습속도가 매우 느리고, 정지해버릴 수도 있는 경우가 있다. 이처럼 경사하강법의 오류를 줄이기 위해서는 hyper parameter를 적절하게 조정하는 것이 중요한 포인트가 되겠다.

 

 

 

 

'study > DL(1)' 카테고리의 다른 글

[Data] NETCDF-4 형식의 데이터 셋을 다뤄보기  (2) 2024.07.20
[ML]  (0) 2024.07.09