본문 바로가기

Deep Learning

ML의 실용과 몇가지 팁

1) Learning rate 조절 방법

지금까지 Gradient descent를 구현할 때 alpha 값을 임의로 설정하였다.

그러나 alpha 값이 매우 크면, overshooting하는 문제가 발생할 수 있다. (cost 값이 발산하는 현상)

반대로 alpha 값이 매우 작으면 최소값을 찾기까지 너무 오래 걸리는 문제가 발생한다.

데이터마다 다르므로 정답은 없지만, 0.01을 기준으로 cost function의 값을 관찰하면서 변경시키는 것이 적합하다.

 

2) data 선처리 방법

Data를 선처리해야하는 몇몇 경우가 존재한다.

x1 x2 y
1 9000 A
2 -5000 A
4 -2000 B
6 8000 B
9 9000 C

위 데이터처럼 데이터의 차이가 너무 크게 날 때 학습이 되지 않고 cost 함수 값이 늘어나는 경우가 있다.

이러한 경우에는 zero-centered data, normalized data 등 기법을 사용하여 데이터를 선처리하면 학습 효과가 더 좋아지는 경향이 있다.

 

위는 zero-centered / normalized 처리를 거친 데이터의 분산 형태를 나타내는 그래프이다.

이는 간단한 함수를 통해 구현할 수 있다. x = (x - 평균 / 분산) 으로 정제시키는 방법이다.

파이썬 코드로는 위와 같이 짧은 한 줄로 구현할 수 있다.

 

3) overfitting 방지 방법

학습 데이터에 너무 딱 맞는 모델을 만들었을 경우 실제 테스트 데이터와 잘 맞지 않을 수 있다.

이것을 줄이는 방법은 3가지가 있다.

 

- training data를 많이 가지는 것

- feature의 중복 개수를 줄이는 것

- Regularization(일반화)시키는 것

: Cost 함수에서 weight를 줄임으로써 가능하다.

 

 

위와 같은 식에서 regularization strength라고 하는 상수값을 조절함으로써 가능하다.

python 한 줄의 코드로 구현할 수 있다.

 

4) Traning/Testing Data Set

데이터를 training, test 부분으로 나누어서 training data만 학습에 이용하고, test data들을 실제값 y로 사용하는 방법이다.

예를 들면 위 사진처럼 구분지을 수 있다.

 

원래 데이터가 training, testing 으로 구분지어 있을 때,

training set을 임의로 training, validation set으로 나누어 사용할 수 있다.

실제 학습으로는 training set을 사용하고, 시험 전 모의고사를 보는 것처럼 validation set을 사용하여 튜닝하는 과정을 거친다.

그 후 튜닝이 적절하게 이루어졌다고 판단될 때 실제 testing set을 사용할 수 있다.

 

5) Accuracy 예측

y와 y^hat 비교하여 %로 추출할 수 있다.