머신러닝이란 무엇인가: 지도학습, 비지도학습, 강화학습 한눈에 보기
“AI 공부해야 하는데 어디서부터 시작하지?”
막연하게 시작해서 검색하다 보면 금세 딥러닝, 트랜스포머, LLM 같은 단어들이 튀어나온다. 정작 머신러닝(Machine Learning) 이 뭔지, 지도학습과 비지도학습이 어떻게 다른지는 누군가 제대로 설명해주지 않는다.
이 글은 머신러닝 시리즈의 첫 번째 글이다. 화려한 알고리즘 전에, 머신러닝이 기존 프로그래밍과 근본적으로 어떻게 다른지부터 짚고 넘어간다. 세 가지 학습 패러다임 — 지도학습, 비지도학습, 강화학습 — 의 개념과 차이를 이해하고 나면, 이후 어떤 알고리즘을 배우든 “이게 왜 여기에 쓰이는지”가 보이기 시작한다.
머신러닝이란?
전통적인 프로그래밍과 머신러닝의 차이를 한 문장으로 표현하면 이렇다.
전통적 프로그래밍: 데이터 + 규칙 → 결과 머신러닝: 데이터 + 결과 → 규칙
스팸 메일 필터를 예로 들어보자. 전통적인 방식이라면 개발자가 직접 규칙을 작성한다. “제목에 ‘무료’가 포함되면 스팸”, “발신자가 모르는 도메인이면 스팸” 같은 식으로. 처음엔 잘 동작하다가도 스패머들이 규칙을 우회하는 순간 다시 규칙을 추가해야 한다. 끝이 없다.
머신러닝은 다르다. “스팸입니다”, “정상입니다”라고 레이블된 수천 개의 메일 데이터를 보여주면, 모델이 스스로 패턴을 찾아낸다. 개발자가 규칙을 명시하지 않아도 된다.
전통적 프로그래밍:
Input: 데이터 (메일 본문)
Input: 규칙 (if "무료" in 제목 → 스팸)
Output: 결과 (스팸 여부)
머신러닝:
Input: 데이터 (메일 본문)
Input: 결과 (스팸/정상 레이블)
Output: 규칙 (모델이 스스로 학습한 패턴)이 관점에서 보면 머신러닝의 핵심은 “데이터로부터 패턴을 학습하는 것” 이다. Arthur Samuel이 1959년에 내린 정의 — “명시적으로 프로그래밍하지 않아도 스스로 학습하는 능력을 컴퓨터에 부여하는 연구 분야” — 가 지금도 유효한 이유다.
그렇다면 머신러닝은 어떻게 “학습”할까? 크게 세 가지 패러다임으로 나뉜다.
| 패러다임 | 핵심 아이디어 | 데이터 형태 |
|---|---|---|
| 지도학습 (Supervised) | 정답이 있는 데이터로 학습 | 입력 + 레이블(정답) |
| 비지도학습 (Unsupervised) | 정답 없이 패턴을 스스로 발견 | 입력만 |
| 강화학습 (Reinforcement) | 보상 신호로 최적 행동을 학습 | 상태 + 행동 + 보상 |
지도학습 (Supervised Learning)
지도학습은 머신러닝에서 가장 많이 쓰이는 패러다임이다. 정답(레이블)이 붙어 있는 데이터로 모델을 훈련시킨다.
학습 방식을 비유하자면 과외 선생님과 학생의 관계다. 선생님이 문제와 정답을 함께 보여주면서 가르친다. “이 입력값에 대한 정답은 이거야”를 반복하다 보면, 모델이 입력과 출력 사이의 관계를 학습한다.
지도학습에서 "지도(supervised)"란 레이블이 붙은 데이터가 모델의 학습을 "감독(supervise)"한다는 의미다. 레이블 없는 데이터로는 지도학습이 불가능하다.
지도학습은 다시 두 가지로 나뉜다.
회귀(Regression): 연속적인 숫자 값을 예측한다.
- 집 면적, 방 개수, 위치를 보고 집값 예측
- 기온, 습도를 보고 내일 온도 예측
분류(Classification): 데이터를 카테고리로 구분한다.
- 메일이 스팸인지 아닌지 분류
- 사진 속 동물이 고양이인지 개인지 분류
코드로 보면 훨씬 직관적이다. scikit-learn으로 집값 예측 모델을 만드는 예시다.
from sklearn.linear_model import LinearRegression
import numpy as np
# 훈련 데이터: 면적(m²)과 집값(만원)
X_train = np.array([[50], [70], [90], [110], [130]])
y_train = np.array([25000, 33000, 41000, 50000, 59000])
# 모델 학습
model = LinearRegression()
model.fit(X_train, y_train)
# 80m² 집값 예측
prediction = model.predict([[80]])
print(f"예측 집값: {prediction[0]:,.0f}만원")
# 예측 집값: 37,200만원fit() 한 줄로 모델이 데이터의 패턴을 학습한다. 면적이 늘어날수록 집값이 어떻게 변하는지 스스로 파악하는 것이다. 이 시리즈에서는 선형 회귀부터 시작해서 의사결정 트리, XGBoost까지 지도학습 알고리즘을 차례로 다룬다.
비지도학습 (Unsupervised Learning)
비지도학습은 레이블 없이 데이터 자체의 구조와 패턴을 발견한다. 정답이 없는 상태에서 “비슷한 것들끼리 모아봐” 혹은 “이 데이터의 핵심 구조가 뭐야?”를 묻는 방식이다.
현실에서는 레이블 없는 데이터가 훨씬 많다. 유저 행동 로그, 센서 데이터, 의료 이미지 — 이런 데이터에 일일이 사람이 레이블을 붙이는 건 비용이 너무 크다. 비지도학습이 강력한 이유다.
대표적인 세 가지 활용 영역이 있다.
클러스터링(Clustering): 비슷한 데이터끼리 묶는다.
- 고객 구매 패턴을 분석해서 유사한 고객군으로 분류 (마케팅 타겟팅)
- 뉴스 기사를 자동으로 주제별로 묶기
차원 축소(Dimensionality Reduction): 데이터의 핵심 특성만 추출한다.
- 수백 개의 특성을 가진 데이터를 2-3차원으로 압축해서 시각화
- 노이즈를 제거하고 중요한 정보만 남기기
이상 탐지(Anomaly Detection): 정상 패턴에서 벗어난 데이터를 찾는다.
- 신용카드 부정 사용 감지
- 공장 장비의 이상 징후 탐지
아래는 K-Means로 고객 데이터를 클러스터링하는 간단한 예시다.
from sklearn.cluster import KMeans
import numpy as np
# 고객 데이터: [월 구매 횟수, 평균 구매 금액(만원)]
X = np.array([
[1, 5], [2, 7], [1, 6], # 저빈도 저단가
[10, 50], [12, 60], [9, 55], # 고빈도 고단가
[15, 8], [14, 10], [16, 9], # 고빈도 저단가
])
# 3개 그룹으로 클러스터링
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)
print(kmeans.labels_)
# [0 0 0 1 1 1 2 2 2] ← 각 고객이 어느 그룹인지레이블을 한 번도 알려주지 않았는데, 모델이 스스로 세 그룹을 찾아냈다. 이 그룹을 보면 “이 고객군은 VIP, 이 고객군은 가격 민감 유저”처럼 비즈니스 인사이트를 도출할 수 있다.
비지도학습은 "탐색적 데이터 분석(EDA)"과 찰떡궁합이다. 어떤 패턴이 있는지 모르는 상태에서 데이터를 이해하는 첫 단계로 자주 쓰인다.
강화학습 (Reinforcement Learning)
강화학습은 앞의 두 패러다임과 결이 다르다. 에이전트(Agent)가 환경(Environment)과 상호작용하며 보상(Reward)을 최대화하는 방향으로 행동 전략을 학습한다.
아이가 자전거를 배우는 과정을 생각해보자. 처음엔 어떻게 페달을 밟고 균형을 잡아야 하는지 모른다. 넘어지면(페널티), 잘 달리면(보상) — 이런 피드백을 반복하면서 자연스럽게 자전거 타는 법을 익힌다. 명시적인 규칙도 없고, 정답 레이블도 없다.
강화학습의 핵심 요소:
Agent (에이전트)
│ 행동(Action)
▼
Environment (환경)
│ 상태(State) + 보상(Reward)
▼
Agent (학습 후 다음 행동 결정)강화학습이 빛을 발하는 영역은 명확하다.
- 게임: DeepMind의 AlphaGo, OpenAI Five (Dota 2). 체스나 바둑처럼 수많은 경우의 수가 있는 게임에서 인간을 압도하는 전략을 스스로 학습
- 로보틱스: 로봇 팔이 물체를 집는 방법을 시행착오로 학습
- 추천 시스템: 사용자가 클릭하면 보상, 이탈하면 페널티를 주며 추천 전략 최적화
- 자율주행: 차선 유지, 장애물 회피 전략 학습
강화학습은 학습에 엄청난 시뮬레이션 비용이 든다. AlphaGo가 인간 챔피언을 이기기까지 수백만 번의 자가 대국이 필요했다. 간단한 문제라면 지도학습이나 비지도학습이 훨씬 실용적이다.
어떤 방식을 언제 쓸까?
셋 중 무엇을 선택해야 할지는 결국 “내가 가진 데이터가 어떤 형태인가” 와 “무엇을 예측/발견하고 싶은가” 로 결정된다.
| 상황 | 추천 패러다임 | 이유 |
|---|---|---|
| 레이블된 데이터 있음 + 특정 값 예측 | 지도학습 (회귀) | 정답을 학습해 새 입력에 적용 |
| 레이블된 데이터 있음 + 카테고리 분류 | 지도학습 (분류) | 정답을 학습해 새 입력에 적용 |
| 레이블 없음 + 데이터 구조 파악 | 비지도학습 (클러스터링) | 패턴을 스스로 발견 |
| 레이블 없음 + 고차원 데이터 시각화 | 비지도학습 (차원 축소) | 핵심 구조 추출 |
| 순차적 의사결정 + 환경 있음 | 강화학습 | 시행착오로 전략 최적화 |
실무에서는 지도학습이 압도적으로 많이 쓰인다. 레이블 데이터를 확보할 수 있고, 예측 목표가 명확한 경우가 대부분이기 때문이다. 비지도학습은 레이블 없는 데이터를 탐색하거나 지도학습의 전처리 단계로 활용된다. 강화학습은 게임이나 로보틱스처럼 환경과의 상호작용이 필요한 특수한 경우에 쓰인다.
- 머신러닝: 데이터로부터 규칙을 스스로 학습하는 것. 전통적 프로그래밍과 반대 방향
- 지도학습: 레이블된 데이터로 학습. 회귀(연속값 예측)와 분류(카테고리 분류)로 나뉨
- 비지도학습: 레이블 없이 데이터 자체의 패턴을 발견. 클러스터링, 차원 축소, 이상 탐지
- 강화학습: 보상 신호로 행동 전략을 최적화. 게임, 로보틱스, 순차적 의사결정
마치며
머신러닝의 큰 그림을 그려봤다. 사실 이 세 가지 구분은 공부를 시작할 때 방향을 잡는 나침반 역할이지, 실무에서 항상 명확하게 구분되지는 않는다. 준지도학습(Semi-supervised Learning)처럼 경계를 넘나드는 방식도 있고, 한 시스템 안에 여러 패러다임이 섞이기도 한다.
이 시리즈는 지도학습 알고리즘을 중심으로 진행된다. 선형 회귀, 경사하강법, 신경망, 트리 기반 모델까지 — 각 알고리즘이 어떤 문제를 어떻게 푸는지를 코드와 함께 깊이 파고들 예정이다.
다음 글에서는 머신러닝 프로젝트의 전 과정 — 데이터 수집부터 모델 배포까지 — 를 큰 그림으로 살펴본다. 어떤 알고리즘을 쓰든 반복되는 공통 워크플로우를 이해해두면, 이후 글들이 훨씬 잘 들어온다.