당니의 개발자 스토리
Supervised Learning Overview 본문

영화의 리뷰가 주어져 있을 때 리뷰가 긍정적인지 부정적인지에 맞히는 문제

다음에 들어갈 단어를 맞추는 문제도 지도학습에서 설명할 거임
지금까지 보여준 예시 모두 어떠한 문제가 있고 그 문제에 대한 정답이 있을 때
'문제와 정답 쌍'을 굉장히 다양하게 제공하는 형태로 학습을 진행 할게 될 것이다

x는 문제, 대부분 다차원 벡터
y는 정답, 카테고리(ex. 비행기, 고양이, ...)라고 볼 수 있음. 열 개의 카테고리 중 하나라고 하면 10가지 값을 가지는 이산형 집합에서 나오는 값이 될 수 있음.
다음날 주식을 예측하는 문제라고 하면 주식이 얼마인지를 맞추는 실수값이 될 수도 있음.
지도 학습에서 가장 중요한 점 중 하나는 이러한 정답과 입력의 pair들이 데이터로 여러개 존재 하는 상황을 가정하고,
이 데이터를 활용해서 우리가 학습하게 된다고 말할 수 있음
비지도 학습과의 가장 큰 차이점이 이 정답, 레이블의 존재 라고 말할 수 있음.

x가 문장으로 되어 있어서 벡터라는 점이 생소 할 수 있지만 다른 강의에서 거대 언어 모델(LLM)이나 Embedding을 배우면
이런 형태의 언어, 문장, 문단을 어떤 식으로 벡터로 치환할 수 있는지, 벡터도 변환 할 수 있는지에 대해서 배우게 될 거임.
이 경우에서의 정답은 긍정인 경우 1, 부정인 경우 -1로 하자 라는 약속을 하게 된다면 y는 1과 -1로 이루어져 있는 이진 집합이 된다.
우리가 이러한 텍스트 분류 문제를 학습 시킨다고 한다면
여러개의 리뷰와 그의 대응되는 리뷰에 긍정적인지 부정적인지에 대한 쌍이 주어지는 이런 데이터셋을 생각해 볼 수 있음
지도 학습 카테고리를 분류 될 수 있는 문제들에 대해서 살펴봤고
이것들을 결국 Supervised Learning, 즉 머신러닝의 일부로서 바라보게 될텐데
그렇다면 머신 러닝이라고 하는 것은 도대체 무엇이 다르고 무엇이 기존의 접근 방식과 다른 새로운 점이냐 라고 한다면,
기존에는 아까 나왔던 예시들을 대부분 전문가의 전문 지식에 의존하거나, 혹은 경험에 의존하거나, 일련의 규칙들을 파악하고자 노력했음
예를 들어 사람의 손 글씨를 판단하는 MNIST 데이터 셋이나 이미지를 분리 하는 문제에서
무엇이 비행기를 비행기로 보이게 하는가 라는 것을 엔지니어들이나 혹은 전문가들이나 이런 오브젝트(대상)들을 수학적인 틀들로 설명 하려고 하는 시도들을 전문가들이 일련의 규칙을 설명 하는 방식으로 알고리즘을 하나하나 구현 하려고 했었음.
0을 어떤 방식으로 표현하는 것이 올바른지 처럼 하나하나 하려고 했는데
이러한 방식에는 사람마다 0을 그리는 방식에도 차이가 있으므로 이러한 접근 방식에는 한계가 있음.
그래서 지도학습은 이번 강의에서 머신러닝으로 접근할 것임.
머신 러닝은 거창하게 들릴 수 있지만 결국 내가 데이터를
다양하게 입력과 그의 대응되는 레이블, 혹은 문제와 정답 쌍을 주고
스스로 알고리즘이 규칙을 파악해서 사람이 직접 규칙을 입력 하는 것이 아니라 본인 스스로 규칙을 판단 하게 도와주는
이러한 형태의 학습을 Supervised Learning 이라고 부르게 된다.

결국 머신러닝는 컴퓨터가 스스로 학습 하게 하고,
직접적으로 어떻게 하라고 지시 하지 않고 컴퓨터 혹은 알고리즘 스스로 규칙을 파악하도록 하는 것을 머신러닝 이라고 함.
Supervised Learning은 크게 두 가지로 다룰 건데
첫번째로는 Classification(분류) 과제 이다.

