Advice for applying machine learning
아래 내용은 Andrew Ng 교수님의 강의와 자료를 기반으로 학습한 내용을 정리하여 작성하였습니다.
개인의 학습 내용이기에 잘못 해석 및 이해하고 있는 부분도 있을 수 있으니, 다양한 자료를 기반으로 참고하시는 걸 추천드립니다.
Linear regression과 Logistic regression, 그리고 Neural network 까지 알아보았습니다. Linear, Non-linear한 hypothesis model을 정의하고 학습하는 과정들을 설명하였는데요, 이번엔 추가적으로 Machine learning을 위한 여러가지 팁(?)에 대해 한번 정리해 보도록 합시다.
Deciding what to try next
자, 여러분들이 Learning model을 선정하고 cost function을 구하고 최소화 하는 과정을 통해 hypothesis model을 학습시켰습니다. 그 모델을 학습을 시켰을 때 나타나는 여러 문제점들에 대해서 어떻게 우리가 대응해야 할지! 알아봅시다.
아래는 Linear regression의 정규화를 표현한 수식입니다.
여러분들이 여러분들의 Hypothesis model을 테스트 하였을 때, 받아들이기 어려울 정도의 큰 오류가 발생한다고 가정해 봅시다. 이 때, 여러분들이 할 수 있는 것은 무엇이 있을까요? 지금까지 학습한 내용 중 몇가지 들이 있습니다. 아래 나열된 것들 중 몇개를 선택해서 시도해 볼 수 있을까요?
어떤 것들은 오차를 줄이는데 굉장히 큰 도움을 줄 수도 있지만 그렇지 않은 항목들도 있을 것입니다. 각 항목들이 Hypothesis model에 어떤 영향을 끼치며 왜 그렇게 되는지 찬찬히 정리해봅시다!
Evaluating hypothesis
Hypothesis를 평가함으로서 성능을 향상 시키는 방법에 대해 알아봅시다. 만약 아래의 그래프와 같이 집의 크기에 따른 값을 예측하는 모델은 입력 feature가 1개이고, 출력 feature도 1개이기에 쉽게 그래프로 표현이 가능합니다. 여기서는 4차 다항함수로 hypothesis model을 표현했습니다. 그럼 오른쪽에 리스트한 입력 feature를 사용한다고 하면.. 여러분들은 쉽게 그래프화하고 평가할 수 있나요?
입력 feature가 많아지면 그래프화가 굉장히 어렵다는 걸 여러분도 알고 계실겁니다. 왼쪽에 그래프로는 Hypothesis model이 Overfitting 을 쉽게 확인할 수 있습니다. 그럼 오른쪽의 많은 feature들을 이용한 hypothesis model은 Overfitting인지 Underfitting인지 어떻게 확인할까요? 여러분들이 학습을 하기 위해 사용하는 Data를 이용해서 Hypothesis model을 평가할 수 있습니다.
Size와 Price만을 이용해도 평가를 위해서 모든 data를 training set으로 사용하지 않습니다. 전체 Data 중 70%는 Training set으로 나머지 30%는 Test set으로 나눠서 사용합니다. 이렇게 나눠진 data 중 training set을 이용해 학습된 hypothesis model을 test set을 이용해서 평가합니다. test set으로 cost function을 계산하는 것으로 이 Training data가 Overfitting 되어있는지 평가합니다. cost function은 각 learning algorithm마다 다른 방법이 되겠죠.
Model selection and training / validation / test sets
그래프를 보면 Overfitting되었음을 쉽게 확인할 수 있습니다. Training set을 이용해 학습된 theta값들이 적용된 hypothesis model이 있습니다. 이 모델의 Training error가 일반적인 data들의 error보다 현저히 낮을 때 Overfitting되었다고 판단할 수 있습니다. 즉, 모델이 일반화 되지 못하고 Training data만을 잘 표현하도록 된 것이죠.
여러분들이 Model을 선정하는 과정에서 degree of polynomial을 어떻게 결정해야 할까요? 만약 아래 hypothesis model 중 d = 6 인 경우에 J(test)가 가장 낮다면 d = 6인 모델이 좋은 것인가요? 그럼 training set, test set이 아닌 일반적인 data set에 대해서도 좋은 결과를 얻을 수 있나요? 한번 생각해 볼 필요가 있을 것 같습니다.
J(test)가 가장 낮은 model은 test set에 Overfitting되었다고 판단해도 될 것 같습니다. 그렇지 않나요? 그럼 가장 좋은 d를 선택하기 위해서는 어떻게 해야 할까요.
위의 문제를 해결하기 위한 방법으로 Data set을 3가지로 나누는 방법을 사용합니다. 기존의 Training, Test set으로 나뉘는 방법 대신 Cross validation set까지 포함하여 data set을 나누는 겁니다. Training 60%, Cross validation 20%, Test 20%로 보통 나눠서 사용합니다. 그럼 Cross validation set의 역할은 무엇일까요?
바로 위에서 선택하지 못한 d를 선택하기 위함입니다. Training set으로 학습된 Hypothesis model에 대해서 cost function을 구하여 가장 최소인 d를 구하기 위해 사용하는 것이 cross validation set입니다. 그리고 가장 마지막에 일반화 확인을 위해 test set이 사용됩니다. 조금 이해가 되시나요? Training set으로는 가장 좋은 theta값들을 구하게 되고, 각 고차함수들에 대한 모델을 구합니다. 그 중 어떤 차수의 함수를 선정하느냐를 Cross validation set을 이용하죠. 이제 좀 이해가 되시나요? 만약 안되는 부분이 있다면 댓글로 남겨주세요!.
Diagnosing bias vs variance
d에 따라 underfit되거나 overfit 될 수 있는 내용의 그래프를 정리해보면 아래와 같습니다. 자주 예제로 사용되었던 집 크기에 따른 가격의 그래프입니다. 많은 경우에 우리는 High bias 또는 High variance의 문제를 겪을 수 있습니다.
그럼 이 문제를 해결하기 위해 위에서 설명한 Cross validation set을 적용해 봅시다. 각 Cost function의 수식은 아래와 같습니다. 자, x축은 degree of polynomial, y축은 error인 그래프에 Training set과, Cross validation set에 대해서 표현해봅시다. 각 Set에 대해 표현 시 Cross validation err가 Training err를 d가 증가할수록 유사한 형태를 띄다가 반대로 증가하는 곳이 나타나는게 보이시나요?
만약 여러분의 learning algorithm이 원하는 성능이 나오지 않는다면 High bias 문제인지 High variance 문제인지 판단할 수 있어야 합니다. 각 문제에 대해서 해결하는 방법도 다를테닌까요.
만약 Training의 error도 크고 Cross validation의 error가 Training과 유사하다면 High bias(Underfit) 문제이며, Training의 error는 적지만, Cross validation의 error가 Training에 비해 매우 크다면 High variance(Overfit) 문제입니다. 위 방법으로 각 문제를 판단하실 수 있다는 것 기억해 두세요!
Regularization and bias/variance
각 문제를 판단하는 방법을 알아보았습니다. 그렇다면 이제 해당 문제를 어떻게 해결해야 할 지 알아보시죠. High bias 또는 High variance 문제에 대해 어떻게 대처할 수 있는지, 좋은 성능을 보여주는 모델이 될 수 있을지 함께 보시죠.
예전에 Overfitting 문제를 해결하기 위해 Regularization을 다룬적이 있습니다. 기억나시나요? 각 차항에 대해 theta의 영향이 다르게 적용되므로 cost function을 이용하여 정규화 했던 과정이였습니다.
일반적으로 Error는 아래와 같이 정리 할 수 있습니다.
Generalization Error = Bias Error + Variance Error + Noise
Bias Error는 Model이 표현력이 낮아 underfitting 되서 발생하는 Error이며, Variance Error는 Model이 표현력이 좋아 fitting 하지 않아도 될 부분까지 fitting되어버린 즉 Overfitting으로 인한 Error입니다. Noise는 저희가 Parameter나 다른 방법으로 감소시키기 어려운 외부적인 Error들이라고 이해 하시면 될 것 같습니다.
위 그래프는 High bias에 대한 Error 그래프입니다. 보시면 Test error와 Training error의 gap이 매주 작습니다. 하지만 Desired performance, 저희가 원하는 Error보단 큰 것을 보일 수 있습니다. 이런 경우는 underfitting일 가능성이 매우 높으며, 학습 feature나 데이터 size를 증가시켜도 문제를 해결하기 어렵습니다.
위 그래프는 High variance에 대한 Error 그래프입니다. Test error와 Training error와의 Gap이 상당히 큼을 알 수 있습니다. 그리고 Training error가 Desired performance보다 낮지만, Test error는 훨씬 크죠, 즉 Overfitting되었음을 파악할 수 있습니다. 이럴때 data를 추가하면 성능 개선이 가능할까요? 한번 생각해보시기 바랍니다 :-)
위에서 살펴본 내용을 토대로 정리를 해보겠습니다.
만약 학습시킨 모델이 High variance라면 Training data를 추가하거나 feature의 수를 줄이거나 lambda를 증가시켜 model 고차식의 영향력을 줄임으로써 High variance를 문제를 해결할 수 있습니다.
반대로 High bias 문제에 대해서는 추가적인 feature들이 필요하며 고차항의 feature와 lambda를 감소시킴으로써 해결할 수 있습니다.
왜 이러한 방법들이 각 문제를 해결할 수 있는지는 위에서 계속 설명했었습니다. 조금 정리가 되시나요? 처음엔 어려우 실 수 있지만 조금씩 살펴보신다면 충분히 이해하실 수 있을거라 믿습니다!
그럼 다음시간에는 Spam 분류와 Error 분석 등에 대해 살펴보겠습니다.
긴 글 읽어주셔서 감사합니다.
'AI > Machine Learning' 카테고리의 다른 글
[Agent] BDI Architect(Belief - Desire - Intention Architect) (0) | 2018.10.28 |
---|---|
Building a spam classifier (0) | 2018.03.18 |
Neural Networks - Cost function / Back propagation (0) | 2018.02.05 |
Neural Networks - Model representation example (0) | 2018.02.05 |
Neural Networks - Model representation (0) | 2018.01.30 |