사전 지도학습
개념

지도학습

gabury1고친 사람 github-actions[bot]

지도학습은 정답이 붙은 예시로 프로그램을 가르칩니다. 프로그램은 예시 속 입력과 정답 사이의 관계를 스스로 찾아냅니다. 다 배운 뒤에는 처음 보는 입력에도 답을 냅니다. 스팸 메일을 걸러 내는 필터가 이렇게 만들어집니다.

쉽고 빠른 이해

지도학습은 문제와 정답을 함께 보여 줘서 프로그램을 가르치는 일입니다. 메일 수천 통에 「스팸」이나 「정상」을 적어 보여 줍니다. 다 배운 프로그램은 새 메일도 둘 중 하나로 가릅니다.

가르는 규칙을 사람이 코드로 전부 적기는 어렵습니다. 정답을 단 예시는 사람이 모을 수 있습니다. 그래서 규칙 찾기는 프로그램에 맡깁니다. 거꾸로 규칙이 분명한 일(세금 계산 등)은 그냥 코드로 짭니다.

  1. 입력마다 정답을 달아 예시를 모읍니다
  2. 프로그램이 답을 내 본 뒤 정답과 견줘 틀린 만큼 스스로를 고칩니다
  3. 다 배운 프로그램에 새 입력을 넣어 답을 받습니다

대가는 정답을 다는 품입니다. 예시마다 사람이 일일이 답을 달아야 합니다. 예시를 외우기만 한 프로그램은 새 입력 앞에서 틀리기도 합니다.

상세

수학 문제집 뒤에는 해답지가 붙어 있습니다. 학생은 한 문제를 풀 때마다 해답지와 맞춰 봅니다. 틀린 문제에서 푸는 요령을 고칩니다. 시험장에서는 해답지 없이 처음 보는 문제를 풉니다.

지도학습은 입력과 정답을 짝지은 예시로 「입력을 받아 정답을 내는 규칙」을 배우는 일입니다. 메일 본문을 받아 「스팸」이나 「정상」을 내는 규칙이 그런 규칙입니다. 집의 넓이와 위치를 받아 가격을 내는 규칙도 그렇습니다. 지도학습에서는 예시가 해답지 노릇을 합니다.

「지도」는 정답이 배움을 이끈다는 뜻입니다. 영어 이름은 supervised learning 입니다. 정답을 알려 주는 쪽을 선생님에 빗대 교사 학습이라고도 부릅니다. 지도학습은 머신러닝이 데이터에서 규칙을 얻는 여러 방식 가운데 하나입니다.

예시를 이루는 특성과 레이블

예시 하나는 입력과 정답 두 부분으로 이루어집니다. 이 소절은 집값을 맞히는 예로 두 부분을 하나씩 봅니다.

입력은 수 몇 개로 적습니다. 프로그램은 집 자체를 볼 수 없습니다. 그래서 집을 넓이나 방 수 같은 값으로 옮겨 적습니다. 이렇게 옮겨 적은 값 하나하나를 특성이라고 부릅니다.

정답은 예시마다 사람이 달아 둔 표시입니다. 이 표시를 레이블이라고 부릅니다. 집값 예에서는 그 집이 팔린 가격이 레이블입니다. 레이블이 있어야 프로그램이 자기 답이 맞았는지 알 수 있습니다.

집 세 채를 예시로 적으면 아래와 같습니다. 앞의 세 값이 특성입니다. 마지막 칸이 레이블입니다.

집 넓이(㎡) 방 수 역까지 걷는 시간(분) 팔린 가격(백만 원)
1 59 2 5 610
2 84 3 15 740
3 114 4 25 820

표의 한 줄이 예시 하나입니다. 다 배운 프로그램은 넓이·방 수·걷는 시간 세 값만 받아 가격을 내야 합니다. 마지막 칸은 배울 때만 보입니다.

규칙 대신 예시를 건네는 까닭

이 소절은 지도학습이 왜 필요한지를 손으로 쓴 숫자를 알아보는 일로 봅니다.

손글씨 숫자를 알아보는 프로그램을 짠다고 해 봅시다. 사람은 2와 7을 한눈에 가립니다. 무엇을 보고 갈랐는지를 조건문으로 옮기기는 어렵습니다. 사람마다 쓰는 모양이 달라 조건마다 예외가 붙습니다.

