Computer Science/기계학습 (Machine Learning)

[머신러닝/ML] Learning Rate, Data Preprocessing, Overfiting

gxxgsta 2023. 5. 20. 01:30
반응형
SMALL

Learning Rate


우리는 Gradient Desent(경사하강법)을 통해 결과값과 기대값의 오차를 줄였다.

cost function은 위와 같이 정의했었는데 이때 α를 Learining rate(학습률)이라고 하였다.

 

학습률은 기울기를 이동하는 step으로

α의 값을 크게 설정하면 기울기가 많이,

α의 값을 작게 설정하면 기울기가 적게 내려간다고 하였다.

 

하지만 α값이 과하게 크다면 최소값을 지나치게 되거나,

경사가 커지는 방향으로 최적화가 될 수 있다.

이 경우를 우리는 overshooting이라고 부른다.

 

반대로 α값이 과하게 작다면 연산에 시간이 오래 걸리고,
timeout이 발생하면 최소값에 도달하지 못할 수 있다.

 

그렇다면 Learning Rate를 어떻게 설정하는 것이 좋을까?

정해진 답은 없지만 보통 0.01부터 시작하며, 발산하면 값을 줄이고,

너무 천천히 움직인다면 값을 늘리는 방향으로 설정하는 것이 좋다.

 

Data Preprocessing


우리는 우리가 가진 feature data들을 전처리 해야 할 이유가 있다.

위 그림은 2차원 평면 위에 그래프를 표현한 것이다. 가장 작은 동심원에서 기울기가 가장 작다고 하자.

(해당 그래프를 옆에서 보면 우리가 지금껏 학습한 x^2 그래프와 같은 모양이라고 생각하면 된다.)

위와 같은 그래프에서는 경사하강법을 통해 가장 바깥에서 시작하여 점진적으로 가운데로 들어올 수 있다.

 

Normalized Data

하지만, 아래와 같은 예를 보면 경사하강법을 적용하기 어렵다.

그림에서 볼 수 있듯이 x1값의 범위와 x2값의 범위의 차이가 크다.

따라서, 등고선이 왜곡된 형태로 나타난다.

왜곡된 등고선을 통해 값을 탐지하면 최적의 α값을 부여했음에도

과하게 튀어 발산하는 경우가 존재할 수 있다.

따라서 값을 normalized(정규화) 하는 과정을 거쳐야 한다.

 

정규화 과정이 왜 필요한가?

토익(990점 만점) 100점과 수능 영어 100점을 비교할 수 없듯이

우리는 여러 종류의 데이터를 가져올 때 기준에 맞춰 데이터를 수정해주어야 한다.

우리는 보통 zero-centered 방식을 사용한다.

zero-centered 방식은 현재 보유하고 있는 데이터들의 중심을

(0, 0)으로 맞춰주는 방식을 말한다.

 

여기에서 더 나아가 우리가 가장 많이 사용하는 방식은 normalized 방식이며

normalized 방식은 어떠한 범위에 모든 데이터가 항상 들어가도록 하는 방식이다.

즉, 데이터를 특정 범위에 들어가도록 변환하여 데이터의 분포를 조정하는 작업이라고 할 수 있다.

 

Standardization

이제 데이터의 표준화(standardization)에 대해 알아보겠다.

지금껏 우리는 정규화에 대해 학습해왔는데 웬 표준화냐고 할 수 있겠지만,

표준화는 데이터를 정규화하는 수많은 방법 중 하나라고 할 수 있다.

한 마디로 표현하자면, 표준화는 정규화에 속한다고 할 수 있다.

 

데이터 표준화(standardization)란 데이터의 평균과 표준편차를 이용하여

표준 정규 분포의 속성을 갖도록 feature가 재조정되는 것이다.

즉, 데이터의 평균은 0으로, 표준편차는 1로 조정하는 방법이라고 할 수 있다.

식은 아래와 같다.

이렇게 데이터를 표준화시키면 학습 속도가 빠르고,

local minima에 빠질 위험도 적다.

 

Overfitting (과적합)


ML의 가장 큰 문제인 Overfitting에 대해 공부해보도록 하자.

기계학습은 보통 데이터를 바탕으로 학습을 한다.

하지만 해당 데이터에 과하게 학습할 경우 학습 데이터에 대해

100%에 가까운 정확도를 보여

새로 들어오는 test set에 대해 옳지 못한 결과값을 리턴하는 것을 말한다.

 

위 그림에서 어떤 모델이 일반적인 모델일까?

정답은 좌측이다.

우측의 모델은 과도하게 training set에 적합하게 맞춰져 있다.

우측과 같이 모델링이 되었을 때를 Overfitting(과적합)이라고 부른다.

위의 그래프를 보면 training set에 대해 학습시간이 늘어나고, 적합해질 수록

test set에 대한 오류가 증가하는 것을 볼 수 있다.

 

Solution for Overfitting

과적합은 어떻게 해결할 수 있을까?

크게 세 가지로 분류할 수 있다.

 

1. training data set을 늘린다.

2. feature의 개수를 줄인다.

3. Regularization(일반화)

 

위 세 가지 중 Regularization에 대해 자세히 알아보도록 하겠다.

 

Regularization (일반화)

Regularization(일반화)란 우리가 가진 weight을 줄이는 것이다.

위의 사진에서도 마찬가지 우측 사진이 Overfitting된 경우이다.

이때 weight를 줄인다는 것은 큰 값이 될 수 있는 숫자들을 지운다는 것이고,

더 직관적으로 말하자면 구불구불한 그래프를 덜 구불구불하게 만들어 준다고 할 수 있다.

 

위 그래프에서 큰 값이 되는 숫자는

당연하게도 지수의 크기가 큰 θ4*x4^4 또는 θ3*x3^3라고 할 수 있다.

 

weight를 줄이는 방법은 위 식을 통해 수행할 수 있다.

식의 끝에 존재하는 표현식을 제외하고 보면 익숙한 모양이 보일 것이다.

바로 지금껏 학습해온 Cost Function이다.

과적합을 줄이기 위한 값으로 이전에 존재하던 cost function에

모든 파라미터의 제곱값을 모두 합한 값을 더해주면 된다.

 

식의 가장 뒤에 있는 상수의 λ 기호는

regularization strength(또는 parameter)라고 부르며

해당 값이 커지면 함수를 평평하게 만들어 주고

값이 작아지면 함수를 더욱 울퉁불퉁하게 만들어 준다고 할 수 있다.

 

 

참고 및 출처: https://velog.io/@cbkyeong/ML%EC%A0%95%EA%B7%9C%ED%99%94normalization%EC%99%80-%ED%91%9C%EC%A4%80%ED%99%94standardization%EB%8A%94-%EC%99%9C-%ED%95%98%EB%8A%94%EA%B1%B8%EA%B9%8C

 

https://sungwookoo.tistory.com/35

반응형
LIST