분류 같은 경우에는 예를 들어 우리가 고를 수 있는 정답이 정해져 있고 다음 정답이 무엇인지를 주어진 보기에서 맞히는 문제를 일종의 분류 문제라고 생각하면 된다.
이미지에서 왼쪽에 보이는 것처럼:
- 입력: 동물 사진
- 출력: airplane, automobile, bird, cat, deer, dog, frog, horse, ship, truck 중 하나로 분류
이처럼 정해진 범주 중 하나로 예측하는 문제를 분류 문제라고 함.
예시
- 이메일이 스팸인지 아닌지 분류 (두 개의 클래스 → 이진 분류)
- 이미지 속 동물이 강아지, 고양이, 토끼 중 어떤 건지 분류 (세 개 이상 → 다중 클래스 분류)
- 병리 사진을 보고 양성/음성 판정
즉, 분류 문제는 정답(label)이 미리 정해져 있는 카테고리 중 하나인 경우입니다.
정답이 숫자라도 범주형이면 분류로 봅니다 (예: 점수 등급 A, B, C...).
반대로, 예측값이 연속적인 수치일 경우는 회귀(Regression) 문제입니다 (오른쪽 그림처럼 주가 예측 등).
그렇다면 아까 말했듯이 문장을 보고 정답을 맞추는 문제는 분류 문제냐, 회귀 문제냐 헷갈릴 수도 있는데
일반적으로 분류 문제로 생각하면 된다.
왜? 결국 정답이라고 부를 수 있는 것들이 한글 조합이 정해져 있기 때문이다. 굉장히 많을 뿐 무한 하게 많지는 않기 때문에
이 경우 역시도 보기에서 정답을 고르는 분류 문제로 생각한다.
그렇다면 비지도 학습은 뭘까?
정답 쌍이 없이 정말 데이터만 나에게 던져져 있는 상태인데, 그래서 이 데이터로 무엇을 해야 하는지에 대한 지도나 감독 하는 것이 없는 것을 Unsupervised Learning 이라고 부름.

예컨데 이미지를 100장 주고 이 이미지들로부터 유의미한 정보를 추출 하라는 과제가 주어진다면,
이것은 문제와 정답 pair 없이 데이터만 가지고 내가 무언가를 해야 하는 Unsupervised Learning 의 한 종류라고 볼 수 있음
반면 오른쪽과 같은 경우에는 굉장히 자연스럽게 클러스터를 구분 할 수 있음.
이런 클러스터들로 이루어져 있다는 정보를 얻을 수 있는 이러한 형태의 클러스터링 역시도 우리가 Unsupervised Learning의 일부로 볼 수 있지만 우리 수업에서는 다루지 않는다.
그러니까 정답이 있는, Supervised Learning에 대해서만 다루도록 하겠다.

목표는 입력을 넣었을 때, 원하는 정답을 잘 예측해주는 함수를 찾는 것.
이런 정답 함수 f^star는 우리가 모르기 때문에, 최대한 비슷한 함수 g(x)를 찾으려는 것.
G는 함수 후보들의 집합
쉽게 말하면 "우리가 사용할 수 있는 여러 모델들(함수 모양들)"이라고 보면됨.
- 선형 회귀 모델
- 결정 트리 모델
- 딥러닝 모델
목표는 진짜 정답 함수(f)에 최대한 가까운 g를 함수 후보들 중에서 잘 찾아라!
예시) 고양이 vs 강아지 분류 모델 만들기
- 진짜 정답 함수:
- 고양이 사진 넣으면 "고양이"
- 강아지 사진 넣으면 "강아지"
→ 이게 f^star
- 사실 우리는 정답 함수를 모름 → 대신 학습 데이터를 가지고 모델 gθ를 만들어서 비슷하게 동작하도록 훈련
- 함수 후보들 G:
- 로지스틱 회귀
- CNN
- ResNet
등등…
- 그중에서 성능 좋은 놈 하나 gθ를 뽑는 것
→ 이게 지도학습!
지도학습은 "입력-정답 쌍"을 학습해서 진짜 정답 함수와 비슷한 함수를
우리가 쓸 수 있는 함수 후보들 안에서 하나 고르는 문제
이 지도 학습을 모든 g(x) 라고 하는 가능한 모든 함수 중에서 어떤 G가 제일 좋은지를 찾는 문제는 너무 많은 자유도가 주어지면 문제가 오히려 어려워지기 때문에 function class 라는걸 정의하게됨.
다시 말해서 세상에 존재하는 모든 함수 중에서 f^star에 가장 근접한 것이 무엇이냐 질문 하지 않고
이 G라고 하는 함수 집합 안에서 후보군을 추리고 이 중에서 f^star에 가장 가까운 것이 무엇인지를 맞히는 문제로
문제 범위를 좁혀서 해결 하게 됨.
그렇다면 가장 잘 근사한다는 것은 무엇이냐?
데이터 n개가 주어져 있으면 이 주어져 있는 데이터에 대해서 f^star와 일치해야 한다.
왜냐면 그 이외에는 우리가 정답이 무엇인지 잘 모르는 상황이니까.
데이터 n개가 주어져 있으면 이 주워져 있는 연습 문제들,
문제와 정답상에 대해서 이 gθ가, 즉, 내가 만드는 내 모델이 정답 함수와 비슷해야 한다는 조건을 걸겠다
다시 말해서 세상에 존재하는 모든 함수가 아니라 어떠한 함수 클래스를 정의해서 함수 클래스 중에서만 뽑기,
그리고 세상에 존재하는 모든 입력 중에서 이 함수 값 두 개가 비슷한지 비교 하는 것이 아니라,
나에게 주어져 있는 데이터만 가지고 값을 비교 하겠다. 라고 하는 두 가지 가정이 들어가 있음.
세 번째 과정은 이제 이 두 개의 값을 비교 해야 하는데
f star와 g세타가 비슷하다는 것은 무엇인가?
이것은 손실함수(loss)로 정의 할 수 있음.
우리 모델이 정답과 얼마나 비슷한지를 수치로 평가하는 방법 = Loss (손실 함수)


