딥러닝

[딥러닝]경사 하강법(Gradient descent)

Im_light.J 2023. 2. 25. 06:19
728x90

딥러닝 알고리즘에서 가장 중요한 부분인 경사 하강법에 대해서 알아보겠습니다 

 

경사하강법이란? 


경사 하강법은 현재 위치에서 Loss(손실 함수)를 줄이는 방향으로 학습을 하기 위해서 사용하는 방법입니다. 

 

목적 -> 손실함수의 최소화, Global minima를 향해 가자!

Global minima는 쉽게 말해서 함수 전체의 최솟값입니다 이에 반대되는 개념으로는 Local minima가 있습니다 

Global minima가 아닌 극소값 전체라고 생각하시면 될 것 같습니다.

 

각 변수에 대해서 Loss함수를 편미분을 진행해주며 이를 감소하는 방향으로 가중치에 Learning rate를 곱해준 만큼

업데이트를 진행해줍니다 

 

 

Learning rate

 


아래의 그림의 수식을 보면 업데이트 된 값 = 이전 값 - 학습률 * 기울기 입니다. 

 

기울기의 방향은 Loss함수를 증가시키는 방향과 같습니다. 그런데 우리는 Loss가 감소시키는 방향으로 

업데이트를 해주고 싶기 때문에 기울기의 음수(방향이 반대이므로 Loss가 감소)만큼 가중치를

업데이트 해줍니다 

 

이때 학습률 a를 곱해주는데 이 값은 학습의 속도가 결과적으로 모델의 정확도에 영향을 주기때문에

적절한 값으로 선택하는 것이 중요합니다 

 

그렇기 때문에 적절한 수치의 Learning rete를 선정하는 것이 중요합니다 

너무 작은 경우 학습 속도가 느려지고 (혹은 local minima에 빠져 이상한 곳에 수렴) 

너무 큰 경우 minima를 지나치게 돠어 그림의 오른쪽 예시처럼 진동하거나 아예 수렴하지 못하는 문제가 발생합니다 

 

위의 문제를 적절하게 회피하기 위해서 Learning rate를 가변적으로 가져가는 scheduler라는걸 적용하기도 합니다 

딥러닝 프레임워크들은 자체적으로 scheduler를 제공합니다.

 

아래는 scheduler와 pytorch에서의 적용예시입니다  

 

https://dacon.io/competitions/official/235697/codeshare/2373

 

다양한 Learning Rate Scheduler(pytorch)

월간 데이콘 제 2회 컴퓨터 비전 학습 경진대회

dacon.io

 

Weight initialize


 

또한 경사 하강에서 중요하게 작용될 수 있는 요소로는 가중치 초기화가 있습니다. 

미분을 통해 기울기를 구하고 이를 통해서 가중치를 업데이트 해나갑니다.

 

당연하지만 처음 시작점이 내가 가고 싶은곳(Global minima)와 가깝다면 더 빨리 도착할 수 있을것입니다. 

혹은, 잘 선정된 초기 가중치를 통해 local minima에 빠지는 것을 막을 수도 있습니다. 

 

 

다음장에서는 가중치 초기화에 대해서 이어서 설명하겠습니다 

728x90