부스트캠프/day 정리

[week 1 - day 3] 경사하강법

요다다 2023. 3. 9. 00:35

경사하강법 

미분은 변수의 움직임에 따른 함수값의 변화를 측정하는 것으로 최적화에서 많이 쓰이는 기법
최적화에 어떻게 쓰이는가?
미분은 접선의 기울기를 구할 수 있는데, 이 접선의 기울기를 통해 어떤 방향으로 움직어야 함수 값이 증가하는지 감소하는지를 판단할 수 있다.
미분값을 더하면 함수 값이 증가하는 것, 미분값을 빼면 함수 값이 감소하는 것 !
이게 바로 경사상승법, 경사하강법이다
그러니깐 경사하강법은 어느 지점에서 상관없이 미분값을 빼가면서 극값을 찾는 과정이라고 할 수 있음
 
Weight = Weight - lr * 기울기
위 공식처럼 lr(학습률)을 곱해주는데, 학습률이 너무 작으면 수렴하는데(=극값을 찾는데) 너무 오래 걸리고, 크면 발산 가능성이 있다.  
 

변수가 벡터라면 ?

변수가 벡터라면, 손실 함수의 기울기 또한 벡터로 나타난다. 따라서, 편미분을 사용해 각 변수에 대한 기울기를 계산해야 한다.
 


   

선형회귀분석

앞서 선형모델은 무어-펜로즈 역행렬을 이용해 찾을 수 있다 했는데, 경사하강법을 이용해 선형모델을 찾을 수 있다.
선형회귀인 경우 경사하강법을 이용해 선형 모델을 찾을 수 있지만, 비선형회귀인 경우는 목적식이 볼록하지 않을 수 있기 때문에 수렴이 항상 보장되지는 않는다. 전역 최소값이 아닌 지역 최소값에 빠질 가능성이 큼
(비선형회귀 : 다항식 회귀, 로지스틱 회귀, 지수 함수 회귀 등등등)
 
그렇기에 확률적 경사하강법을 사용한다.

확률적 경사하강법(SGD)

이는 모든 데이터를 사용해서 업데이트(일반 경사하강법)하는 대신 데이터 일부만 활용하여 업데이트하는 것이다.
조금 더 자세히 적어보면, mini-batch라는 작은 데이터 샘플에 대해서만 그레디언트 값을 계산해 모델 파라미터를 업데이트하는 것이다. 그렇기에 연산자원을 효율적으로 활용하는데 효과적이라고 한다.

SGD

이렇게 확률적으로 목적식이 바뀌기 때문에 볼록하지 않은 목적식에서도 사용가능한 것 !
 
 


위 경사하강법 실습 코드는 값 말고 코드적으로는 변경이 불가능할 것 같음.. 알고리즘 공식을 바꿀수도 없는 노릇이니!! 유출의 문제가 있을 것 같아 비공개 게시글로 따로 적어놨다.
아래 클릭 !
https://yodabe.tistory.com/16