cleanUrl: /idea/full/overfitting-underfitting
adsense: true
theme: light
pagePassword: false
cherry: false
utterances: 
  repo: ProtossDragoon/ProtossDragoon

그림 (참고1)

Untitled

불쌍한 오버피팅과 언더피팅

머신러닝을 공부한 사람이 한번쯤 들어보는 유명한 용어로 과대적합(overfitting) 과 과소적합(underfitting)(참고1,2) 이 있다. 머신러닝이 할 수 있는 대표적인 작업에는 분류작업이 있다. 많은 사람들이 분류기를 학습시킬 때 위 그림(그림 참고1)에서 초록색 선과 같이 분류기준이 만들어진다면 과대적합이라 좋지 않은 것이라고 가르친다. 검정색 선과 같이 분류기준이 만들어져야 이상적이라고 말한다.

검정색 선을 옹호하는 사람들에게, 실제 데이터가 초록색 선이 나타내는 것처럼 분포할수도 있는 가능성은 왜 배제하는지 물어보고 싶다. 위 그림에서 검정색 경계선이 더 나을 것이라는 확신은 도대체 어디에서 왔을까? 사람은 어떻게 검정색 경계선이 초록색 경계선보다 실제 데이터를 잘 갈라낼 것이라고 확신할 수 있는가. 정말 혹시라도 검정색 경계선이 초록색 경계선보다 더 좋다고 생각이 된다면, 왜 좋다고 생각하게 되었는가?

억지로 트집을 잡는 것이 아니다. 나는 이것이 완전히 인간의 직관의 영역이라는 결론을 내렸다. 인간의 직관은 정말 훌륭한 판단을 내리는 데 도움을 주기도 하지만(참고5), 직관에 의한 판단이 상당히 비이성적일 수 있다는 사실을 부정하는 사람은 없을 것이다. 지금부터 왜 과적합이나 과소적합을 판별하는 것이 직관의 영역이라고 생각하게 되었는지를 설명해 보려고 한다.

오버피팅, 언더피팅이라는 단어

어디 히스토그램에도 한번 써보시죠

그림 (참고4)

이렇게 생긴 그래프를 히스토그램이라고 한다.

이렇게 생긴 그래프를 히스토그램이라고 한다.

import numpy as np
friends_tall = np.random.randn(100)*10 + 160

Untitled

대표적으로 히스토그램의 구간을 어떻게 설정하느냐도 직관에 달렸다. 위 자료가 내 친구들 중 50명을 골라 키를 재어 만든 목록이라고 생각해 보자. 아래 그림은 그 데이터를 히스토그램으로 바꾸어낸 결과물이다. 이중에서 어떤 것이 가장 ‘적절한’ 히스토그램인가?

import matplotlib.pyplot as plt
bin_candidates = [5, 7, 9, 11]

plt.figure(figsize=[8, len(bin_candidates)*3])
for i, n_bins in enumerate(bin_candidates, 1):
    plt.subplot(len(bin_candidates), 2, i)
    plt.hist(friends_tall, bins=n_bins)

Untitled

위에 존재하는 네 개의 히스토그램이 모두 다 정답이 될 수 있다.

이번에도 똑같은 히스토그램을 그려 보겠다.

import matplotlib.pyplot as plt
bin_candidates = [3, 19, 25, 31]

plt.figure(figsize=[8, len(bin_candidates)*3])
for i, n_bins in enumerate(bin_candidates, 1):
    plt.subplot(len(bin_candidates), 2, i)
    plt.hist(friends_tall, bins=n_bins)

Untitled

그런데 이번에 그린 히스토그램은 보이다시피 조금 못생겼다. 왜 우리는 이걸 못생겼다고 생각할까? 조금 더 수학적인 질문을 해 보면, 히스토그램의 적절한 구간(bin) 을 정할 수 있는 기준은 무엇일까? 나는 없다고 본다. 하지만 왜인지 모르게 방금 만들어낸 못생긴 네 개의 히스토그램보다 조금 더 앞서 보여 준 네 개의 히스토그램이 조금 더 ‘편안’ 하다.

그림 (참고3)

Untitled

자연에서 무엇인가를 관측하여 데이터로 집어넣는 순간 불연속성을 가지게 된다. 위 그래프(그림 참고3)를 보자. 그래프 하단의 얇은 파란색 선은 자연에서 채취한 이산적인 데이터들이다. 그래프에서 빨간색, 초록색, 회색, 검정색 실선은 확률밀도함수이다. 우리는 고등학교 때 확률변수라는 함수의 치역이 이산적이라면 확률질량함수(probability mass function), 확률변수라는 함수의 치역이 연속적이라면 확률밀도함수(probability density function)를 그렸다.

“커널밀도추정”(from2) 이라는 도메인에서는, 파란색 이산적 데이터를 가지고 어떻게 확률밀도함수를 그려낼 수 있을까를 고민한다. 그런데 여기서 의문이 생긴다. 빨간색같이 디테일이 살아있는 그래프가 좋은 그래프일까? 아니면 진짜 커다란 윤곽만 남긴 초록색 그래프가 좋은 그래프일까? 인간은 정답이 무엇이라고 단정지을 수 없다(to2).

Untitled

대표적으로 클러스터링(군집화)은 커널밀도추정이라는 개념을 활용한 응용 애플리케이션이다. Mean Shift 라는 클러스터링 방법론은 결국 각 데이터 포인트들을 어떤 연속함수로 바라볼지에 대해 인간의 직관을 개입시킨다. 인간의 직관에 근거하여 다양한 방법으로 데이터들을 군집화해볼 수 있다. 위 그래프에 나타난 산개점분포도(scatter plot) 에 클래스를 매긴 아래 그림을 보자. 어떤 결과가 정답일까?

