이번 포스트에서는 머신러닝 알고리즘을 실제로 사용하는데 있어서, 몇가지 팁을 알려드리겠습니다.
크게 러닝 레이트를 조정하는 방법과 전처리 방법 그리고 오버피팅을 방지하는 방법에 대해서 이야기하겠습니다.
우리가 cost function을 정의하고 그 cost function을 최소화하는 것에 Gradient descent 알고리즘을 사용해왔습니다.
Gradient descent 알고리즘에서 우리는 Learning rate를 지정해주게 되는데요,
이 때 Learning rate를 잘 정하는 것이 중요합니다.
Learning rate란 그래프를 내려가는 것의 step과 같습니다.
만약 step이 너무 크다면, 그래프 바깥으로 나가버리거나, 계속 주위를 맴돌게 되는 상황이 만들어질 수도 있습니다.
이것을 overshooting이라고 부릅니다.
학습 과정에서 cost가 발산하게 된다면 overshooting을 의심해봐야 합니다.
그렇다면 step이 너무 작다면 어떻게 될까요?
우선 cost를 최소화 시키는 것에 많은 시간이 걸립니다. 또한 Local min에 멈추게 되는 상황도 발생합니다.
그러나 불행히도 learning rate를 최적화시키는 방법은 존재하지 않습니다.
처음 0.01로 시작해서 여러 learning rate를 적용시켜 관찰해보아야합니다.
학습을 시키기 전에 데이터를 전처리할 필요가 있습니다.
우리가 사용하는 Gradient descent 알고리즘을 사용한다면,
각 속성의 크기에 따라 learning rate가 적절함에도 발산하는 경우가 발생합니다.
이를 해결하기 위해서는 zero-centered data를 쓰거나 normalized data를 사용합니다.
zero-centered data는 데이터 분포의 중심이 원점으로 옮겨진 데이터이고,
normalized data는
(standardization)
이라는 방법을 통해서 만들 수 있습니다.
normalize 방법에는 다양한 방법이 있지만, 대표적으로 위의 standardization이 있습니다.
Overfitting이라는 것은 학습을 통해서 머신러닝을 진행하다보니, 학습 데이터에 너무 잘 맞는 모델을 만들어내는 상황을 말합니다.
즉 기존의 학습 데이터에 너무나 잘 맞게 학습이 된 바람에, 새로운 데이터에 대한 예측이 잘 되지 않는 현상을 말합니다.
오버피팅을 해결하는 방법은
더 많은 학습 데이터를 사용하거나
속성의 수를 줄이거나
일반화를 시켜야합니다.
일반화 시킨다는 이야기는 weight에 너무 큰 숫자를 주지 않는 것입니다.
방법으로는 Loss function에
를 더해줍니다.
여기서 람다는 regularization strength라고 하고,
이 값에 따라 일반화의 정도가 정해집니다.
보통 우리가 학습을 시키는 데이터를 training set이라고 합니다.
이 training set을 가지고 모델을 학습시킨 다음에 다시 이 training set으로 검증을 하게된다면 공정하지 못합니다.
그래서 좋은 방법은
보통 70%의 데이터를 training을 위해, 나머지를 test를 위해 데이터를 구분합니다.
이 training set만을 사용해서 모델을 학습시키고, test set을 입력해서 성능을 확인합니다.
그렇다면 데이터를 학습시키는 과정에서 learning rate와 regularization strength의 튜닝을 어떻게 진행해야할까요?
튜닝을 진행하기 위해 우리는 training set을 또 training set과 validation set으로 나눕니다.
그래서 training set으로 학습을 시키면서 validation set으로 위의 값들을 튜닝합니다.
'AI > Lecture notes' 카테고리의 다른 글
강의 노트: 입문 - 자연어처리 시작하기 (0) | 2023.07.06 |
---|---|
[ML lec 08] Deep Neural Nets for Everyone (0) | 2017.07.27 |
[ML lec 06] Softmax Regression (0) | 2017.07.21 |
[ML lec 05] Logistic Classification (0) | 2017.07.19 |
[ML lec 04] multi-variable linear regression (*new) (0) | 2017.07.17 |