데이터의 시대 3강. 규칙을 짜는 대신 배우게 하기
고양이를 알아보는 규칙을 글로 적어 보라고 하면 아무도 못 씁니다. 그런데 사진은 얼마든지 모을 수 있죠.
풀고 시작
규칙을 적다가 손을 든 사람들
스팸 메일을 걸러내는 프로그램을 규칙으로 짠다고 해 보시죠. 제목에 특정 단어가 있으면 스팸이라고 정합니다. 발신자들은 곧 철자를 바꿉니다. 규칙을 하나 더 답니다. 그들은 또 바꿉니다. 규칙 목록은 길어지고 서로 충돌하기 시작하며, 며칠만 지나도 낡습니다.
학습 기반 접근은 방향을 바꿉니다. 판정 규칙을 사람이 쓰는 대신, 스팸으로 분류된 메일과 아닌 메일을 잔뜩 보여 주고 프로그램이 스스로 구분 기준을 잡게 합니다. 비유는 여기까지이고 실제로 무슨 일이 일어나는지 한 문장으로 말하면 이렇습니다. 모형에는 조정 가능한 숫자들(파라미터)이 있고, 예측과 정답의 차이를 재는 손실 함수를 정한 뒤, 그 값이 작아지는 방향으로 숫자들을 조금씩 고치는 계산을 반복합니다. 학습이란 이 수치 조정 과정을 부르는 이름이지 프로그램이 의미를 깨닫는 사건이 아닙니다. 이 발상 자체는 오래됐습니다. 아서 새뮤얼은 이미 1950년대에 자기 대국 기록으로 실력이 느는 체커 프로그램을 만들어 보였습니다.
무엇이 주어지느냐로 갈리는 세 갈래
머신러닝을 셋으로 나누는 표준 구분은 학습할 때 무엇이 주어지는가를 기준으로 삼습니다.
| 방식 | 주어지는 것 | 하는 일 |
|---|---|---|
| 지도 학습 | 입력과 정답 라벨의 쌍 | 새 입력의 라벨을 맞힙니다 |
| 비지도 학습 | 입력만, 라벨 없음 | 데이터 안의 구조를 찾습니다 |
| 강화 학습 | 행동에 따라오는 보상 신호 | 보상이 커지는 행동 방식을 익힙니다 |
지도 학습은 라벨을 사람이 붙여야 해서 비쌉니다. 비지도 학습은 라벨 없이 비슷한 것끼리 묶는 군집화나 정보를 요약하는 차원 축소를 합니다. 강화 학습은 정답을 알려 주지 않고 결과에 점수만 주며, 게임이나 로봇 제어처럼 시행착오가 가능한 영역에서 힘을 냅니다. 한 가지 덧붙이면, 요즘 대형 언어 모형이 쓰는 자기 지도 학습은 사람이 라벨을 달지 않고 문장 안의 다음 단어를 정답으로 삼는 방식입니다. 라벨 비용을 없앤 채 지도 학습의 형식을 빌린 셈이라 이 삼분법의 경계에 걸쳐 있습니다.
시험지를 미리 보면 성적을 믿을 수 없습니다
모형이 잘 배웠는지는 어떻게 알까요. 학습에 쓴 데이터로 채점하면 답이 나오지 않습니다. 외운 문제를 다시 푸는 것과 같으니까요. 그래서 데이터를 셋으로 나눕니다. 훈련 데이터로 파라미터를 맞추고, 검증 데이터로 모형의 종류나 학습 설정처럼 사람이 고르는 값을 비교하고, 시험 데이터는 마지막에 딱 한 번만 씁니다.
검증과 시험을 굳이 나누는 이유가 중요합니다. 검증 데이터를 보며 설정을 수십 번 바꾸다 보면 그 데이터에도 슬금슬금 맞춰지기 때문입니다. 시험 데이터를 여러 번 들여다보고 모형을 고치는 순간 그 점수는 더 이상 처음 보는 데이터에 대한 성적이 아닙니다. 같은 이유로 조심해야 할 것이 데이터 누수입니다. 예측 시점에는 알 수 없는 정보가 입력에 섞여 들어가면 시험 성적이 비현실적으로 좋게 나오고, 실제 서비스에서 무너집니다.
암기와 일반화 사이
과적합(overfitting)은 모형이 훈련 데이터의 우연한 잡음까지 따라 외운 상태입니다. 훈련 오차는 계속 줄어드는데 검증 오차는 어느 지점부터 다시 올라가는 그림이 전형적 신호죠. 반대쪽에는 모형이 너무 단순해 규칙 자체를 못 잡는 과소적합이 있습니다. 우리가 원하는 것은 훈련 데이터 성적이 아니라 일반화, 즉 처음 보는 데이터에서의 성능입니다.
대응책으로는 데이터를 늘리는 것이 가장 확실하고, 모형의 복잡도에 벌점을 주는 정규화(regularization)나 검증 오차가 오를 때 학습을 멈추는 조기 종료를 씁니다. 1강의 데이터베이스 정규화와는 이름만 같고 다른 개념입니다. 다만 정직하게 덧붙일 것이 있습니다. 아주 큰 모형에서는 파라미터를 계속 늘려도 성능이 다시 좋아지는 현상이 관측돼, 복잡도와 일반화의 관계를 어떻게 설명할지는 아직 논쟁 중입니다. 과적합이라는 개념이 폐기된 것은 아니지만, 교과서의 단순한 U자 곡선만으로 모든 경우를 설명하지는 못합니다.
무엇을 입력으로 줄 것인가, 무엇으로 채점할 것인가
모형 못지않게 결과를 좌우하는 것이 특징 공학(feature engineering)입니다. 같은 원자료라도 날짜를 그대로 주는 것과 요일과 공휴일 여부로 바꿔 주는 것은 전혀 다른 성능을 냅니다. 딥러닝이 이미지나 문장에서 특징 추출을 상당 부분 자동화한 것은 사실이지만, 무엇을 입력에 포함할지 결정하는 일은 여전히 사람의 몫입니다.
채점도 마찬가지입니다. 앞의 사전시험이 보여 줬듯 불균형 데이터에서 정확도는 쉽게 사람을 속입니다. 그래서 정밀도(양성이라 한 것 중 실제 양성의 비율)와 재현율(실제 양성 중 잡아낸 비율)을 함께 봅니다. 이 둘은 대개 한쪽을 올리면 다른 쪽이 내려가는 관계입니다. 판정 기준을 느슨하게 하면 환자를 더 많이 잡지만 헛경보도 늘어나죠. 어느 쪽 오류가 더 비싼지는 통계가 아니라 그 일이 쓰이는 현장이 정합니다. 다음 강에서는 이 선택이 사람의 삶에 직접 닿을 때 무슨 문제가 생기는지 보겠습니다.
인출 문제
생각해볼 질문 (정답 없음)
- 채용 서류를 거르는 모형이라면 놓친 좋은 지원자와 잘못 통과시킨 지원자 중 어느 쪽 오류가 더 비쌀까요? 그 판단은 누가 내려야 할까요?
이전: 데이터의 시대 2강 · 다음: 데이터의 시대 4강