정답을 다는 일은 그보다 쉽습니다. 숫자 그림마다 「이건 2」·「이건 7」이라고 적기만 하면 됩니다. 지도학습은 사람에게서 규칙 대신 이 표시를 받습니다. 규칙은 프로그램이 표시가 달린 그림 수천 장에서 찾습니다.

규칙을 말로 적기 어려운 판정일수록 이 방식이 쓸모 있습니다. 거꾸로 규칙이 분명하면 지도학습이 필요 없습니다. 세금 계산은 법에 적힌 대로 코드를 짜면 됩니다.

틀린 만큼 고치는 훈련

이 소절은 프로그램이 예시에서 규칙을 얻는 과정을 봅니다. 집값 예를 계속 씁니다.

앞에서 말한 「입력을 받아 정답을 내는 규칙」을 컴퓨터가 계산할 수 있는 꼴로 적은 것이 모델입니다. 특성을 넣으면 답이 나옵니다. 프로그램이 배운다는 말은 이 모델을 고쳐 간다는 뜻입니다. 배우기 전의 모델은 엉터리 답을 냅니다.

모델 안에는 답을 좌우하는 숫자가 들어 있습니다. 집값 모델이라면 「넓이 1㎡마다 가격을 얼마 더할까」 같은 숫자입니다. 이런 숫자를 파라미터라고 부릅니다. 배운다는 것은 이 숫자들을 알맞게 맞추는 일입니다.

파라미터를 맞추는 과정을 훈련이라고 부릅니다. 학습이라고도 합니다.

틀린 정도를 수 하나로 재는 식을 손실 함수라고 부릅니다. 그 식이 낸 값이 손실입니다. 손실이 작을수록 모델의 답이 정답에 가깝습니다. 훈련은 손실을 줄이는 아래 순서를 여러 번 되풀이합니다.

flowchart TD
    A["레이블이 달린 예시"] --> B["모델이 답을 낸다"]
    B --> C["레이블과 견줘 손실을 잰다"]
    C --> D["손실이 줄도록 파라미터를 고친다"]
    D -->|되풀이| B
    D -->|손실이 더 줄지 않으면| E["훈련이 끝난 모델"]

모델이 예시를 받아 낸 가격을 레이블과 견줘 얼마나 틀렸는지 잽니다. 틀린 정도가 줄어드는 쪽으로 파라미터를 조금 고칩니다. 이 순서를 예시 전체에 걸쳐 몇 번이고 되풀이합니다. 손실이 더 줄지 않으면 되풀이를 멈추고, 그때의 모델이 훈련이 끝난 모델입니다.

집 한 채에서 손실을 재 보면 아래와 같습니다. 가격 차를 제곱하는 식을 썼습니다.

Python
y = 740          # 레이블
p = 690          # 모델이 낸 가격
p - y            # -50
(p - y) ** 2     # 2500

제곱을 하면 부호가 사라집니다. 모자란 답이든 넘친 답이든 같은 크기로 칩니다. 크게 틀린 답일수록 손실이 훨씬 커집니다. 이 값을 예시 전체에서 평균 낸 것이 평균 제곱 오차입니다.

파라미터를 고칠 방향은 계산으로 정합니다. 파라미터를 조금 움직였을 때 손실이 늘어나는지 줄어드는지를 구합니다. 그런 다음 줄어드는 쪽으로 한 발씩 옮깁니다. 이 방법을 경사 하강법이라고 부릅니다.

훈련 뒤의 예측

훈련이 끝나면 파라미터가 고정된 모델이 남습니다. 이 모델에 새 입력을 넣어 답을 받는 일을 예측이라고 부릅니다. 새 입력에는 레이블이 없습니다. 레이블을 모르니까 모델에 묻는 것입니다.

두 단계는 도는 횟수가 다릅니다. 훈련은 서비스에 내놓기 전에 끝냅니다. 안에서 순서를 여러 번 되풀이해도 바깥에서 보면 한 차례 작업입니다. 예측은 입력이 올 때마다 돕니다.

모델을 서버에 올려 두고 요청마다 예측을 돌리는 일을 모델 서빙이라고 합니다. 이때 서버는 훈련을 다시 하지 않습니다. 고정된 파라미터로 답만 냅니다.

답의 모양으로 가르는 분류와 회귀

