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) | |
장점 |
|
|
단점 |
|
|
빨간색의 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(특징점)을 하나 추가한 이후에 분류가 가능해졌다
참고자료
'TIL > 머신러닝' 카테고리의 다른 글
11.23일 수업 TIL Gradient Boosting Machine (XGBoost, lightGBM,CatBoost ) (0) | 2022.11.26 |
---|---|
11.24일 얕은복사,깊은복사 / 혼동행렬 (0) | 2022.11.24 |
11.22 오전 머신러닝 최적화 ,경사하강법 (1) | 2022.11.22 |
11.21 오후 머신러닝 분류 모델링, KNN,선형회귀 (0) | 2022.11.21 |
11.21 오전 인공지능,머신러닝, 딥러닝 /머신러닝 프로세스 개요 (0) | 2022.11.21 |
댓글