[머신러닝] 머신러닝 시스템의 종류 정리
Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow (Aurélien Géron) Chapter 1. The Machine Learning Landscape (p.38~52) 내용을 정리한 글이다.
책이 바뀌었다
학부연구생 세미나에서 Data Science from Scratch를 완독한 뒤, 다음 책으로 넘어왔다. 바로 Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow, 줄여서 HOML이다.
전 책이 "밑바닥부터 구현하며 원리를 이해하는 것"에 초점을 맞췄다면, HOML은 그 원리를 토대로 실전에서 어떻게 쓰는지를 더 깊이 다룬다. Scikit-Learn, Keras, TensorFlow 같은 현업에서 실제로 쓰이는 라이브러리를 직접 활용하며 배우는 구성이라 체감 난이도나 실용성이 한 단계 올라간 느낌이다.
이번 발표는 Chapter 1의 후반부, 머신러닝 시스템을 어떻게 분류하는지에 대한 내용이다.
머신러닝 시스템의 분류 기준
머신러닝 알고리즘은 크게 세 가지 기준으로 나눌 수 있다.
- 사람이 얼마나 개입하는가 → 지도 / 비지도 / 반지도 / 자기지도 / 강화학습
- 데이터를 한 번에 배우는가, 조금씩 배우는가 → 배치 학습 vs 온라인 학습
- 비교해서 예측하는가, 규칙을 찾아서 예측하는가 → 인스턴스 기반 vs 모델 기반
이 기준들은 서로 독립적이기 때문에 여러 개가 동시에 적용될 수 있다.
지도 학습 (Supervised Learning)
학습 데이터에 정답(라벨)이 함께 포함된 방식이다. 알고리즘은 입력과 정답의 관계를 학습하고, 새로운 입력에 대해 예측을 수행한다.
크게 두 가지 문제 유형으로 나뉜다.
분류(Classification): 정해진 카테고리 중 하나로 분류한다.
- 예) 스팸 메일인지 아닌지 판단
회귀(Regression): 연속된 숫자값을 예측한다.
- 예) 이 메일이 스팸일 확률이 20%
두 유형의 경계가 항상 명확한 건 아니다. 로지스틱 회귀는 이름에 "회귀"가 붙지만 실제로는 분류 문제에 주로 사용한다.
대표적인 지도 학습 알고리즘으로는 k-NN, 선형 회귀, 로지스틱 회귀, SVM, 결정 트리, 랜덤 포레스트, 신경망 등이 있다.
비지도 학습 (Unsupervised Learning)
학습 데이터에 정답(라벨)이 없다. 알고리즘이 스스로 데이터에서 패턴이나 구조를 찾아낸다.
클러스터링
비슷한 데이터끼리 자동으로 그룹을 묶는다. 블로그 방문자 데이터를 분석하면 "만화책을 좋아하는 10대 40%", "주말에만 오는 30대 20%"처럼 스스로 그룹을 나눌 수 있다. 계층적 클러스터링을 쓰면 큰 그룹 안에서 다시 작은 하위 그룹으로 세분화할 수도 있다.
시각화와 차원 축소
고차원 데이터를 2D나 3D로 표현하는 알고리즘이다. 데이터의 분포와 패턴을 눈으로 확인할 수 있다.
- 차원 축소(Dimensionality Reduction): 중요한 정보는 남기면서 불필요한 복잡성을 줄인다. 다른 알고리즘 적용 전에 미리 차원을 줄이면 속도와 성능 모두 향상된다.
- 특징 추출(Feature Extraction): 여러 특징을 합쳐 하나의 의미 있는 특징으로 만든다.
이상치 탐지 vs 새로움 탐지
두 개념이 비슷해 보이지만 차이가 있다.
- 이상치 탐지(Anomaly Detection): 데이터 중에서 희귀하거나 비정상적인 것을 걸러낸다. 전체 개 사진 중 치와와가 1%라면, 치와와를 "이상한 것"으로 분류할 수 있다.
- 새로움 탐지(Novelty Detection): 학습 데이터와 "전혀 다른" 새 데이터가 들어왔을 때 감지한다. 학습 때 치와와를 충분히 봤다면 새 치와와 사진은 이상하게 보지 않는다.
추가로 **연관 규칙 학습(Association Rule Learning)**도 비지도 학습의 한 종류다. 대규모 데이터에서 서로 관련 있는 속성들을 찾아내는 방법이다. 대표적인 예가 "기저귀를 산 사람은 맥주도 함께 산다"는 식의 마트 구매 패턴 분석이다.
반지도 학습 (Semi-supervised Learning)
라벨이 있는 데이터와 라벨이 없는 데이터를 섞어서 사용한다. 데이터에 일일이 라벨을 붙이는 건 시간과 비용이 많이 들기 때문에, 현실에서는 라벨 없는 데이터가 훨씬 많다.
보통 이렇게 작동한다.
- 클러스터링으로 라벨 없는 데이터를 비슷한 것끼리 묶는다.
- 묶인 그룹에 라벨을 붙여준다.
- 모든 데이터에 라벨이 생기면 일반 지도 학습을 적용한다.
라벨이 일부만 있는 상황에서 라벨 있는 데이터로만 학습할 때보다 성능이 크게 향상되는 경우가 많다.
자기지도 학습 (Self-supervised Learning)
라벨이 전혀 없는 데이터에서 스스로 라벨을 생성해 지도 학습을 수행한다.
고양이 사진의 일부를 가려서 원래 모습을 복원하도록 학습시킨다고 하자. 이때 "가려진 사진"이 입력, "원본 사진"이 라벨 역할을 한다. 라벨을 사람이 붙이지 않고 데이터 자체에서 만들어낸 것이다.
이렇게 학습된 모델은 단순히 이미지 복원만 잘하는 게 아니라, 동물의 특징 자체를 깊게 이해하게 된다. 그래서 조금만 손봐서 "이 동물이 무슨 종인지 분류하기" 같은 다른 문제에 재활용할 수 있다. 이것을 **전이 학습(Transfer Learning)**이라고 한다.
강화학습 (Reinforcement Learning)
지금까지 나온 학습 방식과는 구조 자체가 다르다.
- Agent: 학습을 수행하는 주체
- Environment: Agent가 상호작용하는 환경
- Action: Agent가 선택하는 행동
- Reward / Penalty: 행동에 대한 피드백
Agent는 환경을 관찰하고 → 행동을 선택하고 → 보상 또는 벌점을 받으며 → 보상을 최대화하는 **정책(Policy)**을 스스로 찾아나간다.
알파고가 대표적인 예다. 알파고는 수천만 번의 자가 대국을 통해 승률을 높이는 정책을 학습했다. 실제 이세돌과의 대국에서는 더 이상 학습하지 않고 기존에 학습된 정책만 적용했다. 이처럼 학습을 멈추고 적용만 하는 것을 오프라인 러닝(off-policy) 단계라고 한다.
배치 학습 vs 온라인 학습
배치 학습 (Batch Learning)
모든 데이터를 한꺼번에 학습한다. 학습 후에는 모델을 그대로 사용하고, 새 데이터에 적응하려면 처음부터 다시 전체 데이터로 재학습해야 한다.
문제는 현실 세계의 데이터는 계속 변한다는 것이다. 이를 데이터 드리프트(data drift) 또는 **모델 부패(model rot)**라고 한다. 고양이/강아지 분류 모델도 고양이가 변해서가 아니라, 카메라 품질과 사진 스타일이 바뀌면서 성능이 떨어질 수 있다.
온라인 학습 (Online Learning)
데이터를 하나씩(또는 소그룹 단위로) 순서대로 넣어 점진적으로 학습한다. 새 데이터가 들어올 때마다 바로 반영할 수 있다.
메모리에 모든 데이터를 올릴 수 없을 만큼 거대한 데이터셋에도 활용할 수 있다. 데이터 일부만 메모리에 올려 학습하고, 반복하면서 전체를 학습하는 방식을 외부 코어 학습(Out-of-core Learning)이라고 한다.
핵심 파라미터는 학습률(Learning Rate)이다.
학습률특징
| 높음 | 새 데이터에 빠르게 적응, 오래된 데이터는 빨리 잊음 |
| 낮음 | 변화에 둔감하지만 노이즈와 이상치에 강함 |
온라인 학습의 주요 위험은 엉터리 데이터(나쁜 센서, 악의적 입력 등)가 들어오면 모델 성능이 급격히 떨어질 수 있다는 점이다. 실시간 서비스에서 이런 상황이 발생하면 사용자가 즉시 불편함을 느끼므로 데이터 품질 모니터링이 필수적이다.
마무리
분류 기준종류
| 사람 개입 | 지도 / 비지도 / 반지도 / 자기지도 / 강화학습 |
| 학습 시점 | 배치(한 번에) vs 온라인(점진적) |
| 핵심 아이디어 | 각 방식은 독립적이며 동시에 적용 가능 |
Data Science from Scratch에서 직접 구현했던 알고리즘들(k-NN, 선형 회귀, 로지스틱 회귀, 신경망 등)이 여기서 지도 학습의 예시로 다시 등장한다. 전 책에서 원리를 이해했다면, HOML에서는 그 원리가 실제로 어떤 맥락에서 쓰이는지 더 넓게 보이기 시작한다.
'AI > 학부연구생' 카테고리의 다른 글
| [세미나 발표] Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow Ch.2 (0) | 2026.03.20 |
|---|---|
| [세미나 발표] Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow CHAPTER 1.2 (0) | 2026.03.20 |
| [세미나 발표] Data Science from Scratch Ch.24 (0) | 2026.03.20 |
| [세미나 발표] Data Science from Scratch Ch.18 (0) | 2026.03.20 |
| [세미나 발표] Data Science from Scratch Ch.16 (0) | 2026.03.20 |