지도학습이 푸는 문제는 정답이 어떻게 생겼느냐로 둘로 나뉩니다.

정답이 정해진 목록 가운데 하나면 분류입니다. 「스팸」과 「정상」처럼 미리 정해 둔 갈래 가운데 하나를 고릅니다. 갈래를 영어로 클래스(class)라고 합니다.

정답이 연속된 수면 회귀입니다. 집값은 610 도 615 도 답이 될 수 있습니다. 앞에서 본 제곱 차 손실은 회귀에서 쓰는 식입니다.

문제 정답의 모양 보기 틀린 정도를 재는 법
분류 정해진 갈래 가운데 하나 이 메일은 스팸인가 갈래를 맞혔나 틀렸나
회귀 연속된 수 이 집은 얼마에 팔릴까 정답과 얼마나 떨어졌나

같은 집을 두고도 묻는 것에 따라 문제가 바뀝니다. 가격을 물으면 회귀입니다. 한 달 안에 팔릴지를 물으면 분류입니다.

처음 보는 데이터로 매기는 성적

지도학습의 목표는 배운 예시가 아니라 새 입력을 맞히는 것입니다. 이 소절은 그 목표를 어떻게 재는지 봅니다.

훈련에 쓰지 않은 입력에도 맞는 답을 내는 성질을 일반화라고 부릅니다. 지도학습이 노리는 것은 일반화입니다. 해답지를 외운 학생이 시험을 망치는 일을 모델에서 피하려는 것입니다.

모델이 훈련 예시에 너무 꼭 맞춰지면 일반화가 깨집니다. 예시에 우연히 섞인 잡음까지 규칙으로 배워 버리기 때문입니다. 훈련 예시만 잘 맞히는 이 현상을 과적합이라고 부릅니다.

반대로 모델이 너무 단순하면 훈련 예시조차 못 맞힙니다. 이 현상은 과소적합이라고 부릅니다.

그래서 예시를 모으면 일부를 떼어 두고 훈련에 쓰지 않습니다. 떼어 둔 예시로 시험해야 새 입력에서의 성적을 가늠할 수 있습니다. 보통 예시를 세 묶음으로 나눕니다.

묶음 쓰는 때 하는 일
훈련 데이터 훈련하는 동안 파라미터를 맞춘다
검증 세트 훈련을 여러 번 해 보는 동안 여러 설정 가운데 하나를 고른다
테스트 세트 맨 마지막에 한 번 새 입력에서의 성적을 잰다

표의 둘째 줄이 고르는 설정은 하이퍼파라미터입니다. 모델의 크기나 훈련을 몇 번 돌릴지처럼 훈련 전에 사람이 정하는 값입니다. 파라미터는 훈련이 맞춥니다. 하이퍼파라미터는 사람이 고릅니다.

테스트 세트는 끝까지 아껴 둡니다. 설정을 고를 때 테스트 세트의 성적을 들여다보면 모델이 그 묶음에 맞춰집니다. 그러면 성적이 실제보다 좋게 나옵니다. 평가에 쓸 정보가 훈련 쪽으로 새는 이런 일을 데이터 누수라고 부릅니다.

레이블을 마련하는 품

지도학습의 대가는 대부분 레이블에서 나옵니다. 이 소절은 레이블이 왜 비싼지와 레이블이 잘못되면 무엇이 깨지는지 봅니다.

레이블은 대개 사람이 답니다. 메일 수천 통을 읽어 하나씩 표시해야 합니다. 의료 영상처럼 전문가만 판정할 수 있는 데이터는 훨씬 비쌉니다. 예시에 레이블을 다는 일을 흔히 데이터 라벨링이라고 부릅니다. 라벨은 레이블과 같은 말입니다.

레이블이 틀려 있으면 모델은 틀린 답을 배웁니다. 모델은 레이블을 정답으로 믿고 맞춰 가기 때문입니다. 사람마다 판정이 갈리는 데이터에서 이런 일이 잦습니다. 틀린 레이블이 섞인 상태를 레이블 노이즈라고 부릅니다.

갈래마다 예시 수가 크게 차이 나도 문제가 됩니다. 사기 거래는 전체 거래 가운데 아주 적습니다. 모델이 모든 거래를 「정상」이라고만 답해도 대부분 맞힌 것처럼 보입니다. 이 문제를 클래스 불균형이라고 부릅니다.

