전통적인 프로그래밍 vs 머신러닝
보통 프로그램은 사람이 규칙을 직접 적어요. "이메일에 '무료'와 '당첨'이 같이 들어있으면 스팸" 같은 식이죠. 그런데 스팸을 거르는 규칙을 사람이 다 적으려면 끝이 없어요. 단어를 바꾸고, 띄어쓰기를 비틀고, 새로운 수법이 계속 나오니까요.
머신러닝은 발상을 뒤집어요. 규칙을 직접 적는 대신, 스팸인 메일과 아닌 메일을 잔뜩 보여주고 규칙을 스스로 찾게 합니다.
머신러닝: 데이터 + 답 → 규칙(모델)
핵심은 이거예요. 머신러닝은 "예시(데이터와 정답)로부터 규칙을 뽑아내는 기술"이에요. 그렇게 뽑아낸 규칙 덩어리를 모델(model)이라고 부릅니다.
좀 더 정확한 정의
널리 쓰이는 정의가 하나 있어요. "어떤 작업(Task)을 경험(Experience)을 통해 더 잘하게 되고, 그 잘함을 성능 지표(Performance)로 잴 수 있으면, 그 프로그램은 학습한다." (Tom Mitchell)
스팸 필터로 풀어보면 이래요.
- 작업 T: 메일이 스팸인지 아닌지 분류하기
- 경험 E: 사람이 스팸/정상으로 표시해둔 메일 모음
- 성능 P: 새 메일을 맞게 분류한 비율(정확도)
경험(데이터)이 쌓일수록 성능이 오르면, 그게 바로 "배운다"는 거예요. 이 세 가지를 항상 분명히 정하는 습관이 중요해요. 무엇을(T), 무엇으로(E), 어떻게 잘하는지 잴까(P).
머신러닝의 세 갈래
"정답을 주느냐, 안 주느냐"에 따라 크게 셋으로 나뉘어요.
| 종류 | 주는 것 | 하는 일 | 예시 |
|---|---|---|---|
| 지도학습 Supervised | 입력 + 정답(label) | 입력→정답 관계 배우기 | 스팸 분류, 집값 예측, 사진 속 물체 탐지 |
| 비지도학습 Unsupervised | 입력만 (정답 없음) | 숨은 구조·패턴 찾기 | 고객 군집화, 차원 축소, 이상치 탐지 |
| 강화학습 Reinforcement | 행동에 대한 보상/벌 | 시행착오로 좋은 행동 배우기 | 게임 AI, 로봇 보행, 바둑(알파고) |
지도학습은 다시 둘로 나뉘어요. 정답이 숫자면 회귀(regression)(예: 집값 몇 원), 정답이 종류면 분류(classification)(예: 스팸/정상)예요. 이 교재의 대부분과 YOLO는 지도학습이에요.
꼭 알아야 할 단어들
- 샘플/데이터 포인트(sample): 예시 하나. 메일 한 통, 사진 한 장.
- 특징(feature): 그 예시를 설명하는 입력 값들. 집이라면 평수·방 개수·역까지 거리. 보통 x로 씀.
- 레이블/타깃(label, target): 맞히려는 정답. 보통 y로 씀.
- 모델(model): 입력을 받아 예측을 내놓는 함수. 안에 조절 가능한 파라미터(parameter)(가중치)가 들어있어요.
- 학습/훈련(training): 데이터를 보며 파라미터를 좋은 값으로 맞춰가는 과정.
- 예측/추론(inference): 다 만든 모델로 새 입력에 답을 내는 것.
한 문장으로 묶으면, "모델은 파라미터를 가진 함수이고, 학습은 그 파라미터를 데이터에 맞게 조절하는 일"이에요. 다음 데모가 이걸 손으로 보여줘요.
모델은 "조절 가능한 규칙"이다
아래 점들은 두 종류(빨강/파랑)예요. 우리가 만들 모델은 아주 단순해요. 직선 하나를 긋고, 한쪽은 빨강 다른 쪽은 파랑이라고 예측하는 거예요. 직선의 기울기와 위치가 이 모델의 파라미터죠. 슬라이더로 직접 조절하면서 정확도를 최대로 올려보세요.
직선 분류기 손으로 맞추기
직접 맞추기도 은근 귀찮죠? 머신러닝의 진짜 매력은 이 조절을 사람 대신 컴퓨터가 자동으로 한다는 거예요. 어떻게 자동으로 최적의 직선을 찾는지가 바로 2장(경사하강법)의 주제예요.
가장 중요한 목표: 일반화(generalization)
머신러닝의 진짜 목표는 "본 데이터를 잘 맞히는 것"이 아니라 "처음 보는 데이터를 잘 맞히는 것"이에요. 시험 공부에 비유하면, 기출문제 답만 외운 학생이 아니라 원리를 이해해 새 문제도 푸는 학생이 되는 거죠.
그래서 데이터를 처음부터 나눠 써요.
- 훈련 세트(train): 공부용. 모델이 보고 배우는 데이터.
- 검증 세트(validation): 중간 점검용. 설정을 고를 때 참고.
- 시험 세트(test): 최종 평가용. 학습 동안 절대 안 보여줌.
머신러닝 프로젝트의 전체 흐름
어떤 문제든 대략 이 순서를 밟아요.
- 문제 정의: 작업 T, 경험 E, 성능 P를 분명히.
- 데이터: 모으고, 정리하고, 훈련/검증/시험으로 나누기. 보통 여기에 시간이 제일 많이 들어요.
- 학습: 모델을 골라 파라미터를 맞추기(2~3장).
- 평가: 시험 세트로 진짜 실력 측정(정확도, 정밀도/재현율 등).
- 개선: 더 좋은 특징, 더 많은 데이터, 다른 모델로 반복.
- 배포: 실제로 쓰기. (예: 모델을 라즈베리파이에 올리기)