1. 들어가며 : 머신러닝 목표
- 머신러닝 모델의 역할은 무엇인가?
- 우리는 데이터의 집합이 있고, 데이터가 따르는 확률 분포를 알고 싶어한다.
- 데이터의 분포를 안다면 새로운 입력 값이 들어와도 적절한 출력 값을 추정할 수 있다.
- 하지만 데이터셋의 크기는 유한하기 때문에 데이터가 따르는 정확한 확률 분포를 구하는 것은 불가능하다.
- 그래서 파라미터(parameter, 매개 변수)에 의해 결정되는 머신러닝 모델을 만든 다음, 파라미터의 값을 조절함으로써 데이터의 분포를 간접적으로 표현한다.
- 모델이 표현하는 확률 분포를 데이터의 실제 분포에 가깝게 만드는 최적의 파라미터 값을 찾는 것이 머신러닝의 목표라 할 수 있다.
2. 확률 변수로서의 모델 파라미터
- 간단한 예시로 일차함수 모델을 생각해보자.
1) y = f(x) = ax + b. a, b ∈ R
- 위 식에서 실수 a,b는 f라는 함수로 표현되는 모델의 형태를 결정하는 파라미터로 작용한다. a와 b의 값을 요리조리 바꾸면서 모델을 변형 시킬 수 있다.
- R^2 공간 안의 모든 점 (a, b)에 대해, 일차함수 y = ax + b는 유일하게 결정된다.
- 다시 말해서, R^2 공간 안의 모든 점들은 일차함수들로 이루어진 함수 공간(function space)의 서로 다른 원소들에 각각 대응된다.
- 2차원 평면(공간) 위의 모든 점 (a, b)이 하나의 일차함수 f에 대응되는 것이다.
- (a, b)가 위치하는 R^2공간을 파라미터 공간(parameter space)라고 부른다.
- 일차함수 모델의 파라미터 a, b를 파라미터 공간 R^2의 원소 (a, b)로 본다면, 파라미터 공간에 주어진 확률 분포 역시 생각해 볼 수 있다.
- 위 그림에서 파라미터 공간에 주어진 확률 분포는 평균이 (1, 0)인 정규분포이므로 y = ax + b에서 a와 b의 값이 각각 1과 0에 가까울 확률, 즉 모델이 y = x에 가까울 확률이 크다고 보는 것이다.
- 왼쪽의 파라미터 공간에서 원소 하나를 뽑은 다음 일차함수의 그래프를 그렸을 때, 모델의 형태가 오른쪽의 진한 초록색 직선들과 비슷할 확률이 클 것이고, 연두색 직선들처럼 기울기나 y절편 차이가 많이 날 확률은 적을 것이다.
3. posterior와 prior, likelihood 사이의 관계
- 베이지안 머신러닝 모델은 데이터를 통해 파라미터 공간의 확률 분포를 학습한다.
- 모델 파라미터를 고정된 값이 아닌 불확실성(uncertainty)을 가진 확률 변수로 보는 것, 데이터를 관찰하면서 업데이트되는 값으로 보는 것은 베이지안 머신러닝의 핵심 아이디어이다.
- 사전 확률, 가능도, 사후 확률(prior, likelihood, posterior)
1) 데이터의 집합 X가 주어졌다 가정하자. 그러면 데이터가 따르는 어떤 확률 분포 p(X)가 있을 것이다.
2) 우리의 목표는 p(X)를 가장 잘 나타내는 일차함수 모델 y = ax + b = θ^T * x를 찾는 것이다.
3) 데이터를 관찰하기 전 파라미터 공간에 주어진 확률 분포 p(θ)를 prior(prior probability, 사전 확률)이라 한다.
4) prior는 일반적인 정규분포가 될 수도 있고, 데이터의 특성이 반영된 특정 확률 분포가 될 수 있다.
5) 만약 prior분포를 고정시킨다면, 주어진 파라미터 분포에 대해서 우리가 갖고 있는 데이터가 얼마나 "그럴듯한지" 계산할 수 있다.
6) 이것을 나타내는 값이 likelihood(가능도, 우도)이다. 식으로는 p(X = x|θ) 로 나타낼 수 있다. 즉, 파라미터의 분포 p(θ)가 정해졌을 때 x라는 데이터가 관찰될 확률이다.
7) likelihood가 θ에 의해 결정되는 함수라는 것을 강조하기 위해서 가능도 함수를 L(θ|x)로 표기하기도 한다.
8) 결국 구하고 싶은 것은 모델의 파라미터 θ의 값이고, 데이터는 이미 알고 있는 고정된 값이다.
9) likelihood가 높다는 것은 곧 우리가 지정한 파라미터 조건에서 데이터가 관찰된 확률이 높다는 것이고, 데이터의 분포를 모델이 잘 표현하는 것이라고 생각 할 수 있다.
10) 이렇게 데이터들의 likelihood 값을 최대화하는 방향으로 모델을 학습시키는 방법을 최대 가능성 추정(maximum likelihood estimation, MLE)라고 한다.
11) 반대로 데이터 집합 X가 주어졌을 때 파라미터 θ의 분포 p(θ|X)를 생각해 볼 수 있다.
12) 이 값을 "데이터를 관찰한 후 계산되는 확률"이라는 뜻에서 posterior(posterior probability, 사후 확률)이라고 부른다.
13) 생각해 보면 이게 우리에게 필요한 값이다. 앞에서 말했듯 데이터 포인트의 개수는 유한하기 때문에 데이터가 따르는 확률 분포 p(X)는 우리가 정확하게 알 수 없다.
14) 애초에 머신러닝의 목표가 p(X)를 직접 구할 수가 없으니 모델 파라미터 θ를 조절해가며 간접적으로 근사하는 것이다.
15) 그래서 posterior를 직접 계산해서 최적의 θ 값을 찾는 것이 아니라, prior와 likelihood에 관한 식으로 변형한 뒤, 그 식을 최대화하는 파라미터 θ를 찾는다.
16) 이렇게 posterior를 최대화하는 방향으로 모델을 학습시키는 방법을 최대 사후 확률 추정(maximum a posterior estimation, MAP)이라고 부른다.
- posterior와 prior, likelihood 사이의 관계
1) posterior = (likelihood * prior) / evidence
4. likelihood와 머신러닝
- 머신러닝 모델은 어디까지나 한정된 파라미터로 데이터의 실제 분포를 근사하는 역할을 하기 때문에, 어떤 데이터가 들어와도 100%의 정확도를 내는 모델을 만들기는 불가능하다.
- 그래서 모델이 입력 데이터로부터 예측한 출력 데이터(prediction)와 우리가 알고 있는 데이터의 실제 값(label) 사이에는 오차가 생기게 되는데, 우리에게 관찰되는 데이터에는 이미 노이즈가 섞여있어서 이런 오차가 발생한다고 해석한다.
- 머신러닝에서 지도 학습(supervised learning)을 생각해보자.
- 데이터셋은 입력 데이터 x와 라벨 y가 짝지어진 형태이다.
- 이 데이터셋을 선형 모델 y = θ^Tx로 표현한다고 한다. 이 모델이 예측한 값과 실제 값의 차이를 노이즈로 보면 된다.
- 앞에서 likelihood는 파라미터 분포가 주어졌을 때 특정 데이터가 관찰될 확률 p(X = x|θ)를 나타낸다고 말했다.
- 지도학습 예시에서는 파라미터 분포 θ와 입력 데이터 x이 주어졌을 때 라벨 y을 예측하는 문제가 된다.
- 입력 데이터의 집합을 X, 라벨들의 집합을 Y라고 할 때, likelihood는 파라미터와 입력 데이터가 주어졌을 때 출력값(라벨)의 확률 분포, 즉 p(Y|θ, X)가 된다.
5. likelihood 감 잡기
- 코드를 실행시켜 보면서 likelihood가 어떤 값인지 감을 잡아봤다.
- likelihood가 중요한 이유
1) 데이터 포인트가 모델 함수에서 멀어질수록 데이터의 likelihood는 기하급수적으로 감소한다.
2) likelihood를 구하는 식을 보면 모델 예측값과 데이터 라벨의 차이를 제곱해서 exponential 위에 올려놓은 것을 확인할 수 있다.
3) 예측값과 라벨의 차이가 조금만 벌어져도 likelihood 값은 민감하게 반응한다.
4) 머신러닝의 목표가 데이터 포인트들을 최대한 잘 표현하는 모델을 찾는 것이었다는 사실을 생각하면, 결국 데이터 포인트들의 likelihood 값을 크게 하는 모델을 찾는 것이 된다.
5) 데이터의 likelihood 값을 최대화하는 모델 파라미터를 찾는 방법이 최대 가능도 추론(maximum likelihood estimation, MLE)이다.
'공부 > AIFFEL' 카테고리의 다른 글
Exploration 20 : 난 스케치를 할 테니 너는 채색을 하거라 (0) | 2021.03.23 |
---|---|
FUNDAMENTAL 33. Regularization (0) | 2021.03.22 |
Exploration 19 : 인간보다 퀴즈를 잘 푸는 인공지능 (0) | 2021.03.18 |
FUNDAMENTAL 31. Ainize, 나의 원클릭 포트폴리오 만들기 (0) | 2021.03.17 |
Exploration 18 : 문자를 읽을 수 있는 딥러닝 (1) | 2021.03.16 |