비지도학습·강화학습과 가르는 선

머신러닝의 학습 방식은 무엇을 받아 배우느냐로 갈립니다.

방식 받는 것 배우는 것 보기
지도학습 레이블이 달린 예시 입력에서 정답을 내는 규칙 스팸 필터
비지도학습 레이블 없는 데이터 데이터 안의 무리나 구조 문서 군집화
준지도학습 레이블 달린 예시 조금과 레이블 없는 데이터 많이 입력에서 정답을 내는 규칙 몇 장에만 「고양이」·「개」를 단 사진 분류
자기지도학습 레이블 없는 데이터 데이터에서 만든 정답을 맞히는 규칙 문장의 다음 낱말 맞히기
강화학습 행동에 따라 받는 점수 점수를 크게 만드는 행동 바둑을 두는 프로그램

지도학습과 비지도학습을 가르는 것은 레이블이 있느냐입니다. 문서 군집화는 레이블 없이 비슷한 문서끼리 묶습니다. 묶음에 붙는 이름도 없습니다. 지도학습의 분류는 사람이 미리 정한 갈래 이름을 붙입니다.

자기지도학습은 레이블을 사람 대신 데이터에서 뽑습니다. 문장 끝 낱말을 가린 뒤 그 낱말을 정답으로 씁니다. 훈련 방식은 지도학습과 같습니다. 레이블을 다는 품을 줄이려고 나온 방식입니다.

강화학습에는 예시마다 붙은 정답이 없습니다. 행동을 한 뒤 그 결과가 얼마나 좋았는지를 점수로만 받습니다. 어느 행동이 정답이었는지 알려 주지 않는다는 점이 지도학습과 다릅니다.

지도학습에 쓰는 알고리즘

알고리즘은 모델을 어떤 모양으로 세울지와 그 모양을 예시에 어떻게 맞출지를 정합니다. 널리 쓰이는 것으로 결정 트리와 선형 회귀가 있습니다.

결정 트리는 「넓이가 80㎡보다 큰가」 같은 질문을 차례로 던져 답을 고릅니다. 선형 회귀는 특성마다 곱할 수를 정해 더한 값을 답으로 냅니다. 같은 예시를 넣어도 알고리즘에 따라 배우는 규칙의 모양이 다릅니다. 훈련에 드는 시간도 다릅니다.

관련 항목

지도학습이 속하는 상위 분류

머신러닝 · 인공지능 · 데이터 과학 · 통계

지도학습과 나란히 놓이는 학습 방식

비지도학습 · 준지도학습 · 자기지도학습 · 강화학습 · 능동 학습 · 전이 학습

지도학습이 푸는 문제

분류 · 회귀 · 이진 분류 · 다중 클래스 분류 · 순위 학습 · 객체 탐지

지도학습의 예시를 이루는 구성 요소

특성 · 특성 벡터 · 레이블 · 타깃 · 훈련 데이터 · 검증 세트 · 테스트 세트

모델을 훈련하는 데 쓰는 구성 요소

모델 · 파라미터 · 하이퍼파라미터 · 손실 함수 · 평균 제곱 오차 · 교차 엔트로피 · 경사 하강법 · 역전파 · 훈련 · 예측

지도학습에 쓰는 알고리즘

선형 회귀 · 로지스틱 회귀 · 결정 트리 · 랜덤 포레스트 · 그레이디언트 부스팅 · 최근접 이웃 · 나이브 베이즈 · 서포트 벡터 머신 · 신경망 · 딥러닝

지도학습에서 자주 나는 문제

과적합 · 과소적합 · 데이터 누수 · 클래스 불균형 · 레이블 노이즈 · 분포 이동

일반화를 지키는 기법

일반화 · 교차 검증 · 규제 · 조기 종료 · 데이터 증강

지도학습 모델의 성적을 재는 지표

정확도 · 정밀도 · 재현율 · F1 점수 · 혼동 행렬 · 평균 절대 오차

레이블을 마련하는 작업

데이터 라벨링 · 어노테이션 · 크라우드소싱 · 약한 지도학습

지도학습으로 만드는 실무 기능

스팸 필터 · 사기 탐지 · 이미지 분류 · 감성 분석 · 수요 예측 · 모델 서빙

다른 이름: supervised learning · 교사 학습 · 감독 학습