개요
데이터를 학습하는 과정에서 발생하게 되는 overfitting과 underfitting이 무엇인지에 대해 알아보자.
그리고 그 overfitting과 underfitting을 해결할 수 있는 방법은 무엇인지 알아보자.
Overfitting과 underfitting
인공지능 분야에서 가장 골치 아픈 문제라고 봐도 무방하다고 한다.
이 overfitting과 underfitting이라는 문제는 데이터셋을 학습하는 과정에서 발생한다.
우리는 지도학습의 과정으로 훈련 데이터를 기계에게 학습시킨 다음 검증을 하고 테스트를 한다.
이 과정에 있어서 훈련 데이터에 대해 학습을 진행하는 것은 필수적이다.
검증 데이터셋과 테스트 데이터셋에서 사용할 최적의 가중치를 얻을 수 있기 때문이다.
이때, 훈련 데이터에 있어서는 우리의 기계가 예측을 굉장히 잘했는데 테스트 데이터셋에 있어서는
예측 정확도가 터무니 없는 정도로 나온다고 해보자.
이 문제를 overfitting이라고 한다.
아래의 오른쪽 그림과 같은 상황인 것이다.
사진에서 볼 수 있듯이 훈련 데이터에 꼭 맞게 선이 그어져 있는 모습이다.
만약, 저 훈련 데이터들이 있는 곳이 아닌 다른 곳에 데이터가 들어온다면 무조건 틀린 예측을 하고 말 것이다.
overfitting 되면 예상할 수 있듯이 실제 예측에서 너무나도 취약한 모습을 보여준다.
아래는 underfitting의 모습이다.
설명은 하지 않았지만 이제 사진을 보고도 어떤 상황인지 예측할 수 있다.
underfitting의 상황에서는 훈련 데이터에서도 실제 데이터에서도 좋지 못한 정확도를 보여준다.
이러한 문제들을 어떻게 해결하면 좋을까?
Regularization
우선, 빠르게 왜 overfitting 그리고 underfitting의 문제가 발생할 가능성이 높은 상황에 대해 알아보자.
Overfitting이 발생할 가능성이 높은 상황
feature의 개수가 많아서(변수의 개수가 많아서), 자유도가 높아진 상황
Regularization parameter lamda의 값이 너무 작은 상황
Underfitting이 발생할 가능성이 높은 상황
feature의 개수가 적어서(변수의 개수가 적어서), 자유도가 높지 않은 상황
Regularization parameter lamda의 값이 너무 큰 상황
이제 regularization이 뭔지 알아볼 시간이다.
이는 overfitting과 underfitting의 문제를 해결해줄 수 있는 방법이다.
역할은 단순하다.
feature에 있는 parameter(가중치)값을 억누르는 역할을 한다!
수식을 보면 이 말을 이해할 수 있다.
Cost function 뒤에 더해진 식이 바로 regularization term이다.
즉, parameter에 대한 cost값을 제곱 그리고 lamda배만큼 키워주는 역할을 한다.
hyperparameter인 lamda는 우리가 임의로 정하는 것이다.
이를 통해 overfitting, 혹은 underfitting된 모델에 regularization term을 붙인 cost function을 정의해서 적용한다면,
아래와 같이 변할 수 있음을 확인할 수 있다.
변수의 개수가 많아서 자유도가 높은 상황이다.
훈련 데이터에 대한 정확도는 100%이다.
실제 데이터에 대해서는 정확도가 좋지 못하다.
regularization을 통해 식의 차수는 줄이고 최적의 에러값을 얻을 수 있도록 변했다.
실제 데이터든 훈련 데이터든 적당한 에러값을 도출하는 듯 하다.
주의할 점
1. regularization parameter인 lamda의 값을 너무 크게 잡으면
parameter들이 0에 가까워져서 underfitting이 될 가능성이 있다는 것이다.
2. regularization parameter인 lamda의 값을 너무 작게 잡으면
parameter들이 원래 parameter값과 비슷해서 그대로 overfitting이 유지될 가능성이 있다는 것이다.
+ L1, L2 regularization 그리고 Elastic net
이렇게 overfitting과 underfitting의 문제를 해결해줄 수 있는 regularization에는 여러 가지 방법이 있다.
L2 regularization은 위에서 다뤘으니 생략하겠다.
1. L1 regularization
L1 regularization은 아래와 같은 수식을 보인다.
위에서 봤던 것과 큰 차이점은 없고 parameter값에 제곱 대신 절대값을 취해준다.
L2와는 결과에서 차이가 나타난다.
L1은 절대값을 cost값에 더해줌으로써 descent가 되면서 parameter값이 0에 가까워져도 parameter에 가해지는 값이 변하지 않는다.
즉, 어떤 변수를 아예 0으로 만들어버려서 없는 변수로 만들 수가 있다.
이는 불필요한 변수를 학습에서 제외시키는 데에 일조한다.
L2는 parameter의 값이 0에 가까워지면 가까워질 수록 parameter에 가해지는 값이 작아지도록 한다.
즉, 0으로 만들어버리는 것이 아닌 0에 가까워지도록 하며 모든 parameter들이 고른 값을 가질 수 있도록 해준다.
모든 parameter들이 고른 값을 가질 수 있도록 해준다는 것이 L1과의 큰 차이라고 생각한다.
2. Elastic net
elastic net은 L1과 L2를 결합한 regularization이다.
아래와 같은 수식으로 표현할 수 있다.
아래와 같이 parameter들이 수렴한다.
'자연어 처리 과정' 카테고리의 다른 글
AlexNet (0) | 2022.12.18 |
---|---|
Batch normalization (0) | 2022.12.13 |
Softmax function and cross-entropy loss (0) | 2022.11.30 |
Cost function for Logistic regression (1) | 2022.11.30 |
Feature scaling에 대해 (0) | 2022.11.29 |