본문으로 바로가기

[개념정리] 과적합이란?

category AI/CV & SSL 2019. 9. 20. 16:38
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

과적합이란?

과적합이라는 용어는 통계학이나 기계학습에서 주로 쓰이며, 과거데이터를 통해 모델을 세운다면 자주 마주하게 되는 문제입니다. 다른 중요한 통계적 개념들과도 밀접하게 연관되어 있는 것들이 많아 매우 중요한 개념이죠.

과적합은 모델이 실제 변수들 간의 관계보다는 과거 학습데이터 (training data)의 노이즈를 설명하게 되는 경우를 표현할 때 쓰입니다. 즉, 모델이 과거의 데이터를 너무 과하게 설명한 나머지 실제 변수들 간의 관계를 잘못 설명하게 되는 경우입니다. 이러한 모델은 이미 학습한 데이터는 잘 설명하는 것처럼 보이지만 아직 학습하지 않은 데이터에 대해서는 제대로 설명하지 못합니다. 마치 암기식으로 공부하여 시험문제를 잘 못 푸는 것처럼 말이죠.

잘 와 닿지 않을 수도 있겠지만, 모델의 의미를 조금 확장해 보면 생각보다 친숙한 개념입니다.

사진 출처: http://worldsoccertalk.com/tv-schedule/

“아무리 훌륭한 감독이 와도 내가 TV중계를 보는 날이면 우리나라 축구팀이 지더라구. 그러니 앞으로는 TV중계를 보지 않겠어.”

누구나 한번쯤은 해볼 수 있는 생각이지 않나요? 하지만 정말 저렇게 생각하는 사람이 있다면, 그 사람은 우리나라 축구팀의 승패에 관한 과적합된 모델을 머릿속에 그리고 있다고 말할 수 있을 것입니다.

이 사람은 예전부터 우리나라 축구팀 경기를 봐온 기억이라는, 과거 데이터를 바탕으로 ‘훌륭한 감독’뿐만 아니라 ‘TV 중계 시청’도 우리나라 축구팀의 승패에 영향을 미친다고 생각했기 때문이죠. 하지만 ‘TV 중계 시청’은 축구팀의 승패라는 변수와 아무런 관련이 없습니다. 다시 말해, 축구팀의 승패에 관한한 ‘TV 중계 시청’의 여부는 기억 속의 노이즈라 할 수 있습니다. 결국, 이 사람이 세운 모델은 노이즈까지 설명하고 있는 셈입니다.

‘훌륭한 감독’까지만 고려해도 틀리지는 않은 모델을 그릴 수 있었을 텐데, 생각이 너무 많았던 것 같습니다. 어쩌면 과적합은 너무 잘 설명하고 싶어하는 욕심과도 관련 있어 보입니다.

과적합은 왜 발생하나?

과적합은 여러가지 요인들이 복합적으로 얽혀서 발생할 수 있습니다. 가장 쉽게 생각할 수 있는 원인으로는 학습한 데이터가 대표성을 가지지 않은 경우입니다. 아기가 꽃이라는 단어를 배울 때, 빨간색 꽃 사진들만 보고 배웠다면 파란색 꽃을 봤을 때 꽃이 아니라고 할 수 도 있겠죠. 같은 맥락으로 과접합에 대한 개념을 공부할 때도 이 글 뿐만 아니라 다른 여러가지 글들도 읽는게 좋겠죠. 이 글의 설명이나 표현 방식에 갇힐 수 도 있으니까요.

또한, 과적합은 고려하는 변수가 지나치게 많아도 발생하기 쉽고, 모델이 너무 복잡한 경우에도 쉽게 발생합니다. 전자는 축구 예시에서 ‘훌륭한 감독’ 뿐만 아니라 ‘TV 중계 시청’을 했는지 여부도 승패와 연관 지어 생각했던 것에 비유할 수 있을 것입니다. 후자는 ‘훌륭한 감독의 부임과 동시에 내가 TV 중계를 보지 말아야 승리할 가능성 가장 높다’ 처럼 너무 복잡하게 생각한 것에 비유할 수 있겠죠. 아래에서 더 자세히 살펴 보도록 하겠습니다.

  1. 고려하는 변수가 너무 많아서…

