콘텐츠로 이동

머신러닝이란 무엇인가 (What is Machine Learning)

난이도: 초급
선수 지식: 없음 — 이 사이트의 진짜 출발점입니다
관련 문서: 학습의 세 가지 방식 | ML을 쓰지 말아야 할 때

핵심 요약: 머신러닝은 사람이 규칙을 적는 대신 데이터에서 규칙을 찾아내게 하는 것이다. “스팸에는 ‘무료’가 들어간다”를 사람이 적으면 규칙 기반이고, 스팸 메일 수천 통을 보여주고 모델이 알아서 단서를 찾게 하면 머신러닝이다. 규칙이 명확하고 안 변하면 규칙 기반이 낫고, 규칙이 너무 많거나 계속 변하면 머신러닝이 낫다.

  • 데이터(Data): 학습에 쓰는 과거 사례들. 스팸 필터라면 “이 메일은 스팸이었다/아니었다”라는 기록.
  • 규칙 기반(Rule-based): 사람이 if ~ then ~을 직접 적는 방식. 투명하지만 규칙이 많아지면 감당이 안 된다.
  • 학습(Learning): 데이터를 보고 규칙에 해당하는 값을 스스로 정하는 과정. 사람이 정답을 알려주지 않아도 된다는 뜻이 아니라, 규칙을 손으로 적지 않아도 된다는 뜻이다.
  • 패턴(Pattern): 데이터에 반복해서 나타나는 경향. 머신러닝이 찾아내는 것이 바로 이것이다.
  • 일반화(Generalization): 학습에 쓰지 않은 새 데이터에서도 잘 맞히는 능력. 머신러닝의 최종 목표다.

머신러닝(Machine Learning)은 명시적으로 프로그래밍하지 않고도 컴퓨터가 데이터로부터 학습하게 하는 방법이다. 여기서 핵심은 “학습”이라는 단어가 사람의 학습과는 조금 다르다는 점이다. 컴퓨터가 이해하거나 깨닫는 것이 아니라, 수많은 사례를 보고 입력과 출력 사이의 규칙성을 수치로 찾아내는 것에 가깝다.

전통적인 프로그래밍과 비교하면 방향이 반대다.

입력출력
전통적 프로그래밍데이터 + 사람이 쓴 규칙
머신러닝데이터 + 규칙

즉 머신러닝은 “답을 알고 있는 사례들”을 잔뜩 주고 규칙을 역으로 알아내게 하는 방식이다.

비유: 아이에게 고양이를 가르치는 두 가지 방법과 같다. 규칙 기반은 “귀가 뾰족하고, 수염이 있고, 다리가 넷이면 고양이”라고 말로 설명하는 것이다. 그런데 스코티시폴드는 귀가 접혀 있고, 다리가 셋인 고양이도 있다. 예외를 만날 때마다 설명을 덧붙여야 한다. 머신러닝은 고양이 사진 수천 장을 그냥 보여주는 것이다. 아이는 규칙을 말로 못 해도 고양이를 알아본다.


“기계가 배울 수 있는가”라는 질문은 컴퓨터가 등장하자마자 나왔다.

  • 1950년: 앨런 튜링(Alan Turing)이 “기계가 생각할 수 있는가”를 묻는 대신 “기계가 사람과 구별되지 않게 대화할 수 있는가”로 질문을 바꿨다(튜링 테스트). 답할 수 없는 철학적 질문을 측정 가능한 문제로 재정의한 것이 출발점이었다.
  • 1959년: 아서 새뮤얼(Arthur Samuel)이 체커 게임 프로그램을 만들며 “machine learning”이라는 용어를 처음 썼다. 이 프로그램은 자기 자신과 수만 판을 두면서 실력이 늘었고, 결국 만든 사람보다 잘 두게 되었다. “프로그램이 프로그래머를 이길 수 있다”는 것을 처음 보여준 사건이다.
  • 1997년: IBM 딥블루가 체스 세계 챔피언을 이겼다. 다만 이것은 대부분 탐색과 규칙의 승리였다.
  • 2012년: AlexNet이 ImageNet 대회에서 오류율을 26.2%에서 15.3%로 낮췄다. 사람이 특징을 설계하는 방식을 데이터에서 특징을 학습하는 방식이 압도한 전환점이었다.
  • 2022년~: ChatGPT가 등장하며 머신러닝이 연구실을 벗어나 일상 도구가 되었다.

관통하는 흐름은 하나다 — 사람이 규칙을 적는 영역이 줄고, 데이터가 규칙을 정하는 영역이 늘어왔다.


