본문 바로가기

DM ML AD

모델 복잡도의 개념

모델의 복잡도는 다양한 관점에서 정의되고 설명될 수 있어서 조심스러운 주제다. 좀 더 이론적이고 종합적으로 설명해야 하는 주제인데, 능력의 한계로 아주 지엽적이고 편향되게 설명할 수 있으니 다른 텍스트북이나 글들을 참조해서 개념을 제대로 정립했으면 하는 바람이다. 복잡도를 다스리는 여러 테크닉들은 다음 글로 미루고 오늘은 복잡도의 개념이나 원인 등에 관해서만 적는다.

복잡한 모델은 뭘까? 비선형 모델은 모두 복잡할까? 모델의 독립변수 (X) 종류와 개수가 많으면 복잡한 걸까? 트레이닝 데이터에 과학습(over-fit)되면 복잡한 걸까? 아니면 여러 잡다한 모델들을 앙상블 하면 복잡한 걸까? 이외에도 복잡한 모델에 관한 다양한 의문이 있을 수 있고, 그런 모든 의문이 어쩌면 모델 복잡도의 여러 측면을 잘 보여주는 것 같다. (혹시 모델 복잡도에 관한 더 좋은 의문/질문이 있으면 댓글 부탁드립니다.) 많은 질문들을 종합하면 복잡한 모델이란 이해하기 어려운 모델이다. 개념적으로는 이해되지만 구체적으로 어떻게 구성되고 작동하는지 파악하기 극히 어렵거나 또는 파악 불가한 모델을 복잡한 (복잡도가 높은) 모델이라고 하면 될 것 같다. 보통 기계 학습된 예측모델을 블랙박스라 표현하는 것도 그 속을 이해할 수 없거나 어렵기 때문이다. 사고 난 비행기의 블랙박스도 몇 달간 조사하면 사고 당시의 몇몇 정황을 파악할 수 있듯이, 기계학습모델도 전혀 해독 불가능하지는 않다고 본다. 때론 현실을 모사한 예측모델을 다시 모사하는 방식으로라도 어느 정도 해석하기도 한다. (최근 각광받는 XAI에서도 그런 접근이 있다.) 학습의 관점에서 보면 global optimum에 이르지 못한 예측모델이 아닐까라는 생각도 해본다.

복잡한 모델을 언급할 때 함께 등장하는 용어/개념이 있다. 대부분 들어봤을 듯한데 Occam’s Rozor (오캄의 면도날)이다. 이미 오래된 영화 ‘콘택트 (1997)’에서 청문회 중에 언급돼서 비전공자도 한번쯤 들어봤을 법하다. 위키를 보면 경제학 쪽에서 사용되는 듯하다. 위키의 내용을 그대로 가져오면  다음과 같다.

같은 현상을 설명하는 두 개의 주장이 있다면, 간단한 쪽을 선택하라.
Given two equally accurate theories, choose the one that is less complex.

한 마디로 말해서 모델의 성능 (예측력)이 같다면/비슷하다면 간단한 모델을 선택하라는 거다. 앞의 질문을 그대로 복기하면 선형 모델이 우선이고, 더 적은 변수를 사용하고, 적당히 학습된 모델이 낫고, 단일 모델이 앙상블보다 낫다는 거다 (** 앙상블은 실은 모델 복잡도를 제어하는 방법임). 가능하면 이해하기 쉽고 설명 가능한 모델을 사용하라는 거다. 성능이 같거나 큰 차이가 없을 때 그렇다는 거지 무조건 쉬운 모델을 사용하라는 거는 아니다. 하지만 현실의 대부분의 문제는 비선형이고 많은 변인이 존재하고 소수의 모델로는 한계가 있으니 모델이 복잡해진다. 그럼에도… (** 영화가 개봉한 1997년 이후에 태어난 독자도 있을텐데 앞으론 저 영화를 언급하지 않는 게 낫겠다.ㅠㅠ)

간단한 모델이 현재 문제를 제대로 해결하지 못하고 또 조금씩 변수를 추가하거나 새로운 모델이나 설정값을 추가하면서 예측력이 증가하기 때문에 복잡한 모델을 사용하는 것에 대한 유혹은 항상 있다. 하지만 복잡한 모델을 그냥 한번 사용해보는 것은 좋지만 그 모델의 개념(과 순은 함의)을 제대로 이해하지 했다면 그냥 “결과가 좋아서 / 또는 있어보이즘 때문에” 사용하지는 말았으면 한다. 이미 많이 봤을 모델 복잡도에 관한 아래 그래프를 가져왔다. X축은 모델 복잡도, Y측은 예측 오류를 표시했다. 모델의 복잡도가 증가하면 학습 에러는 계속 줄어들지만 테스트 에러는 처음에는 줄어들다가 어느 순간 (대개의 경우) 다시 증가한다. 여기서 모델 복잡도는 모델의 차수, 사용된 변수의 종류와 개수, 학습 이터레이션 (epoch) 횟수, 앙상블에서의 모델 개수 등을 의미한다. 테스트 에러가 감소하는 구간을 underfitted라 하고, 다시 증가하는 그간을 과학습 (overfit)이라 한다. 이론적으로 설명한 텍스트북을 찾아보면 오류 (error)는 제거 불가 (irreducible) 오류, 바이어스 (bias), 그리고 배리언스 (variance)로 나눌 수 있는데, 모델의 복잡도가 증가할수록, 즉 과학습이 이뤄지면 바이어스 에러는 줄어들지만 배리언스 에러가 증가한다.

(Figure from “The Elements of Statistical Learning: Data Mining, Inference, and Prediction"

이런 모델의 복잡도를 제어하는 방법을 정리할 예정이다. 모델 복잡도의 정의 또는 개념에서 이를 제어하는 방법은 유추가 가능하다. 모델 자체가 복잡하다면 덜 복잡한 모델을 사용하면 되고, 변수가 너무 많아서 복잡해졌으면 변수를 줄이면 되고, 학습이 너 과하면 적당 선에서 중단하면 되고, 학습 데이터가 불량이면 데이터를 깨끗이 정제하면 된다. 복작한 마음을 다스리는 방식이 다양하듯이 모델의 복잡도도 상황에 따라서 가지각색이다.

반응형