[머신러닝] 학습의 기본 원리 (The Learning Problem)
#ML

[머신러닝] 학습의 기본 원리 (The Learning Problem)

1. 학습 문제의 구조

소크라테스식 대화로 학습의 본질을 파헤쳐 봅시다.

Q1
"기계가 학습한다"는 것은 정확히 무엇을 의미할까요?
"규칙을 명시적으로 프로그래밍하는 대신, 예제로부터 패턴을 추출한다"

Valiant의 "A Theory of the Learnable" (1984) 논문 첫 문단에서 학습의 본질을 이렇게 정의합니다. 전통적인 프로그래밍은 규칙을 직접 코드로 작성하지만, 학습은 데이터에서 규칙을 발견합니다.
학습의 결과물은 입력을 받아서 출력을 내놓는 함수입니다.

예를 들어 스팸 필터가 수천 개의 이메일 예제를 보고 학습한 후, 새로운 이메일이 들어왔을 때 이 함수를 통해 "스팸" 또는 "정상"이라는 출력을 내놓습니다. 이 함수를 라고 부릅니다.
적절하게 근사해야 합니다.

그리고 는 존재하지만, 우리에게는 보이지 않습니다. 만약 를 직접 볼 수 있었다면 그냥 구현하면 됩니다 — 그건 프로그래밍이지 학습이 아닙니다.
우리는 훈련 데이터(training data)를 가지고 있습니다.

를 직접 볼 수는 없지만, 가 특정 입력에 대해 어떤 값을 내놓았는지는 관찰할 수 있습니다. 스팸 필터의 경우, 과거에 사람이 "이건 스팸", "이건 정상"이라고 라벨을 붙인 이메일들이 바로 이런 관찰값입니다.

2. 학습 가능성의 정의 — PAC 학습

"학습 가능하다"는 것을 어떻게 엄밀하게 정의할 수 있을까요?

Q1
훈련 데이터는 유한합니다. 그런데 입력 공간 는 보통 매우 크거나 무한합니다. 훈련 데이터를 통해 만든 가 한 번도 본 적 없는 새로운 입력에 대해서도와 일치할 거라고 어떻게 확신할 수 있을까요?
사실, 논리적으로 확신할 수 없습니다.

개의 점 과 정확히 일치하는 함수는 무한히 많습니다. 이 중에서 어떤 것이 진짜 인지 확정할 방법이 없습니다. 이것이 전통적인 귀납 추론(inductive inference)의 근본적인 문제입니다.
Valiant의 핵심 통찰은 요구사항을 완화하는 것입니다.

"가 모든 입력에서 와 일치해야 한다"는 요구를 포기합니다. 대신 "자연에서 자주 등장하는 입력의 대부분에서와 일치하면 충분하다"고 정의합니다.

이것이 PAC (Probably Approximately Correct) 학습의 핵심 아이디어입니다:"높은 확률(Probably)로, 근사적으로 정확한(Approximately Correct)" 학습.
확률은 두 곳에서 발생합니다:

1. 훈련 데이터의 무작위 샘플링
운이 나쁘면 편향된 데이터를 받을 수 있습니다. 예를 들어, 스팸 이메일만 가득한 훈련 세트를 받을 수 있습니다.

2. 근사의 불완전성
와 모든 곳에서 일치할 필요는 없습니다. 드물게 나타나는 입력에서 틀려도 실용적으로는 문제없습니다.

3. 세 가지 학습 패러다임

학습 문제는 알고리즘에 어떤 정보가 주어지는가에 따라 구분됩니다.

Q1
지금까지 우리는 훈련 데이터로 쌍을 받는다고 가정했습니다. 하지만 항상 "정답"을 알 수 있는 걸까요? 정답을 모르는 상황에서도 학습이 가능할까요?
정답(레이블)의 유무에 따라 학습 패러다임이 나뉩니다:

지도 학습: 정답이 주어짐 — 우리가 지금까지 논의한 방식
비지도 학습: 정답 없이 구조만 발견
강화 학습: 정답 대신 "얼마나 잘했는지" 피드백

4. 일반화의 문제

훈련 데이터에서 잘 하는 것과 새로운 데이터에서 잘 하는 것은 다릅니다.

Q1
극단적인 상황을 상상해 봅시다. 훈련 데이터로 1000개의 이메일이 주어졌고, 우리가 선택할 수 있는 함수 에 아무런 제약이 없다고 합시다. 다음과 같은 함수 를 만들면 어떻게 될까요?

• 훈련 데이터의 1000개 이메일: 정답을 그대로 외워서 출력
• 그 외 모든 이메일: 무조건 "스팸"이라고 출력
이 함수 는 훈련 데이터에서 완벽합니다 —.

하지만 새로운 이메일에서는 재앙적입니다. 정상 이메일의 대부분을 스팸이라고 분류할 것이므로 이 매우 큽니다.

이것이 과적합(overfitting)의 극단적인 예입니다. 훈련 데이터를 "외워버리면" 일반화에 실패합니다.
핵심 원인은 선택 편향(selection bias)입니다.

비유를 들어보겠습니다: 100명이 동전을 각각 10번씩 던집니다. 그 중 앞면이 가장 많이 나온 사람을 뽑으면, 그 사람의 결과는 동전의 실제 확률(50%)을 반영하지 않습니다.

마찬가지로, 에서 을 최소화하는 선택하면, 그 과소추정합니다.가 클수록 이 편향이 심해집니다.

5. 귀납적 편향

학습이 가능하려면 무엇을 포기해야 할까요?

Q1
앞서 가 크면 선택 편향으로 인해 일반화가 어렵다는 것을 보았습니다. 그렇다면 를 제한하지 않고 학습하는 것은 가능할까요?
불가능합니다. 이것은 단순한 직관이 아니라 수학적으로 증명된 결과입니다.

No Free Lunch 정리: 모든 가능한 목표 함수 에 대해 평균적으로 잘 작동하는 학습 알고리즘은 존재하지 않습니다. 어떤 에서 잘 하려면, 다른 에서 성능을 포기해야 합니다.
를 제한하는 것을 귀납적 편향(inductive bias)이라고 합니다.

이것은 "어떤 종류의 함수가 답일 것이다"라는 사전 가정입니다. 예를 들어 = 선형 함수라고 하면, "정답은 선형일 것이다"라고 가정하는 것입니다.

이 가정이 맞으면 학습이 잘 되고, 틀리면 실패합니다. 하지만 아무런 가정 없이는 학습 자체가 불가능합니다. 이것이 귀납적 편향의 본질입니다.