머신러닝은 만능이 아니다. 아래 조건에 해당할수록 유리하다.

조건설명예시
규칙이 너무 많다사람이 다 적을 수 없음사진에서 고양이 찾기
규칙이 계속 변한다적어놔도 금방 낡음스팸 수법, 사기 패턴
규칙을 말로 못 한다사람은 하는데 설명은 못 함얼굴 인식, 음성 인식
데이터가 많다사례가 충분히 쌓여 있음클릭 로그, 거래 기록

반대로 규칙이 10개 이내로 명확하고 잘 안 변한다면 머신러닝은 과잉이다. 자세한 판단 기준은 ML을 쓰지 말아야 할 때를 보라.

2. 머신러닝이 하는 일과 못 하는 일

섹션 제목: “2. 머신러닝이 하는 일과 못 하는 일”
할 수 있는 것할 수 없는 것
과거 데이터의 패턴을 찾아 재현데이터에 없는 것을 발명
통계적으로 가장 그럴듯한 답 제시정답을 보증
상관관계 학습인과관계 판단
사람보다 빠르고 일관되게 반복왜 그런지 설명(모델에 따라)

“상관관계는 배우지만 인과관계는 모른다”는 점이 특히 중요하다. 아이스크림 판매량과 익사 사고는 함께 늘지만, 아이스크림이 익사를 일으키는 것은 아니다(둘 다 여름 때문이다). 모델은 이 둘을 구분하지 못한다.

스팸 필터를 두 방식으로 만든다고 하자. 학습에 쓸 메일은 5통뿐이다.

메일실제
”무료 쿠폰 지금 클릭”스팸
”돈 버는 법 클릭”스팸
”회의 자료 첨부합니다”정상
”내일 일정 공유드립니다”정상
”무료 세미나 안내드립니다”정상

규칙 기반: 사람이 이렇게 적는다 — “‘무료’나 ‘클릭’이 있으면 스팸”. 앞 4통은 맞히지만 마지막 “무료 세미나 안내”를 스팸으로 잘못 판정한다. 규칙을 고치려면 예외를 계속 덧붙여야 한다.

학습 기반: 단어마다 “스팸에서 몇 번, 정상에서 몇 번 나왔나”를 세어 점수를 매긴다. ‘무료’는 스팸 1회·정상 1회로 중립이 되고, ‘안내드립니다’는 정상 쪽으로 기운다. 그 결과 5통을 모두 맞힌다.

핵심은 사람이 “‘무료’는 애매하다”고 알려주지 않았는데도 데이터가 스스로 그렇게 정했다는 점이다.


머신러닝이 실패하는 전형적인 방식

섹션 제목: “머신러닝이 실패하는 전형적인 방식”

머신러닝은 데이터를 그대로 반영한다. 그래서 데이터가 이상하면 모델도 이상해진다.

  • 데이터가 편향되어 있으면 모델도 편향된다. 과거 채용이 남성 중심이었다면 모델은 그 패턴을 “성공 패턴”으로 학습한다.
  • 데이터가 부족하면 우연한 잡음을 규칙으로 착각한다.
  • 세상이 변하면 과거 데이터로 배운 규칙이 낡는다. 코로나 이전 데이터로 학습한 수요 예측 모델은 2020년에 무너졌다.

이 때문에 실무의 대부분은 모델링이 아니라 데이터를 다루는 일이다.


상황권장
규칙 10개 이내, 잘 안 변함규칙 기반
규칙이 수백 개거나 계속 변함머신러닝
결정 근거를 법적으로 설명해야 함규칙 기반 또는 해석 가능한 ML(선형·트리)
100% 정확도가 필수머신러닝 부적합 (확률적이므로)
데이터가 수십 건뿐머신러닝 부적합

”AI를 도입하라”는 지시로 시작된 프로젝트

섹션 제목: “”AI를 도입하라”는 지시로 시작된 프로젝트”

한 유통 회사가 경영진의 지시로 수요 예측 AI 프로젝트를 시작했다. 6개월간 데이터 과학자 3명이 투입되어 딥러닝 모델을 만들었고, 예측 정확도(MAPE 기준)는 18%가 나왔다.

문제는 프로젝트 후반에야 드러났다. 현장에서 20년간 써온 “지난 4주 평균 × 계절 계수”라는 엑셀 수식의 오차가 16%였던 것이다. 6개월과 수억 원을 들여 만든 모델이 기존 엑셀보다 나빴다.

원인은 단순했다 — 베이스라인을 먼저 재보지 않았다. 이 회사의 수요는 계절성이 지배적이라 단순 평균으로도 충분히 설명되었고, 딥러닝이 추가로 학습할 패턴이 거의 없었다.

