과적합 — 완벽주의자는 시험에서 망한다

by 박현아

"나는 완벽주의자라 일을 빨리 못해요."


이 말은 때로 변명이 아니라 사실이다. 아니, 사실을 넘어선 비극에 가깝다. 완벽주의라는 옷을 입은 채, 우리는 종종 자기 발목을 잡는다. 결국 아무것도 완성하지 못하거나, 심각한 성능 저하를 겪는다는 점에서, 완벽주의는 기계학습의 과적합(Overfitting)과 놀랍도록 닮아 있다.


───


인공지능 모델이 학습하는 과정을 상상해보자. 모델에게 수많은 고양이 사진을 보여주며 "이건 고양이야"라고 가르친다.


여기서 모델이 너무 똑똑하게, 너무 열심히 학습하면 문제가 생긴다. 훈련 데이터셋에 있는 고양이의 모든 특징을 외워버리는 것이다. 털 무늬 하나, 귀의 각도 하나, 눈 색깔 하나까지. 심지어 사진에 우연히 찍힌 배경의 얼룩이나 조명 반사 같은 불필요한 노이즈(noise)까지도 '고양이의 일부'라고 학습해버린다.


이것이 과적합이다.


과적합된 모델은 훈련 데이터셋에 있던 고양이 사진은 기가 막히게 잘 분류한다. 99.9%의 정확도. 하지만 새로운 고양이 사진을 보여주면 속절없이 무너진다. 한 번도 본 적 없는 털 색깔의 고양이, 다른 각도로 찍힌 고양이는 "고양이가 아니다"라고 판단해버린다. 배경이 조금만 달라져도 헤맨다.


정작 중요한 '고양이의 본질'은 파악하지 못하고, 지엽적인 '훈련 데이터의 특징'만 외워버린 것이다.


───


과적합된 AI 모델을 보면서, 문득 '완벽하게 짜놓은 루틴'에 집착하는 극 J 인이 떠올랐다.


그는 자기만의 완벽한 아침 루틴을 가지고 있었다. 6시 3분 기상, 6시 7분 스트레칭, 6시 20분 커피 내리기, 6시 45분 뉴스 브리핑 청취, 7시 10분 아침 식사, 7시 50분 외출. 모든 시간이 분 단위로 쪼개져 있었고, 이 루틴은 그에게 최고의 생산성을 보장했다.


그런데 이 루틴은 아주 특정한 환경에 과도하게 최적화되어 있었다. 정시에 출발하는 대중교통, 갑자기 아프지 않는 아이, 예정에 없던 회의가 잡히지 않는 직장. 이 모든 '훈련 데이터' 안에서만 완벽했다.


아침에 갑자기 아이가 열이 나면? 지하철이 5분만 지연되면? 예상치 못한 메일 한 통이 날아오면? 그의 완벽한 하루는 송두리째 흔들린다. 첫 번째 톱니가 빠지면 나머지가 전부 틀어진다. 루틴이 망가진 김에 아예 하루를 포기해버리기도 한다. "오늘은 글렀어."


정작 중요한 '하루를 유연하게 꾸려가는 능력'은 파악하지 못하고, 지엽적인 '특정 환경에서의 완벽한 시간표'만 외워버린 것이다.


───


완벽주의가 초래하는 과적합의 부작용은 또 있다.


첫째, 제때 완성하지 못한다. "이 정도로는 부족해"라는 생각 때문에 끝없이 수정하고 보완한다. 마감이 임박했는데도 발표 자료의 폰트 크기 하나, 이미지 배치 하나에 며칠을 소비한다. 결국 마감 기한을 넘기거나, 간신히 제출하더라도 다른 경쟁자들은 이미 다음 단계로 나아가 있다. 완벽한 모델을 만들려다 시장 출시 타이밍을 놓치는 AI 스타트업처럼.


둘째, 작은 변화에도 취약하다. 날씨가 조금 바뀌어도, 대본이 한 줄만 달라져도, 원래 앉던 자리에 다른 사람이 앉아 있어도 흔들린다. 유연성 제로. 훈련 데이터의 노이즈까지 외웠던 모델이 배경 하나 달라지면 오답을 내는 것과 같다.


셋째, 번아웃에 취약하다. 모든 것에 완벽을 기하려면 엄청난 에너지가 소모된다. 하나의 작업에 과도하게 매몰되어 다른 중요한 일들을 놓치거나, 지쳐서 아무것도 하고 싶지 않은 상태가 된다. '훈련 손실'은 0에 가까운데, '검증 손실'은 하늘을 찌르는 모델. 연습에서는 완벽한데 실전에서는 무너지는 선수. 같은 구조다.


───


그럼 AI 엔지니어들은 과적합을 어떻게 막을까?


