Machine Leaning - Overfitting
지난 시간에 Linear Model의 Regression과 Classification을 배우고 Gradient Descent에 대해 배웠다.
그러면 배운 걸 바탕으로 딥러닝, 머신러닝에 바로 활용하면 참 좋은데.. 그냥 가져다 쓰면 여러 가지 문제점이 생긴다.
1. Overfitting
(해결책). Regularization
Overfitting. 무언가 굉장히 타이트하게 맞는다는거다. 어느 특정한 데이터에 대해서 딱 들어맞고, variation이 조금이라도 있으면 원하는 값을 얻을 수 없는 문제이다. 딥러닝을 할 때 발생하는 대표적인 문제인데, 이 문제를 해결하기 위해 Regularization을 활용한다.
ML과 DL의 학습 과정을 살펴보자. (DL은 ML과 세부적인 부분에서는 다르지만, 전체적으로는 비슷하다)
전제조건 : 전체 데이터의 70%정도는 학습 단계에서, 30%정도는 평가 단계에서 나누어 사용한다. 학습 데이터는 학습에만 사용하고, 절대로 Testing에 사용하지 않는다.
1) 학습 단계
학습 데이터, 정답 레이블, 입력 활용.
Gradient descent를 활용해 Loss Function이 원하는 값으로 줄어들 때 까지 반복해서 모델 학습. (W와b구하기)
(DL 에서는 Gradient descent 대신 backpropagation을 활용해서 문제를 해결하는데 이건 다음 시간에 알아보자.)
2) 평가 단계
학습이 완료된 모델에 대해 평가데이터 (입력, 정답레이블)를 이용해 평가한다.
모델의 출력과 정답레이블을 비교해 모델의 성능을 평가한다.
본격적으로 시작하기 앞서 용어 정리를 먼저 하고 가자.
이 분야가 최근 10년간 가파르게 발전한 분야라서, 수학적 용어가 제대로 정립되지 않았다.
W를 θ로, Loss/cost 를 J로 표현하자.
부동산 가격을 예측하는 문제를 생각해보자.
부동산의 크기에 대해서 여러 가지 모델을 만들고 가격을 예측할 수 있다.
사실 부동산 가격에 영향을 주는 요소는 지하철, 학습 분위기 등 여러 가지 요인이 있다.
일단, 한 가지 모델을 선택하고 Gradient Descent를 통해 Prediction을 진행하자.
하지만, 백날 천날 해도 Prediction에 진전이 없다.
가지고 있는 모델의 한계점 때문인데, 첫 번째 모델처럼 선형 모델로 예측을 진행하지만, 사실 이 문제는 선형으로 표현될 수 없는 아주아주 복잡한 문제이다.
즉, 내가 가진 모델의 complexity가 해결할 문제인 비선형구조를 fitting할 수 없어서 생기는 문제이다.
이 문제를 underfit이라고 하고, bias가 끼었다는 표현을 쓴다. (bias는 한계를 의미함.)
아 그러면 모델의 complexity가 높아지면 괜찮지 않을까? 라고 생각할 수 있다.
세 번째 모델인 4차곡선을 생각해보자.
학습은 기본적으로 loss function을 줄이기 위해서 Gradient Descent를 진행한다.
해당 모델은 상수까지 해서 5개의 미지수가 존재하는데, 이 때 우리는 완벽하게 fitting을 진행할 수 있다.
완벽하게 fitting을 진행하는게 좋을까? 이 모델을 통해서 부동산 가격을 예측해보자.
세 번째 모델을 보면, 집 사이즈가 늘어나는데 가격은 또 떨어지는 경우가 있다.
즉, 전혀 예측할 수 없다.
이 문제를 Overfitting이라고 한다. 학습 데이터만 잘 학습한다는 의미이다. 학습된 데이터에 대해서는 완벽하게 fitting을 진행할 수 있지만, 새로운 데이터에 대한 예측은 전혀 진행할 수 없게 된다.
이 상황을 High varience라고 표현하기도 한다.
Overfitting문제는 Underfit보다 훨씬 더 자주 일어나는 문제이고 더 위험한 문제이며, ML과 DL의 엔지니어들은 Overfit 문제를 해결하려 많은 시간을 쏟았다.
Logistic Function에서도 같은 문제가 발생할 수 있다.
첫 번째 모델에서는 Underfit 문제가 발생하고, 세 번째 모델에서는 Overfit 문제가 발생한다.
Loss를 무조건 줄인다고 문제가 해결되지 않는다.
Overfitting문제처럼, Loss만 줄이다가 오히려 더 큰 문제가 발생하는 문제가 생긴다.
학습 단계에서의 Loss가 평가 단계에서의 Loss보다 작게 나온다.
Underfitting 문제는 Complexity를 끌어올림으로 해결할 수 있지만, (Overfitting 문제로 연결되는지는 확인이 필요하다.)
Overfitting 문제는 쉽게 해결할 수 없다.
초록색 경계선 이후부터 Overfitting 문제가 발생했다.
Overfitting이 발생하기 전까지만 Gradient Descent를 수행하는 방법 등 여러가지 해결방법이 있는데, 이건 다음에 알아보자.
(이전에 배웠던 Decision Tree를 생각해보자. 여기서도 Overfitting문제가 발생한다.)
부동산 가격을 예측하는 문제에서 Overfitting문제가 발생하는 요인은 가격 형성에 미치는 여러 가지 요인이 있기 때문이다.
이런 문제를 Regularization으로 해결할 수 있다.
Regularization
차원이 복잡해질수록 Prediction이 힘들어진다. 그러면 어떻게 Overfitting 문제를 해결할 수 있을까?
일단 먼저 모델을 복잡하게 4차로 설정한다. 그러면 2번째 모델의 파란 곡선처럼 Overfitting문제가 발생한다.
파란 곡선은 Loss Function을 최소화하기 위해 도입됐다.
밑의 Loss Function 공식을 살펴보자.
h(x) 쪽에 4차함수가 들어가고 y(i)에 data point가 들어간다.
여기서 사차함수를 이차함수로 만들어보자.
그 방법으로 삼차와 사차항의 계수를 0 으로 설정할 수 있다.
이걸 Loss Function에 집어넣을 수는 없을까? 계수에 1000(큰 수)을 곱해서 집어넣으면 된다.
그러면 Loss Function 공식에서 계수가 0으로 된다. (그렇지 않으면 Loss가 커진다)
아주 억지스러운 해결방법인 것 같지만, 해결책에 대한 직관을 제공한다.
아 Loss Function에 줄이고 싶은 변수를 추가하면 쓸대없는 변수를 없앨 수 있고 이걸 바탕으로 차원을 줄일 수 있구나~~ 라고 생각하면 된다.
Regularization
위에서 말한 컨셉을 바탕으로 Regularization이 만들어진다.
Loss Function에 λ (Regularization Parameter)와 시그마식으로 표현된 Regularization Term을 곱한 식을 더해준 형태다.
이렇게 식을 변형해도 계산에서는 전혀 문제되지 않는다. 제곱을 더해주기 때문에 미분에도 아무 영향을 미치지 않고, Gradient Descent에도 아무 영향을 미치지 않는다.
λ가 0일 경우에는 파란 곡선이 나타내는 것 처럼 Overfitting이 발생하고 λ가 커지면 쓸대없는 매개변수(Parameter)가 죽으면서 분홍색 곡선처럼 적당히 수렴하게 된다.
λ를 적당하게 튜닝하는것도 중요하다.
λ를 10000000000000처럼 아주 큰 수로 설정하면, 모든 θ들이 0으로 되고, Prediction도 0으로 된다.
아무 의미가 없는 연산이 된다.
'Machine Learning > AI Introduction' 카테고리의 다른 글
Deep Learning (2) (0) | 2021.11.14 |
---|---|
Deep Learning (1) (0) | 2021.11.14 |
Linear Model - Classification (0) | 2021.10.24 |
Machine Learning - Unsupervised Learning (0) | 2021.10.17 |
Machine Learning - Supervised Learning (5) (0) | 2021.10.17 |
댓글
이 글 공유하기
다른 글
-
Deep Learning (2)
Deep Learning (2)
2021.11.14 -
Deep Learning (1)
Deep Learning (1)
2021.11.14 -
Linear Model - Classification
Linear Model - Classification
2021.10.24 -
Machine Learning - Unsupervised Learning
Machine Learning - Unsupervised Learning
2021.10.17