이 사례의 교훈은 “머신러닝이 나쁘다”가 아니다. 머신러닝을 쓸지 말지는 데이터를 보기 전에는 알 수 없고, 가장 단순한 방법의 성능을 먼저 재봐야 알 수 있다는 것이다.


# 규칙 기반 vs 학습 기반 - 같은 문제를 두 방식으로 풀어 본다
emails = [("무료 쿠폰 지금 클릭", 1), ("돈 버는 법 클릭", 1),
("회의 자료 첨부합니다", 0), ("내일 일정 공유드립니다", 0),
("무료 세미나 안내드립니다", 0)]
# 방식 1: 사람이 규칙을 직접 쓴다
def rule_based(text):
return 1 if "무료" in text or "클릭" in text else 0
# 방식 2: 데이터에서 단어별 스팸 경향을 "학습"한다
from collections import defaultdict
score = defaultdict(lambda: [0, 0]) # 단어 -> [스팸 등장, 정상 등장]
for text, label in emails:
for w in text.split():
score[w][label] += 1
def learned(text):
s = sum(score[w][1] - score[w][0] for w in text.split() if w in score)
return 1 if s > 0 else 0
print(f"{'메일':22} {'정답':>4} {'규칙':>4} {'학습':>4}")
for text, label in emails:
print(f"{text:22} {label:>4} {rule_based(text):>4} {learned(text):>4}")
# 실행 결과:
# 메일 정답 규칙 학습
# 무료 쿠폰 지금 클릭 1 1 1
# 돈 버는 법 클릭 1 1 1
# 회의 자료 첨부합니다 0 0 0
# 내일 일정 공유드립니다 0 0 0
# 무료 세미나 안내드립니다 0 1 0 <- 규칙만 틀렸다

규칙 기반은 “무료 세미나 안내”를 스팸으로 잘못 판정하지만, 학습 기반은 맞힌다. 사람이 “‘무료’는 애매한 단어”라고 알려주지 않았는데도, 데이터에서 ‘무료’가 스팸·정상 양쪽에 등장하는 것을 보고 스스로 중립으로 판단한 것이다. 이것이 “규칙을 학습한다”의 실제 의미다.


  1. “머신러닝은 AI고, AI는 사람처럼 생각한다” — 머신러닝은 과거 데이터의 통계적 패턴을 재현하는 도구다. 이해하거나 의도를 갖지 않는다.

  2. “데이터만 많으면 된다” — 양보다 품질과 대표성이 중요하다. 편향된 데이터 100만 건보다 잘 정제된 1만 건이 나은 경우가 흔하다.

  3. “모델이 좋으면 성능이 좋다” — 실무 성능의 대부분은 데이터와 특성에서 나온다. 모델 교체로 얻는 이득은 대체로 그보다 작다.

  4. “정확도 95%면 훌륭하다” — 100명 중 환자가 5명인 문제에서 “전원 정상”이라고 하면 정확도 95%다. 무엇을 재는 숫자인지가 먼저다. 혼동 행렬 참조.

  5. “모델이 X와 Y의 관계를 찾았으니 X가 원인이다” — 모델은 상관관계만 배운다. 인과 판단에는 실험(A/B 테스트)이나 인과 추론 기법이 필요하다.


1. 전통적 프로그래밍과 머신러닝은 입력과 출력이 어떻게 다른가?

정답 보기

전통적 프로그래밍은 데이터 + 규칙 → 답이고, 머신러닝은 데이터 + 답 → 규칙이다. 즉 머신러닝은 “답을 아는 사례”를 주고 규칙을 역으로 알아내게 하는 방식이다.

2. 규칙이 명확하고 10개 이내인 문제에 머신러닝을 쓰면 무엇이 문제인가?

정답 보기

비용만 늘고 얻는 것이 없다. 개발·데이터 수집·모니터링·재학습 비용이 계속 드는데, 규칙 기반이 더 정확하고 설명 가능하며 유지보수도 쉽다. 게다가 규칙 기반은 데이터가 필요 없다.

3. “모델이 아이스크림 판매량으로 익사 사고를 예측한다”는 것이 왜 위험한가?

정답 보기

모델은 상관관계만 학습했다. 둘 다 여름에 늘어나는 공통 원인(기온)이 있을 뿐, 아이스크림이 익사를 일으키지 않는다. 예측에는 써도 되지만 “아이스크림을 줄이면 익사가 준다”는 개입 판단에 쓰면 안 된다.