MG
[ML / Andrew Ng] Regularization - Solving the Problem of Overfitting 본문
[ML / Andrew Ng] Regularization - Solving the Problem of Overfitting
MG# 2022. 5. 6. 05:15이번 강의에서는 머신러닝 학습중 공통된 문제인 Overfitting과 그 해결책인 Regularization을 알아보도록 하겠습니다. 위 그림을 보면 왼쪽에서 오른쪽으로 갈수록 h함수가 더 복잡해지고 변수가 많아지는 것을 확인할 수 있습니다. 이는 feature의 개수에 따라 달라지고 그에 맞춰 parameter의 개수도 늘어납니다.
왼쪽 그래프는 변수가 너무 적어 h함수가 결과를 잘 예측하지 못하고 있음을 확인할 수 있습니다. 이를 Underfit, High biased 라고 합니다. 중간 그래프는 적당히 변수가 있어 h함수가 데이터를 적절히 예측하고 있어 성공적인 h함수라고 할 수 있습니다. 반면 오른쪽 그래프는 변수가 많아 훈련 데이터에만 너무 잘 맞고 그 외 구간에서는 우리의 직관과 맞지 않는, 일반적인 상황과 맞지 않아 보입니다. 이런 상황을 Overfit, High variance 라고 합니다.
Overfitting 문제는 Linear Regression에서만 생기는 것이 아니라 Logistic Regression에서도 발생합니다. 아까의 상황과 유사하게 왼쪽 그래프는 Underfit이 된 상황, 오른쪽 그래프는 Overfit이 된 상황이 보입니다. 많은 데이터를 예측하면 좋겠지만 변수가 너무 많아지면 오히려 예외인 데이터까지 처리를 하느라 일반적인 상황에서 못 쓰는 h함수가 만들어지게 됩니다.
Overfitting의 해결책으로 첫번째 변수의 개수를 줄이는 것입니다. 변수가 많아 훈련 데이터셋에 너무 맞춰지면 그 변수를 줄이면 된다는 것입니다. 그렇게 되면 비교적 fit이 덜 될 것이고 Overfitting 문제를 피할 수 있습니다. 이에 대한 알고리즘은 후에 더 배울 예정입니다. 두번째는 오늘 배울 Regularizaiton입니다. 변수의 개수를 줄이지 않고 theta의 크기, 값을 줄임으로써 fit 자체를 억제하는 방법입니다.
Regularization을 배우기 앞서 직관적으로 Overfitting 문제를 해결하려면 어떻게 해야 할까요? 정답은 크기가 큰 변수, 여기서는 차수가 높은 변수를 억제하는 것입니다. J 함수 뒤에 theta 3, 4에 상수를 곱하여 더하면 이 값을 줄이기 위해 반복을 할수록 theta 3, 4 값이 줄 것이고 결국엔 왼쪽 그래프처럼 모양이 점차 바뀌게 될 것입니다. 이를 간단하게 알아보려면 theta 3, 4를 0으로 보내면 왼쪽 그래프와 같아지는 것을 확인할 수 있습니다.
바로 이 직관을 함수화 시킨것이 Regularization인데 아래 부분에 Regularization parameter인 lambda와 theta의 제곱을 곱해준 뒤 더합니다. 이렇게 되면 위에서 본 예시처럼 해당 theta가 계속 억제되고 값이 줄어들게 됩니다. 그렇게 되면 h함수가 비교적 단순해지고 Overfitting의 가능성이 반복하면 할수록 줄어들게 됩니다. 그렇기에 갱신을 하지 않는 theta 0를 놔두고 나머지 theta값들을 추가로 더 작업해 줍니다.
만약 여기서 lambda 값을 너무 크게 잡아버리면 어떻게 될까요? 대강 예상이 가듯 theta 0 를 제외한 나머지 theta값이 다 억제되어 거의 0에 수렴하게될 것이고 그러면 결국 Underfit이 된 h함수만 남게될 것입니다. 그렇게 되면 결국 예측이 힘들어지고 유용한 h함수를 찾지 못하게 됩니다. 그렇기에 너무 작지도 너무 크지도 않은 적당한 lambda 값을 잡아주는게 좋습니다.
다음은 실제로 Linear Regression에 적용해 보겠습니다. 위 그림은 Regularized Linear Regression 의 일부로 Gradient descent 의 theta 모습입니다. 이전과 다른 점을 보면 뒤에 lambda 항이 더 붙은 것을 확인할 수 있습니다. 이를 앞의 theta와 묶어보면 상수항만이 남게 되고 이는 값이 매우 작아 0.99... 등의 값으로 나타나게 됩니다. 그렇다면 너무 작아 theta에 영향이 가지 않을거라 생각할 수도 있지만 반복횟수가 적어도 100번 이상씩은 하기에 theta에 유의미한 변화를 가져올 수 있습니다.
Gradient descent를 사용하지 않고 Normal equation을 사용할 때에도 이를 적용할 수 있습니다. 맨 왼쪽 위는 0이고 대각선만 1, 그리고 나머지는 모두 0 인 (n + 1) x (n + 1) 행렬을 lambda와 곱해주고 더하면 완성입니다. 또한 Regularization은 data 갯수인 m의 값이 feature n값이 더 클 때 Non-Invertibility 문제를 해결하는 데에 도움이 된다고 합니다.
Logistic Regression에서 Gradient descent할 때도 마찬가지로 theta를 위의 식대로 갱신해줍니다. 여기서 h함수만 sigmoid function으로 사용해주면 Linear Regression과 유사하게 Regularization이 가능합니다. Regularization은 갱신 과정에서 theta에 간단한 상수항 하나만 빼줬을 뿐인데 훈련 데이터셋에서만 정확도가 높은 Overfitting 문제를 해결할 수 있게 도와주는 유용한 방법입니다.
'컴퓨터과학 > AI_ML강의 (Andrew Ng)' 카테고리의 다른 글
[ML / Andrew Ng] Neural Networks - Model Representation (0) | 2022.05.10 |
---|---|
[ML / Andrew Ng] Neural Networks - Motivations (0) | 2022.05.09 |
[ML / Andrew Ng] Logistic Regression - Multiclass Classification (0) | 2022.05.06 |
[ML / Andrew Ng] Logistic Regression - Logistic Regression Model (0) | 2022.05.05 |
[ML / Andrew Ng] Logistic Regression - Classification and Representation (0) | 2022.05.05 |