첫째, 데이터 증강(Data Augmentation). 훈련 데이터를 조금씩 변형해서 모델이 더 다양한 형태를 접하게 한다. 고양이 사진을 좌우 반전시키거나, 밝기를 바꾸거나, 약간 흐리게 만든다. 핵심은 일부러 완벽하지 않은 데이터를 먹이는 것이다.


인간 버전은 이렇다. 늘 다니던 카페 말고 처음 가보는 곳에서 일해본다. 잘 아는 분야의 책 대신 전혀 모르는 분야의 책을 펼친다. 여행지에서 계획 없이 하루를 보내본다. 당신의 경험 데이터가 다양해질수록 세상의 변수에 덜 흔들린다. 완벽하게 통제된 환경에서만 기능하는 사람이 아니라, 어디에 던져놔도 작동하는 사람이 된다.


둘째, 조기 종료(Early Stopping). 훈련 데이터에서 성능이 계속 오르더라도, 검증 데이터에서의 성능이 떨어지기 시작하면 학습을 멈춘다. "이 정도면 충분하다"는 선을 긋는 것이다.


보고서를 쓸 때 이걸 떠올려보라. 90% 완성한 시점에서 제출하면 팀원들의 피드백을 받아 더 좋은 방향으로 수정할 수 있다. 하지만 혼자 100%를 만들겠다고 3일을 더 붙잡으면, 마감은 넘기고, 피드백 기회는 날리고, 결과물은 혼자만의 기준에 과적합된 채 나온다. 리드 클리어런스의 유명한 조언이 있다. "완벽보다 완료가 낫다(Done is better than perfect)." 이것이 조기 종료다.


셋째, 정규화(Regularization). 모델의 복잡도에 벌칙을 부과해서, 너무 세밀한 패턴까지 외우지 못하게 막는 방법이다. 쉽게 말하면 "디테일에 집착하면 벌점"이다.


현실에서의 정규화는 의외로 단순하다. 하루의 할 일 목록을 세 가지로 제한하는 것. 이메일 답장을 세 문장 이내로 쓰는 것. 발표 자료에 글자 수 상한을 정하는 것. 스스로에게 강제로 대충 하는 영역을 만드는 것이다. 중요한 일에만 완벽을 허용하고, 나머지는 의도적으로 70점짜리를 낸다. 이 70점짜리 빈자리가 당신에게 유연성을 돌려준다.


넷째, 드롭아웃(Dropout). 학습 중에 신경망의 일부를 무작위로 꺼버리는 파격적인 방법이다. 특정 뉴런에만 의존하지 않도록 강제하는 것이다. "이 뉴런 없이도 작동해야 해." 그래야 전체가 더 튼튼해진다.


삶에서 드롭아웃은 이런 것이다. 팀 프로젝트에서 내가 맡던 부분을 일부러 후배에게 넘기는 것. 매일 쓰던 앱 없이 하루를 보내보는 것. 휴가 중에 진짜로 연락을 끊어보는 것. 불안하다. 당연히 불안하다. 하지만 AI 엔지니어들은 안다. 드롭아웃을 적용한 모델이 적용하지 않은 모델보다 실전에서 거의 항상 더 낫다는 것을. 내가 없어도 돌아가는 시스템을 만드는 사람이, 모든 것을 쥐고 있어야 안심하는 사람보다 더 강하다.


───


완벽주의는 열정이나 성실함처럼 보이지만, 실제로는 '실패에 대한 두려움'에서 기인할 때가 많다. 완벽하게 준비하면 실패하지 않을 것이라는 착각. 하지만 세상은 훈련 데이터와 다른 문제를 던진다. 항상 그래왔다. 앞으로도 그럴 것이다.


흥미로운 건, AI 분야에서 가장 성능이 좋은 모델들은 하나같이 과적합을 경계하도록 설계되어 있다는 사실이다. GPT도, 딥마인드의 알파폴드도, 구글의 제미니도. 세계 최고의 AI가 가장 두려워하는 것이 '훈련 데이터에 너무 잘 맞는 것'이라니, 역설적이지 않은가.


이 역설이 우리에게 알려주는 건 이것이다.


완벽하게 맞추는 능력보다, 못 본 문제에 대응하는 능력이 더 중요하다. 시험 범위를 외우는 것보다, 시험 범위 밖의 질문에 당황하지 않는 것. 훈련 데이터의 100점보다, 테스트 데이터의 85점이 더 값지다.


과적합의 반대말은 일반화(Generalization)다. 특정 상황에만 통하는 완벽함이 아니라, 어떤 상황에서든 쓸 만한 유연함. 모든 것을 통제하는 대신, 통제할 수 없는 것 앞에서도 무너지지 않는 힘.


완벽하지 않아도 괜찮다. 오히려 적당히 느슨한 것이 더 강하다. AI가 수십 년의 시행착오 끝에 도달한 결론이, 의외로 이 한 문장이다.