본문 바로가기
입문자를 위한 AI 개론

Overfitting과 Underfitting

by Tae_bbang 2021. 7. 20.

안녕하세요 여러분~

 

기계 학습(Machine Learning; ML)은 실생활(real-world)의 어려운 문제들을 많이 해결했습니다. 각각의 문제들의 해결법들은 서로 다릅니다. 다양한 종류의 기술들이 있으며, 이것들을 하나하나 이해하는 것은 많은 노력이 요구되며, 어렵습니다. 하지만, 공통적인 특징이 있습니다.

바로, 대부분의 기계 학습은 가지고 있는 데이터(data)를 기반으로 학습한다는 것입니다. 이것을 data-driven 학습이라고 부릅니다.

https://www.google.com/search?q=data-driven&sxsrf=ALeKk01cYv_CXnjilYulGN3QC5y5Gg8ewA:1625412176421&source=lnms&tbm=isch&sa=X&ved=2ahUKEwjJg46b3MnxAhXYyYsBHSCzCggQ_AUoAXoECAEQAw&biw=1920&bih=887#:~:text=Mickeel Pramono - Medium,Mickeel Pramono Medium

 

Data-Driven 알고리즘

Data-Driven 알고리즘 이전에는, 개발자 및 연구자들은 직접 하드코딩을 통해 분류해왔습니다. '고양이 사진 분류문제'를 예로 들어서 설명하겠습니다.

더보기

1. 고양이의 특징을 나열한다. (귀-2개, 눈-개, 코-얼굴의 가운데 등)

2. 나열한 특징을 기반으로 사진의 Edge를 계산하는 함수를 만든다.

3. 만들어둔 함수로 Edge를 얻고, 고양이를 분류한다.

이런 분류법은 많은 오류를 야기할 수 있습니다. 어쩌면, 열거한 고양이의 특징이 틀린 경우가 있을 수 있으며, 비슷한 특징을 가진 객체(예: 강아지)도 고양이로 인식할 수 있습니다. 이런 문제를 기계 학습의 한 종류인 인공신경망(Artificial Neural Network)은 해결합니다. 인공신경망을 사용하면, 특징을 특정할 필요 없이 신경망이 스스로 데이터 속에서 특징을 스스로 배우고 고양이를 분류합니다. 특히, 더욱 더 많은 데이터를 보고 배울수록, 고양이의 특징을 더 강건하게(robust) 학습합니다. 이미지 분류에서 인공신경망의 자세한 원리는 이전 글을 참고해주세요~

 

Data-Driven 알고리즘의 문제점: Overfitting과 Underfitting

Data-Driven 알고리즘이라고 해서 만능은 아닙니다. 우리가 가지고 있는 데이터가 한정적이다보니, 가지고 있는 데이터만으로 학습해야하다보니 부정확해질수도 있습니다. 이것의 해석은 모델 복잡도(model complexity)을 통해 이뤄집니다.

https://brunch.co.kr/@gimmesilver/44

가지고 있는 데이터와 알고리즘이 학습할 수 있는 모델 복잡도를 비교하는 것입니다. 위의 그림을 참고하면 됩니다. 먼저, 학습할 수 있는 모델이 단순한 경우입니다. 왼쪽 위의 그림에서 빨간선이 모델이며, 왼쪽 아래의 그림의 파란선이 모델입니다. 데이터에 비해 모델이 단순하여서 모든 데이터를 명확하게 구분해내지 못합니다. 이것을 Under-fitting이라고 부릅니다. 반대는 오른쪽 위와 아래의 그림들입니다. 학습하는 모델이 굉장히 구불구불한 선으로 학습한 경우입니다. 이런 경우 학습하는 데이터를 거의 외워서(memorization) 명확하게 구분해냅니다. 반면, 위의 학습데이터가 아닌 새로운 데이터가 테스트(test)로 들어오면, 잘 동작하지 못합니다. 그래서 모델의 복잡도 측면에서 가지고 있는 데이터에 맞는 적당한 것을 골라야합니다.

 

https://22-22.tistory.com/35

위의 그림은 Error와 Model Complexity의 그래프를 나타냅니다. Model Complexity가 낮을 때는, 학습 데이터를 잘 학습하지 못해 train과 test 데이터 모두에 대해 에러가 높습니다. Under-fitting 상태입니다. 하지만, 이것은 적당히 모델 복잡도를 높이면 탈출가능하고 Test sample에 대한 에러를 최소화할 수 있습니다. 하지만, 지나치게 모델 복잡도를 높히면 training sample을 외워버려서 오히려 test sample에 대한 에러가 커지게 됩니다. 이것을 Over-fitting이라고 부릅니다.

 

Model Complexity의 정의와 해결책

Model complexity는 모델이 더 복잡한 형상을 나타낼 수 있는 정도를 말합니다. 인공신경망에서는 일반적으로 layer를 더 쌓거나, layer 속의 node의 개수를 늘리면서 조절합니다. 사실 이것이 발생하는 이유는 error 측면에서 다룰 수도 있습니다.

더보기

- True Risk: 이상적으로 가져올 수 있는 모든 데이터에 대해 계산한 error, loss. 앞으로 어떤 데이터가 들어올지 모르므로, 실제로 줄여야 하는 것은 True Risk입니다. - Empirical Risk: 이상적으로 가져올 수 있는 데이터 중 일부 데이터만 가지고 계산한 error, loss. 모든 데이터를 가져올 수는 없기 때문에 구할 수 없는 True Risk 대신, Empirical Risk를 계산합니다. 출처: https://22-22.tistory.com/35

Train data를 학습하는 것은 사실 Empirical Risk를 줄이는 것입니다. 때문에, 과도하게 모델 복잡도를 높이는 것은 True Risk를 오히려 높이는 것을 야기할 수도 있는 것입니다.

 

이것에 대한 해결책은 몇 가지로 요약됩니다.

  • 학습 데이터 늘리기 (data augmentation)
  • 정규화 (regularization)
  • 모델 복잡도 낮추기.

학습 데이터를 늘리는 것과 정규화 방법은 모델 복잡도를 단순히 낮추는 것만큼 굉장히 효과적입니다. 다음 글에서 각각의 방법들에 대해 자세히 다루겠습니다.