먼저, 고려하는 변수가 지나치게 많으면 왜 과적합이 일어나기 쉬울까요? 바로 차원의 저주(The Curse of Dimensionality)라는 현상 때문입니다. 여기서 이와 관련된 모든 내용을 다루기엔 무리여서 위에서 다룬 축구경기를 예시로 간단히만 살펴보도록 하겠습니다.

예시로 든 사람은 우리나라 축구팀의 경기를 총 10번 보았으며 경기결과들을 모두 기억하고 있다고 가정합시다. ‘훌륭한 감독’만 고려했을 때의 경기성적은 첫번째 표와 같이 기억하고 있습니다. 두 번째표는 똑같은 경기기록을 ‘TV 중계 시청’이라는 변수도 함께 고려했을 때의 결과입니다. ‘훌륭한 감독(O)’에서의 4승 1패라는 경기 기록이 다시 ‘TV 중계 시청’여부에 따라 2승 1패와 2승 0패로 나누어지게 되죠. 즉, 변수를 늘릴수록 각 케이스 별로 관측된 값들이 나눠집니다. 임의의 변수, A/B를 더 고려하게 되면 세번째 표처럼 어느 케이스가 더 낫다고 판단할 수 없을 정도로 더 잘게 나눠 질것입니다.

고려하는 변수들의 개수가 많아 질 수록, 데이터가 표현되는 공간은 넓어 지며, 관측 값들은 넓어진 공간안에서 더 얕게 분포하게 됩니다. 그리고 점들이 서로 멀어질수록 하나하나의 값들이 모델에 미치는 영향은 커지게 됩니다. 마치, 극단적인 값들이 평균값에 큰 영향을 미치는 것처럼 말이죠. 결국, 우연히 찍힌 점들(노이즈라 생각하시면 됩니다.) 마저도 모델에 큰 영향을 미치게 되어 모델이 노이즈를 설명하게 될 가능성이 높아집니다.

하지만 예시로 든 사람이 훨씬 더 많은 축구경기를 봤다면, 자신이 TV중계를 시청한 날 팀이 승리하는 경우도 많이 경험했을 것이고, 그랬다면 과적합을 피할 수 있었겠지요.

  1. 모델이 너무 복잡해서…

과적합은 모델이 지나치게 복잡해도 일어 날 수 있습니다. 사실, 모델의 복잡도는 자유도(Degree of freedom)이라는 개념과도 밀접하게 맞닿아 있으나, 여기서는 아래 그림을 통해 간단히만 살펴보도록 하겠습니다. 아래 그림에서 Y와 X라는 변수들의 실제 관계는 왼쪽 그래프의 검은색 직선처럼 1차함수의 모양이며, 직선 주변으로 점들이 퍼져 있는 것은 모두 노이즈 때문입니다. 하지만 이 데이터에 4차 방정식 형태의 복잡한 회귀식을 적합(fitting) 하면, 오른쪽 그래프의 파란색 곡선처럼 됩니다. 이 곡선은 데이터 상의 노이즈를 설명하게 되면서 실제 Y와 X간의 관계를 잘 잡아내지 못하게 됩니다.

사실 아무리 정교하고 어려운 수학이론으로 만든 모델이라도 지나치게 복잡하다면, 단순히 1차 방정식 형태의 모델로 적합(fitting)시킬 때 보다 못한 경우가 많습니다. 오컴의 면도날(Occam’s Razor)이라는 ‘경제성의 원리’(보다 적은 수의 논리로 설명이 가능한 경우, 많은 수의 논리를 세우지 말라.)가 주장하는 바와 같은 맥락입니다.

