[머신러닝] 머신러닝 입문 올인원 :: 1강 회귀_Gradient Descent

2024. 5. 30. 16:36메타코드/머신러닝

 


 

 

1강 회귀 :: Gradient Descent

 

이번 강의에서는 그 유명한 경사하강법에 대해 배운다.

 

복잡한 함수의 경우 최소제곱법으로 해결이 어려움.

행렬의 역행렬을 구하는 것도 계산 비용이 많이 든다. 2행렬과 100행렬을 계산하는 경우 50배가 느는 것이 아니라 기하급수적으로 계산비용이 든다.

경사하강법- 경사를 하강한다. 손실한수가 있을때 손실함수 값을 최소화하는 방법.

 

경사하강법

함수의 최솟값은 무조건 순간 변화율이 0이다!!

슈도 코드

손실함수에 대한 미분값. a0에대한 편미분값이 3이 나올때, 순간변화율이 3이라는 것은 a0가 순각적으로 커졌을경우 3이 플러스된다는 의미. 우리는 손실함수값을 줄이는 것이 목적. -를 붙여줌.마이너스를 해주어야 손실함수값이 낮아지는곳으로 가게 됨. 미분값의 반대방향으로 모델 파라미터 업데이트. ->a0에다가 손실함수 미분값을 통해 얻은 값을 마이너스해줌=a1

 

a1으로 갔을때 미분값이 1.5가 되면. a가1일때 1.5식 커짐. a2 = a1 - 1.5

이걸 계속 반복. (에폭만큼 반복).

미분값이 0이 될때까지.

a에폭 = a*

 

계산한 미분값을 그대로 사용해 업데이트 하지 않고, 하이퍼파라미터를 정해서 (학습률 * 미분값)을 활용해서 파라미터를 최적화함.

 

학습률을 왜 도입할까?

-loss를 최적화하기 위해서는 포인트를 찾아야함. 미분값이 크게 되면 포인트에 도달하기 전에 넘어갈 수 있음. -> 수렴하기 쉽지 않음

학습률을 도입해서 미분값이 크든 작든 포인트에 적당히 다가갈 수 있게 하자.

(학습률을 높여줌 -> 미분값이 작으면 (or 학습초기) 도달하는데 오래걸림.속도를 높혀줌)

(학습률을 낮춤 -> 미분값이 크면 (or 학습후기) 포인트를 넘어갈 수 있음. 포인트까지 천천히 가게 해줌)  

 

학습률 스케줄러.

초기에는 학습률을 키우고 후기에는 줄임.

손실(loss)그래프가 있을때 최적의 포인트를 향해 나아감. 처음에는 크게크게 가다가 나중에는 근처에 도달했을테니 천천히 가게 함.

step -> 업데이트 횟수

@멀티스텝스케줄러

업데이트가 적은 학습초기에 학습률을 높히고 후기에는 줄이는 방식(계단형식의 그래프)

@코싸인스케줄러

-학습률이 부드럽게 줄어듬

 

경사하강법은 전체데이터셋를 활용함. 전체데이터셋으로 미분값을 다 얻고 나서 파라미터를 최적화함.

-> 계산 비용이 매우 큼

@확률적 경사 하강법

확률적으로 데이터를 샘플링해서 경사하강법을 진행

->불안정. 

    데이터 한개에 좌지우지되기 때문에. 수렴에 방해가 됨

@미니 배치 확룰적 경사하강법

배치의 꾸러미들로 나눠서 샘플링.

배치의 크기를 조절해, 학습 속도와 정확도를 조절.

딥러닝에서는 데이터가 굉장히 많기 때문에 이 방법을 주로 씀.

 

그 외 다양한 경사하강법 방법들. 앞에서 한 것은 기본.

이 방법들은 학습률과 관련이 있음. 

(미분값이 클 때 학습률을 적게 해야한다는 것을 틀린 말이나 이해를 위해 이렇게 정의하고 넘어감)

 

<3,4,5>

적응형 -> 모델의 파라미터에 따라 다른 학습률을 줌.

a라는 파라미터는 이미 학습이 잘돼서 학습할 필요가 더이상 없음.

b라는 파라미터는 최적값에서 굉장히 멀다. 학습이 많이 필요함.

이런 상황에서 a에게는 학습률을 적게, b에게는 학습률을 많이 줌.

=>파라미터의 학습정도에 따라 학습률을 적응형으로 주겠다.

(미분값이 작으면 학습률도 작게, 크면 크게)

 

<1,2>

sub-optimal (서브 최적값)

모든 파라미터에 대해서 가장 작은 최적값을 가졌을때 global optimal.

sub optimal은 local optimal이라고 많이 함.

 

momentum(하늘색)

서브 최적값을 찾음. 성능이 조금 떨어질 수 있음.

오른쪽을 더 탐색해 볼 수 없을까?

이럴때 momentum(관성)의 법칙을 활용함.

계산된 미분값에 이전까지 계산됐던 미분값의 관성값을 더해줌.

관성포인트에 따라 더 오른쪽으로 가게 됨.(노란색)

 

경사하강법 많이 들어봤는데 강의를 통해 무엇인지 자세히 알게 되었다. 학습률이나 adam같은 것도 그냥 모델돌릴때 파라미터 수정만 해봤지 어떤건지 몰랐는데 이번에 자세히 알게 되었다. 나중에 복습겸 들으면 정말 완벽히 알 것 같다.

 

 

이미지를 눌러 머신러닝 배우러 가기