Untitled

평범하게 살아 온 인간이라면 위 여섯 개의 결과물 중에 두 개(bandwidth: 1, 2) 에 높은 만족도를 보일 것이다. 그런데 만약 저 데이터들을 표현하는 일에 정답이 있다면 그 두 개 중 왜 하나로 정답을 내리지 못하고 있는가 생각해 볼 필요가 있다. 그럼 한발 더 나아가서, 저 두개를 무슨 근거로 정답으로 인정해 주어야 하는걸까?

오버피팅과 언더피팅은 진리가 아니라

인간의 경험에서 나온 직관

그림 (참고1)

다시 돌아와서 이 그림을 보자. 오버피팅과 언더피팅은 2017년 이후 딥러닝과 머신러닝 분야를 통틀어 가장 많이 사용된 단어다. 이들 단어들은 데이터에 대한 표현력을 논할 때 소통을 정말 많이 편하게 만들어 준다는 점에서 충분히 제 역할을 잘 하고 있다(from4).

하지만 내가 말하고 싶은 것은, 우리는 자연이 어떻게 생겼는지 모르기 때문에, 오버피팅, 언더피팅에는 어떠한 정답이 없다는 것이다. 부족한 데이터로 굽이굽이 초록색 실선처럼 구분하는 모델을 만들었는데 실제로 저것이 현실세계를 더욱 잘 모사할 수 있다는 것이다. 문제에 대한 최적해는 풀고자 하는 문제와 해당 문제의 평가지표(metric)에 의해 수동적으로 결정되어 버린다. 문제를 정확히 정의하는 것이 정말 중요한 이유이기도 하다(from3).

혹시 머신러닝을 업으로 삼을 생각이라면, 그냥 그래프가 구불구불하다고 다짜고자 오버피팅되었다고 여기는 편협한 생각은 위험하다는 것을 인지해야 한다. 그 본질에는 자연에서 샘플링된 데이터로부터 자연의 분포를 추정하려고 하는 인간의 욕망이 있고, 다양한 추정치들 중 어떤 것이 자연의 분포를 더 잘 표현하는가를 결정하는 것은 순전히 인간의 경험적 직관에 달렸다는 진리가 있다(참고6).


작성: 이장후 April 4, 2022


참고

  1. 과적합(過適合, overfitting) 또는 과대적합(過大適合)은 기계 학습(machine learning)에서 학습 데이터를 과하게 학습(overfitting)하는 것을 뜻한다. 일반적으로 학습 데이타는 실제 데이타의 부분 집합이므로 학습데이타에 대해서는 오차가 감소하지만 실제 데이타에 대해서는 오차가 증가하게 된다.
  2. 과소적합(過小適合, underfitting)은 기계 학습(machine learning)에서 통계 모형의 능력 부족으로 학습 데이터를 충분히 설명하지 못하도록 부족하게 학습된 것을 뜻한다.
  3. Kernel density estimate (KDE) with different bandwidths of a random sample of 100 points from a standard normal distribution. Grey: true density (standard normal). Red: KDE with h=0.05. Black: KDE with h=0.337. Green: KDE with h=2.
  4. 히스토그램(histogram)은 표로 되어 있는 도수 분포를 정보 그림으로 나타낸 것이다. 더 간단하게 말하면, 도수분포표를 그래프로 나타낸 것이다. 보통 히스토그램에서는 가로축이 계급, 세로축이 도수를 뜻하는데, 때때로 반대로 그리기도 한다.
  5. 125p, (126p, 논리적인 사고를 할 때에는 뇌는 선형적으로 작동한다.) 실험을 해 보니, 집을 사거나 룸메이트를 선택하는 것처럼 아주 복잡한 문제를 결정해야 하는 상황에서 사람들은 직관적인 선택 (참고1:다른 생각을 해야한다!) 을 할 경우 훨씬 더 정확했고 만족스러워하는 것으로 나타났다.-Ap Dijkesterhuis, 심리학자, 교수, 행복 연구가
  6. 현재 우리가 SOTA라 부르는 대부분의 기술이 다양한 휴리스틱의 누적된 결과물이다. 새로운 상황에서 이걸 좀 바꾸면 또는 이 기술들을 결합하면 성능이 개선되지 않을까?라는 작은 생각이 SOTA로 발전한 것을 자주 본다. 설령 결과적으로 맞더라도 감에 의존한 -- 말 그대로 -- 주먹구구식 접근은 늘 경계하고 피해야 한다. 직감이라 표현했지만 데이터 과학자의 휴리스틱은 문제와 데이터에서 얻은 인사이트이며 오랜 경험으로 다진 산물이다.

from (글을 쓰는 데 반영된 생각들과 경험들)

  1. b3.4_3.1. title: 분류는 가설공간을 만드는 일이다.
  2. b3.4_2.1_2. title: KDE(커널밀도추정) 에서도 결국 커널함수에 대한 인간의 직관이 개입된다. KDE에는 인간이 샘플링된 데이터로 자연의 분포를 알 수 없다는 것이 전제되어 있다.
  3. aa2_1. title: 패러다임 변화는 문제정의를 다시 함으로써 온다.
  4. 9_2. title: 추상이란 복잡도와 오해가능성 사이의 트레이드오프가 있는 도구이다.

to (이 생각으로부터 이어진 생각들과 경험들)


바로가기

다빈치 작업실 : 블로그 홈

생각 조각 : 글의 초안이자 생각의 조각 모음

생각 덩어리 : 거의 완성된 글들 모음

생각 완전체 : 글 그 자체. 블로그 포스팅

블로그의 원칙 나의 원칙 연락해요

피드백