딥러닝/모두를 위한 딥러닝 시즌1

[모두를 위한 딥러닝 시즌1] Lec07-1. 학습 rate, Overfitting, 그리고 일반화 (Regularization)

CoGam 2024. 2. 8. 01:04
728x90

이번 7강에서는 모델의 관점이 아닌 학습의 관점에서 어떤 것들이 영향을 미칠 수 있는지, 

그리고 어떻게 해야 좋은 결과를 얻을 수 있는지 등을 배운다.

 

1. Learning Rate

먼저 배우는 것은 learning rate이다.

 

경사 하강법에 대해서 배울 때 이미 배운 적이 있다.

알파 값에 해당하는 learning rate가

커지게 되면 학습 속도가 빨라지게 되고,

작아지면 학습 속도가 느려지는 결과를 얻는다.

 

우리가 어떤 일을 할 때 빨리하면 투자하는 시간은 줄어들지만 완성도가 낮아질 수 있다.

또 너무 느리게하면 꼼꼼하게 하여 완성도를 높일 수 있겠지만 투자하는 시간은 매우 늘어날 것이다.

학습 모델도 마찬가지이다.

 

 

학습 속도가 너무 빠르면 우리가 원하는 cost의 최솟값을 지나치고 

다시 증가하는 현상이 일어날 수 있다.

이럴 때는 learning rate이 너무 큰 것은 아닌지 의심해야하며 

이런 현상을 overshooting 이라고 부른다.

 

 

 

 

학습 속도가 너무 느리면 cost의 최솟값을 찾는데 오랜 시간이 걸릴 것이다.

혹은 최저점이 아님에도 local minimum에서 바로 stop하거나 

cost 값이 거의 변하지 않는 현상이 일어날 수도 있다.

 

 

Learning rate를 구하는데는 정해진 답이 없다.

우리가 가진 데이터와 모델에 따라서 변하기 때문이다.

보통 0.01 정도에서 시작해보고, 여러 번의 시행착오로 찾아내는 것이 일반적이라고 한다.

 

 

 

2. Normalization(Preprocessing 과)

다음으로 살펴볼 개념은 normalization이다.

 

위의 예시와 같이 주어진 데이터 값들의 차이가 매우 크다면 문제가 생길 수 있다.

그 이유는 gradient descent 를 언제 사용하는지를 생각해보면 쉽게 알 수 있다.

 

경사하강법을 배우며 우리는 convex function이라는 개념을 배웠다.

이것은 어떤 지점에서 출발하더라도 같은 최소 지점에 도달하는 경우를 의미했다.

 

만약 데이터 간의 차이가 크다면 최소 지점을 찾아가지도 못할 뿐더러 

우리가 선택하는 점에 따라서 도착하는 지점도 달라질 것이다.

 

따라서 데이터 값들을 표준화 해주는 과정이 필요하다.

 

cs231n의 강의 ppt 중 일부

 

가장 많이 쓰이는 preprocessing방법으로는 

데이터 전체를 평행이동해서 원점을 중심으로 하도록 만들어주는 방법이 있고, 

범위를 설정하여 그 범위 안에 값들이 존재하도록 normalize 시켜주는 방법이 있다.

 

 

여러 normalization 방법들이 있지만 가장 간단한 방법이 위에 나와있듯이, 

평균과 표준편차를 이용한 standardization 방법이다.

 

 

 

3. Overfitting

머신러닝을 사이킷런으로 공부할 때부터 많이 들었던 개념이었다.

과대 학습(?) 정도로 해석해 볼 수 있을 것 같다.

 

train data는 학습이 목표이지 그 데이터로 테스트를 하거나 실제로 사용하지 않는다.

즉 어느정도의 학습은 필요하지만 너무 train data만 따라간다면 제대로된 모델이 될 수 없을 것이다.

 

 

위의 예시에서 model 1은 다른 데이터가 들어오더라도 대다수는 정확하게 예측할 확률이 높아보인다.

하지만 model 2는 과하게 학습이 되어있기 때문에 train data와 다른 데이터가 들어온다면 

오히려 그 정확도는 떨어질 수 있다.

 

 

 

머신러닝, 딥러닝 모델에서는 이 overfitting이 굉장히 치명적이고 충분히 발생할 수 있는 문제이기 때문에 

이 문제를 방지하거나 최소한으로 만들어 줄 필요성이 있다.

 

1. 더 많은 학습 데이터를 이용한다

학습 데이터를 늘림으로써 기존 데이터의 지배성을 낮추는 방식이다.

 

2. feature의 수를 줄인다

예측해야하는 카테고리를 줄임으로써(중복되는 데이) 학습이 세분화 되는 것을 막는 것이다.

 

3. Regularization

구부리지 말고 펴자!ㅁ

 

 

'구부린다'라는 말이 이상해 보일지도 모른다.

이것은 overfitting의 예시에서 과하게 학습시킨 결과를 생각해보면 된다.

너무 자세히 학습하다보면 그 경계면은 저절로 구불구불해진다.

또한 그 과정에서 W의 값이 커지게 된다.

 

이것을 '펴자' 라는 의미는 train data에 대한 과한 학습을 

하지 말자는 의미와 같게 된다.

 

그렇다면 어떻게 Regularization을 진행할까?

 

 

Overfitting이 진행되면 Weight의 값이 커진다고 하였다.

따라서 weight 값을 줄임으로써 Regularization을 진행할 수 있다.

 

위의 공식이 의미하는 바는 기존의 cost 값에다가 

상수 * (가중치 제곱의 총합) 을 더하는 과정이다.

여기서 상수는 regularization strength를 의미하며 regularization의 정도를 의미한다.

 

cost에 값을 더해놓으면 cost의 최솟값을 찾을 때 자동적으로 weight이 큰 값은 지양하게 될 것이다.

overfitting을 방지하려는 우리의 목적을 이룰 수 있는 것이다.

 

 

반응형