모던지 / 컴퓨터과학 / 데이터의 시대 3강. 규칙을 짜는 대신 배우게 하기

데이터의 시대 3강. 규칙을 짜는 대신 배우게 하기

고양이를 알아보는 규칙을 글로 적어 보라고 하면 아무도 못 씁니다. 그런데 사진은 얼마든지 모을 수 있죠.

풀고 시작

문제 1. 1000명 중 3명만 걸리는 병을 찾는 모형이 정확도 99.7퍼센트를 기록했습니다. 이 수치만 보고 판단하면 안 되는 이유는 무엇일까요?
한쪽 클래스가 압도적으로 많은 불균형 데이터에서는 다수 쪽으로만 찍어도 정확도가 높게 나옵니다. 정작 중요한 소수 쪽을 얼마나 잡아냈는지는 재현율 같은 다른 지표를 봐야 드러나죠. 정확도 하나로 모형을 평가하면 안 되는 대표적 상황입니다.

규칙을 적다가 손을 든 사람들

스팸 메일을 걸러내는 프로그램을 규칙으로 짠다고 해 보시죠. 제목에 특정 단어가 있으면 스팸이라고 정합니다. 발신자들은 곧 철자를 바꿉니다. 규칙을 하나 더 답니다. 그들은 또 바꿉니다. 규칙 목록은 길어지고 서로 충돌하기 시작하며, 며칠만 지나도 낡습니다.

학습 기반 접근은 방향을 바꿉니다. 판정 규칙을 사람이 쓰는 대신, 스팸으로 분류된 메일과 아닌 메일을 잔뜩 보여 주고 프로그램이 스스로 구분 기준을 잡게 합니다. 비유는 여기까지이고 실제로 무슨 일이 일어나는지 한 문장으로 말하면 이렇습니다. 모형에는 조정 가능한 숫자들(파라미터)이 있고, 예측과 정답의 차이를 재는 손실 함수를 정한 뒤, 그 값이 작아지는 방향으로 숫자들을 조금씩 고치는 계산을 반복합니다. 학습이란 이 수치 조정 과정을 부르는 이름이지 프로그램이 의미를 깨닫는 사건이 아닙니다. 이 발상 자체는 오래됐습니다. 아서 새뮤얼은 이미 1950년대에 자기 대국 기록으로 실력이 느는 체커 프로그램을 만들어 보였습니다.

무엇이 주어지느냐로 갈리는 세 갈래

머신러닝을 셋으로 나누는 표준 구분은 학습할 때 무엇이 주어지는가를 기준으로 삼습니다.

방식 주어지는 것 하는 일
지도 학습 입력과 정답 라벨의 쌍 새 입력의 라벨을 맞힙니다
비지도 학습 입력만, 라벨 없음 데이터 안의 구조를 찾습니다
강화 학습 행동에 따라오는 보상 신호 보상이 커지는 행동 방식을 익힙니다

지도 학습은 라벨을 사람이 붙여야 해서 비쌉니다. 비지도 학습은 라벨 없이 비슷한 것끼리 묶는 군집화나 정보를 요약하는 차원 축소를 합니다. 강화 학습은 정답을 알려 주지 않고 결과에 점수만 주며, 게임이나 로봇 제어처럼 시행착오가 가능한 영역에서 힘을 냅니다. 한 가지 덧붙이면, 요즘 대형 언어 모형이 쓰는 자기 지도 학습은 사람이 라벨을 달지 않고 문장 안의 다음 단어를 정답으로 삼는 방식입니다. 라벨 비용을 없앤 채 지도 학습의 형식을 빌린 셈이라 이 삼분법의 경계에 걸쳐 있습니다.

시험지를 미리 보면 성적을 믿을 수 없습니다

모형이 잘 배웠는지는 어떻게 알까요. 학습에 쓴 데이터로 채점하면 답이 나오지 않습니다. 외운 문제를 다시 푸는 것과 같으니까요. 그래서 데이터를 셋으로 나눕니다. 훈련 데이터로 파라미터를 맞추고, 검증 데이터로 모형의 종류나 학습 설정처럼 사람이 고르는 값을 비교하고, 시험 데이터는 마지막에 딱 한 번만 씁니다.

검증과 시험을 굳이 나누는 이유가 중요합니다. 검증 데이터를 보며 설정을 수십 번 바꾸다 보면 그 데이터에도 슬금슬금 맞춰지기 때문입니다. 시험 데이터를 여러 번 들여다보고 모형을 고치는 순간 그 점수는 더 이상 처음 보는 데이터에 대한 성적이 아닙니다. 같은 이유로 조심해야 할 것이 데이터 누수입니다. 예측 시점에는 알 수 없는 정보가 입력에 섞여 들어가면 시험 성적이 비현실적으로 좋게 나오고, 실제 서비스에서 무너집니다.