전체 데이터 n개에 대해,
각 데이터의 손실을 다 더해서 전체 손실값을 구하고,
이 전체 손실값 L(θ)를 줄이는 방향으로 모델을 학습시킨다

키를 문제로 내고 정답을 몸무게로 맞히는 문제에서 이 몸무게와 키의 관계를 가장 잘 설명 하는 세상에서 가장 훌륭한 함수가 무엇이니 라고 물어 보지 않고,
세상에 존재하는 모든 함수가 아니라 나는 선형 함수, 즉 y = ax + b 꼴인 함수 중에서 이 데이터를 가장 잘 표현하고 있는 함수가 무엇인지를 질문 하고자 한다.
세타라고 하는 파라미터로 인덱싱을 했다고 보면 됨.
선형함수를 찾는다고 하는 것은 결국 선형함수의 계수인 (a, b)를 찾는 문제로 치환 할 수 있음.
그래서 지도 학습에 두 번째 조건인 클래스를 좁히는 것에 성공 했다고 보면 됨. -> 선형함수로 좁혔음
그럼 여기서 로스 함수가 무엇이냐
내 모델과 실제 데이터 사이에 오차를 어떤 식으로 분석해서 내 모델이 잘 하는지 못 하는지, 즉 g세타 와 f스타가 얼마나 비슷한지를 평가 하는 방식을 어떻게 진행 할 것이냐 라고 하는 건데

예측한 모델 y 값과 실제 y 값의 오차가 있음. 보통 선형함수에서는 이 오차의 제곱을 손실함수로 삼아서 문제를 해결함
요약하면 결국에는 우리가 어떤 문제를 푸는 것이냐?
이 L(θ)가 가장 작아지도록 하는 θ가 무엇인지에 대한 문제를 푸는 거라고 생각할 수 있다.
이 프레임워크의 선형 회귀라고 하는 문제를 대입 해서 풀어본다면
결국에 우리 함수 클래스를 ax+b 라고 하는 함수로 정의했고,
손실함수를 Mean-Squared Error로 정의한 다음, 주어져있는 데이터셋에 대해서 손실함수를 계산하면 L에 대해서 a에 대해 미분하고 b에 대해 미분해서 0이 되는 지점을 찾는 식으로
굉장히 일반적인 함수를 최소화하는 문제로 치환해서 이러한 형태의 지도학습 문제를 해결한다 라고 하는
굉장히 일반적인 프레임워크를 설명 하면서 강의를 마침
'LG Aimers > AI Essential Course' 카테고리의 다른 글
| Gradient Descent (0) | 2025.07.27 |
|---|---|
| Linear Regression (0) | 2025.07.26 |
| 인과추론을 위한 다양한 방법과 특징 (0) | 2025.07.25 |
| 인과추론을 위한 두가지 프레임워크 (0) | 2025.07.25 |
| 인과성과 인과추론 기본 개념 (0) | 2025.07.24 |