TIL/머신러닝

11.22 오후 Learning rate ,bgd, SGD,모멘텀

monawa 2022. 11. 22.
728x90

4-3. 경사하강법 심화

 

Learning rate

low learning rate: 손실(loss) 감소가 선형의 형태를 보이면서 천천히 학습됨

high learning rate: 손실 감소가 지수적인(exponential) 형태를 보이며, 구간에 따라 빠른 학습 혹은 정체가 보임

very high learning rate: 매우 높은 학습률은 경우에 따라, 손실을 오히려 증가시키는 상황을 발생

good learning rate:  적절한 학습 곡선의 형태로, Learning rate를 조절하면서 찾아내야 함

 

=> 오전에 했던 내용 참고 

경사 하강법에서는 학습시 스텝의 크기 (step size)가 중요하다.

학습률이 너무 작을 경우 학습률이 너무 클 경우 
 학습 시간이 오래걸림
(알고리즘이 수렴하기 위해 반복해야 하는 값이 많으므로)
학습 시간은 적음
(알고리즘이 수렴하기 위해 반복해야 하는 값이 적음으로)
지역 최소값(local minimum)에 수렴할 수 있다.
전역 최소값(global minimum)에 도달하지 못함

최소값에서 멀어질 수 있다
(스텝이 너무 커서 전역 최소값(global minimum)을 가로질러 반대편으로 건너뛰어감으로 수렴하지 못함)

경사하강법에 다른식을 붙이지 않고 바로사용하는 방법은 크게 두가지가 있다

 

배치 경사 하강법(Batch Gradient Descent, BGD)

  • 경사 하강법의 손실 함수(Loss Function)의 기울기 계산에 전체 train set을 사용하는 방법이다.

안정적으로 수렴하나 안정적으로만 움직이기떄문에 최소해에 빠지더라도 빠져나오기 힘드며

데이터셋이 커질수록 시간과 리소스가 많이 소모된다

 

확률적 경사 하강법(Stochastic Gradient Descent, SGD)

BGD의 단점을 방지하기 위해서 sgd를 사용한다 

  • Gradient Descnet를 전체 데이터가 아닌  학습 데이터셋에서 무작위로 한 개의 샘플 데이터 셋을 추출하고, 그 샘플에 대해서만 기울기를 계산하는 방법 

 

샘플 데이터 셋에 대해서만 경사(Gradient)를 계산하므로, 매 반복에서 다뤄야 할 데이터 수가 매우 적어, 학습 속도가 매우 빠르다.

이를 통해 일종의 추정하는 그런 Gradient를 이용해서 여러 스텝을 빠르게 나아갈 수 있기 때문에  굉장히 효율적으로 함수를 최적화해 줄 수 있다는 겁니다(메모리 소모량 낮음 , 매우 큰데이터셋이라도 학습가능)

그래서 차이를 보자면 모든 데이터를 사용하는가 또는 일부분을 사용하는가.

SGD를 사용할 경우 Batch Gradient Descent에서 빠질 local minima에 빠지지 않고 더 좋은 방향으로 수렴할 가능성도 있다.


  배치 경사 하강법(BGD) 확률적 경사 하강법(SGD)
장점
  • 안정적으로 수렴한다
  • 수렴까지 발생하는 총 파라미터 업데이트 수는 매우 적다
  • 학습 속도가 매우 빠르다.
  • 메모리 소모량이 매우 낮으며,
    매우 큰 훈련 데이터 셋이라 할지라도 학습 가능
  •  local minima에 빠지지 않고 더 좋은 방향으로 수렴할 가능성도 있다
단점
  • 지역 최소해(Local Minimum)에 빠지더라도 안정적으로 움직이므로 빠져나오기 힘들다
    (Local Optima(minimum) 문제가 발생할 가능성이 높다.)
  • 학습 데이터셋이 커지면 커질수록 시간과 리소스 소모가 지나치게 크다
  • 다소 부정확할 수는 있다
  • 최적해(Global minimum)에 정확히 도달하지 못할 가능성이 있다.

 

빨간색의 SGD가 우리가 알고 있는 Naive Stochastic Gradient Descent 알고리즘이고, Momentum, NAG, Adagrad, AdaDelta, RMSprop 등은 SGD의 변형이다. 보다시피 모든 경우에서 SGD는 다른 알고리즘들에 비해 성능이 월등하게 낮다.

다른 알고리즘들 보다 이동속도가 현저하게 느릴뿐만 아니라, 방향을 제대로 잡지 못하고 이상한 곳에서 수렴하여 이동하지 못하는 모습도 관찰할 수 있다. 즉 단순한 SGD를 이용하여 네트워크를 학습시킬 경우 네트워크가 상대적으로 좋은 결과를 얻지 못할 것이라고 예측할 수 있다.

 

 


모멘텀(Momentum)

과거에서 업데이트 해왔던 방식을 계속 기억하는 것

 

경사 하강법의 한계점(기본 SGD를 사용하면 Local Minimum에 빠르게 수렴하긴 하는데 거기서 벗어나지는 못하기떄문에)을 보완하기 위한 방법으로

W가 이동하는 과정에서 일종의 '관성'을 부여하는 것입니다. 즉 W를 업데이트 할 때에 이전 단계의 업데이트 방향을 기억하고 반영하는 것입니다

=> (기울기에 관성을 부과하여 언덕에서 공을 굴렸을때, 낮은 언덕은 공의 관성을 이용하여 쉽게 넘어갈 수 있게 하여 지역 최소값을 탈출 할 수 있게 한다)

 

 

장점