암기와 일반화 사이

과적합(overfitting)은 모형이 훈련 데이터의 우연한 잡음까지 따라 외운 상태입니다. 훈련 오차는 계속 줄어드는데 검증 오차는 어느 지점부터 다시 올라가는 그림이 전형적 신호죠. 반대쪽에는 모형이 너무 단순해 규칙 자체를 못 잡는 과소적합이 있습니다. 우리가 원하는 것은 훈련 데이터 성적이 아니라 일반화, 즉 처음 보는 데이터에서의 성능입니다.

대응책으로는 데이터를 늘리는 것이 가장 확실하고, 모형의 복잡도에 벌점을 주는 정규화(regularization)나 검증 오차가 오를 때 학습을 멈추는 조기 종료를 씁니다. 1강의 데이터베이스 정규화와는 이름만 같고 다른 개념입니다. 다만 정직하게 덧붙일 것이 있습니다. 아주 큰 모형에서는 파라미터를 계속 늘려도 성능이 다시 좋아지는 현상이 관측돼, 복잡도와 일반화의 관계를 어떻게 설명할지는 아직 논쟁 중입니다. 과적합이라는 개념이 폐기된 것은 아니지만, 교과서의 단순한 U자 곡선만으로 모든 경우를 설명하지는 못합니다.

무엇을 입력으로 줄 것인가, 무엇으로 채점할 것인가

모형 못지않게 결과를 좌우하는 것이 특징 공학(feature engineering)입니다. 같은 원자료라도 날짜를 그대로 주는 것과 요일과 공휴일 여부로 바꿔 주는 것은 전혀 다른 성능을 냅니다. 딥러닝이 이미지나 문장에서 특징 추출을 상당 부분 자동화한 것은 사실이지만, 무엇을 입력에 포함할지 결정하는 일은 여전히 사람의 몫입니다.

채점도 마찬가지입니다. 앞의 사전시험이 보여 줬듯 불균형 데이터에서 정확도는 쉽게 사람을 속입니다. 그래서 정밀도(양성이라 한 것 중 실제 양성의 비율)와 재현율(실제 양성 중 잡아낸 비율)을 함께 봅니다. 이 둘은 대개 한쪽을 올리면 다른 쪽이 내려가는 관계입니다. 판정 기준을 느슨하게 하면 환자를 더 많이 잡지만 헛경보도 늘어나죠. 어느 쪽 오류가 더 비싼지는 통계가 아니라 그 일이 쓰이는 현장이 정합니다. 다음 강에서는 이 선택이 사람의 삶에 직접 닿을 때 무슨 문제가 생기는지 보겠습니다.

인출 문제

문제 1. 지도 학습과 강화 학습을 가르는 기준으로 가장 정확한 것은 무엇일까요?
세 갈래의 구분 기준은 학습할 때 무엇이 주어지느냐입니다. 라벨 쌍이 있으면 지도, 라벨 없이 구조만 찾으면 비지도, 결과에 점수만 돌아오면 강화죠. 데이터 종류나 제작 주체는 기준이 아닙니다.
문제 2. 검증 데이터와 시험 데이터를 따로 두는 이유는 무엇일까요?
설정을 고르는 과정 자체가 검증 데이터를 향한 일종의 학습이라서, 검증 성적은 낙관적으로 부풀려집니다. 그래서 마지막에 한 번만 쓰는 시험 데이터를 따로 남겨 두죠. 두 데이터 모두 라벨이 있어야 채점이 가능합니다.
문제 3. 훈련 오차는 계속 줄어드는데 검증 오차가 어느 시점부터 올라간다면 무엇을 의심해야 할까요?
훈련 성적과 검증 성적이 갈라지는 그림이 과적합의 전형적 신호입니다. 데이터를 늘리거나 정규화, 조기 종료로 대응하죠. 과소적합은 훈련 오차부터 높게 머무는 반대 양상입니다.
문제 4. 판정 기준을 느슨하게 해서 양성 판정을 늘렸을 때 일어나는 일은 무엇일까요?
기준을 낮추면 실제 양성을 더 많이 잡아 재현율이 오르지만 음성을 양성이라 부르는 경우도 늘어 정밀도가 떨어집니다. 둘은 대개 맞바꾸는 관계이며, 어느 오류가 더 비싼지는 그 일이 쓰이는 현장이 정하죠.

생각해볼 질문 (정답 없음)

  • 채용 서류를 거르는 모형이라면 놓친 좋은 지원자와 잘못 통과시킨 지원자 중 어느 쪽 오류가 더 비쌀까요? 그 판단은 누가 내려야 할까요?

이전: 데이터의 시대 2강 · 다음: 데이터의 시대 4강

모던지 · 궁금하면 모던지 GitHub · 2026-09-10