다행히도 관측치의 개수가 많아질 수록 위와 같은 현상은 완화 될 수 있습니다. 아래 두 그림들은 위 그림의 데이터에서 같은 방식으로 점들을 10개씩 더 늘려 갔을 때의 모습입니다. 점의 개수가 늘어날수록 파란색 곡선은 점점 직선에 가까운 형태로 변해가는 것을 확인 할 수 있습니다.

사실 위에서 말씀드린 과적합을 일으키는 두 가지 요인들은 서로 따로 노는 조건들이 아닙니다. 왜냐하면 고려하는 변수가 많은 모델이 결국 복잡한 모델로 이어지기 때문이죠. 그리고 두 경우 모두 관측치의 개수가 충분히 많다면 해결 될 수 있습니다. 사람들이 빅데이터, 빅데이터 하는 이유이기도 하죠. 하지만 과적합문제를 고려하지 않아도 될 정도로 충분히 많은 양의 데이터를 확보하는 것은 결국 엄청난 비용을 유발하거나 불가능한 경우가 많습니다. 보통 변수가 하나 늘어날 때마다 전과 비슷한 수준으로 데이터를 설명하기 위해 추가적으로 더 필요한 관측값의 개수는 기하급수적으로 늘어나며, 거기에 모델까지 복잡하다면 그 몇 배가 더 필요할 수도 있습니다.

딜레마

그럼 데이터의 양이 한정되어 있다면 데이터를 고려하는 변수가 적을수록, 그리고 모델이 단순할수록 좋을까요? 과적합문제는 피할 수 있겠지만, 여러 변수들의 복잡한 관계를 설명하는 것은 포기 해야겠죠. 모델의 정교한 설명력과 과적합문제의 해소, 양쪽 모두를 각각의 최대치로 끌어올리는 건 불가능합니다. 둘 사이의 적절한 선을 찾아야 하죠.

이를 수학적으로 표현한 것이 Bias-variance tradeoff라는 문제입니다. 직선이나 평면같이 간단한 모델은 몸이 뻣뻣하기 때문에 노이즈에 쉽게 흔들리지 않지만(이런 모델을 robust하다고 표현 합니다.), 복잡한 관계를 설명하는 데에는 한계가 있죠. 즉, 편차(Bias)는 커질 가능성이 높아지지만 변동(variance)은 줄어들게 됩니다. 반면 복잡한 모델은 정교하게 설명할 수 있지만 상대적으로 노이즈에 민감하게 반응하게 됩니다.

최근 부쩍 유명해진 딥러닝 알고리즘은 심층 신경망(Deep neural network)이라는 매우 유연한 모델을 통해 매우 복잡한 관계를 설명할 수 있는 가능성을 열어 두면서, 동시에 drop out이나 autoencoder 등의 방법을 통해 노이즈의 영향을 줄이는 구조로 발전되어 왔습니다. 하지만 무엇을 얼마나 어떻게 사용해야하는 지에 대해서는 정답이 없습니다.

결국 선택의 문제로 이어지게 되죠. 그리고 합리적인 선택을 하기 위해서는 문제와 데이터에 대한 깊이 있는 이해가 선행 되어야 합니다. 개인적으로 이러한 부분은 데이터를 분석하고 추론하는데 있어 수학 공식이나 여러가지 모델링 기법 이상으로 중요한 부분이라생각합니다. 결국엔 알고리즘이 사람의 직관보다 더 나은 모델을 만들 수 있다 하더라도 처음에 잘 학습할 수 있도록 도와주는 것은 여전히 중요하기 때문입니다.

 

 

출처 : https://hyperdot.wordpress.com/2017/02/06/%EA%B3%BC%EC%A0%81%ED%95%A9overfitting/

'AI > CV & SSL' 카테고리의 다른 글

[개념정리] downstream task란?  (0) 2019.11.07
[개념정리] co-adaptation이란?  (0) 2019.11.01
[개념정리] Pretext task 란?  (0) 2019.10.31
[개념정리] Ablation Study 란?  (0) 2019.10.31
[개념정리] Generalization & Optimization  (0) 2019.10.30