위 그림 처럼 Local Minimum 을 피해서 벗어나게 해준다

이전 속도가 더 반영되므로 수렴속도도 빨라지게 됩니다.

 

단점

 W를 업데이트 할 때마다, 과거에 이동했던 양을 변수별로 저장해야하므로 변수에 대한 메모리가 2배로 소모된다는 것입니다.

 


5-1. Support Vector Machine

Support Vector Machine

  • 선형이나 비선형 분류 회귀 이상치 탐색에도 사용가능한 머신러닝방법론
  • 딥러닝 이전시대까지 널리 사용됬다
  • 복잡한 분류 문제를 잘 해결, 상대적으로 작거나 중간 크기를 가진 데이터에 적합
  • 최적화 모형으로 모델링 후 최적의 분류 경계 탐색
  • 두클래스 사이에 가장 넓이가 큰 분류 경계선을 찾기떄문에 lage margin classification이라고도한다
  • Support Vector
    :각각 클래스에서 분류 경계선을 지지하는 관측치

 

1.두 카테고리 중 어느 하나에 속한 데이터 집합이 주어졌을 때,

2.주어진 데이터집합을 바탕으로 새로운 데이터가 어느 카테고리에 속하는지 판단하는  비확률적 이진 선형분류모델을 만든다.

3.만들어진 분류모델은 데이터가 사상된 공간에서 경계로 표현되는데 SVM알고리즘은  그 중 가장 큰 폭을 가진 경계를 찾는다.

 

ex 짜장면인지 짬뽕인지 직선을 그어서 구분하기

국물의 양과 고춧가루의 양이 많으면 짬뽕 아니면 짜장으로 구분

두 부류 사이의 여백이 가장 넓어지면(둘이 가장 떨어져 있으면(=margin최대화)) 그 둘을 가장 잘 분류했다고 할 수 있다. 이를 분류하는 과정은 위의 그래프와 같이 빨간 직선(선형모델)으로 그 둘을 구분 할 수도 있고 때에 따라서는 구불구불한 곡선으로(비선형모델)으로 둘을 구분할 수 있을 것이다. 이렇게 직관적으로는 어려운 이야기가 아니지만 실제 이론으로 정리하는 일은 쉽지 않다.

 

svm은 스케일에 민감하기떄문에 변수들간의 스케일을 잘 맞춰주는것이 중요하며 이는 sklearn의 standardscaler을 상요하면 스케일을 맞출수 있다!

 

마진(Margin)

진은 두 집단 사이의 거리라고 볼 수 있는데, 이 거리가 최대로 멀수록 두 집단이 잘 분류되었다고 생각하면 된다. 

이때 '거리'를 '유사도'라고 볼 수 있다. 

예를 들어, 나와 가장 가까이 지내는 사람들일수록 나와 비슷한 사람들일 확률이 높기 때문에 유사도가 높다고 할 수 있다. 반면 거리가 멀 수록 두 집단 간의 유사도가 적다(=즉, 잘 분류되어있다.)고 할 수 있는 것이다.

hard margin soft margin
두클래스가 하나의 선으로 완벽하게 나눠지는 경우에만 적용 가능
마진 값을 타이트하게 잡는다
일부 샘플들이 분류경계선의 분류방법

이상치(outlier)들을 허용하지 않는다 결과에 반하는  이상치들을 어느 정도 허용하면서 결졍경계를 설정하는 것이다.
(c패널티 파라미터로 조정)
 과적합(overfitting)이 발생하기 쉽고, 노이즈로 인해 최적의 결정 경계를 잘못 구분하거나 못 찾는 경우가 발생할 수 있다.
 

 

nonlinear svm classification

기존적인 아이디어 : 다항식 변수를 추가함으로서 직선으로 분류할수 있는 형태에 데이터 만들기

 

밑에 그림 같은 경우에 feature(특징점)이 하나일 떄는 직선 하나로 분류할 수가 없었는데 feature(특징점)을 하나 추가한 이후에 분류가 가능해졌다


참고자료 

 

SVM(Support Vector Machine) 원리

어떠한 '분류'라는 문제를 풀기 위해 패턴 인식 분야는 꾸준히 발전하였다. 가장 오랜 역사를 가진 통계적 분류방법에서 출발해서 신경망이 개발되었고 트리분류기, 은닉마코프모델등이 개발되

sanghyu.tistory.com

 

[신경망] 4. 경사하강법 (Gradient Descent) (3) Momentum

안녕하세요, 오늘은 경사하강법 (Gradient Descent Method)의 문제점인 local minimum, plateau (평탄한 지점)에 빠지거나 수렴속도가 느리다는 단점을 해결하고자 나온 모멘텀 (Momentum)에 대해서 배워보도록

analysisbugs.tistory.com

 

실습으로 배우는 머신러닝

 

www.kmooc.kr

 

학습률 (Learning rate)

학습률 (Learning rate) StartBioinformaticsAndMe 학습률 (Learning rate): 경사하강법 알고리즘은 기울기에 학습률(Learning rate) 또는 보폭(Step size)이라 불리는 스칼라를 곱해 다음 지점을 결정: Local minimum에 효

bioinformaticsandme.tistory.com

 

딥러닝-6.3. 최적화(4)-확률적 경사 하강법(SGD)

이전 포스트에서는 학습 단위에 대한 단어인 에포크(Epoch), 배치 크기(Batch size), 이터레이션(Iteration)에 대해 알아보았다. 이번 포스트에서 알아볼 확률적 경사 하강법(SGD)의 키는 배치 크기와 랜

gooopy.tistory.com

 

728x90

댓글