안녕하세요. 최근 들어 딥 러닝 모델에서 확률 모델을 사용하는 것에 큰 관심이 생겨 정리를 한번 해보려고 합니다. 교재는 Probabilistic Machine Learning: An Introduction (Murphy)를 참고하였습니다. 이전에 확률 및 통계와 관련된 포스팅을 한적은 있지만 이를 기계학습과 엮어서 설명한 적은 없기 때문에 아는 내용은 빠르게 넘어가고 모르는 내용만 자세하게 작성하도록 하겠습니다. 오늘은 간략한 Introduction만 진행하도록 하겠습니다.
What is Machine Learning?
Def. 1. 기계학습 (Machine Learning)
컴퓨터 프로그램이 $P$로 측정된 $T$의 작업 성능이 $E$ 경험을 통해 향상되는 경우, 특정 작업 $T$ 및 성능 평가 지표 $P$, 그리고 경험 $E$를 통해서 "학습"한다고 한다.
A computer probram is said to learn from experience $E$ with respect to some class of tasks $T$, and performance measure $P$, if its performance at tasks in $T$, as measured by $P$, improves with experience $E$.
아마 기계학습은 다들 익히 들어보셨을 겁니다. 보통 임의의 모델을 이용해 어떤 문제 (분류 또는 회귀 문제 등)을 데이터셋을 이용하여 학습한 뒤 성능 평가 지표 (정확도 또는 MSE 등)로 성능을 확인하게 되죠. Def. 1에서 표현된 경험 $E$ = 데이터셋 그리고 작업 $T$ = 풀고자 하는 문제라고 보시면 될 거 같습니다. 앞으로 저희는 이 기계학습을 확률적 관점 (Probabilistic Perspective)를 도입하여 확인해보고자 합니다. 여기서 확률적 관점은 앞으로 unknown quantity를 어떤 분포로부터 샘플링된 random variable로 다루겠다는 것을 의미합니다.
그렇다면 왜 확률적 관점을 도입해야할까요? 이는 크게 두 가지 장점이 있습니다.
1) 모델의 결정에 대한 불확실성 (uncertainty)을 최적으로 모델링 가능
2) 확률적 모델링은 기계학습 뿐만 아니라 다른 다양한 과학분야의 공용어로써 쓰임
특히, 저희는 앞으로 불확실성이라는 것에 초점을 맞추어 설명할 예정입니다.
Supervised Learning and Unsupervised Learning
일반적으로 모델의 학습 방식에는 Supervised Learning 그리고 Unsupervised Learning으로 나뉘게 됩니다. 물론 현재에는 서로 나누는 방식이 큰 의미는 없지만 중요한 점은 Supervised Learning과 Unsupervised Learning의 차이점을 이해하는 것 입니다. 간단히 말해 Supervised Learning을 데이터가 주어질 때 그에 대한 레이블도 함께 주어지는 상황에서 학습하게 되고 Unsupervised Learning은 레이블이 주어지지 않고 데이터만 주어져 데이터 자체의 대한 특성을 학습하는 것을 목표로 합니다. 아직은 크게 와닿지 않을테니 이정도로만 이해하셔도 충분합니다.
Classification and Regression with Supervised Learning
다음으로 간략하게 supervised learning 관점에서 분류 (Classification) 및 회귀 (Regression)을 학습하는 방식에 대해서 알아보도록 하겠습니다. 두 문제는 기계학습 전반에서 가장 기본이 되는 문제이기 때문에 반드시 알아두어야할 개념입니다.
이제 $\mathbf{x} \in \mathbb{R}^{D}$는 총 $D$만큼의 길이를 가지는 벡터로 특징 (feature)라고 부르도록 하겠습니다. 그리고 $\mathbf{y}$는 특징 $\mathbf{x}$에 대응되는 레이블 (label)이라고 하도록 하죠. 그러면 기계학습의 정의에서 보았던 경험 $E$는 데이터셋의 형태로 $\mathcal{D} = \{ (\mathbf{x}_{n}, \mathbf{y}_{n}) \}_{n = 1}^{N}$으로 주어집니다.
1) Image Classification
보통 영상 데이터는 가로 길이 $H$, 세로 길이 $W$ 그리고 채널 개수 $C$로 주어지기 때문에 $D = H \times W \times C$라고 쓸 수 있습니다. 보통 고해상도 영상이라고 한다면 $H = 1920, W = 1080, C = 3$을 의미하므로 $D = 6220800$으로 매우 큰 고차원 벡터임을 알 수 있습니다. 따라서, 영상에서 레이블로의 매핑 $f: \mathcal{X} \rightarrow \mathcal{Y}$를 학습하는 것은 매우 어려운 일이죠. 여기서 "학습한다는 것"은 매핑, 즉 모델 $f$의 파라미터 $\theta$를 최적화한다는 것을 의미합니다.
분류에서 성능을 측정하는 가장 대표적인 방법은 오분류율 (misclassification rate)를 측정하는 것 입니다. 이는 쉽게 전체 데이터셋 중에서 모델 $f$이 예측한 결과와 실제 레이블이 틀린 개수의 비율을 의미하죠.
$$\mathcal{L} (\theta) = \frac{1}{N} \sum_{n = 1}^{N} \mathbb{I} (\mathbf{y}_{n} \neq f(\mathbf{x}_{n}; \theta)) - (1)$$
여기서 $\mathbb{I} ( e )$는 조건 $e$에 해당하는 경우에 1, 아니면 0인 indicator function으로 정의됩니다. 오분류율을 이용해 성능을 측정하는 방법은 가장 쉽지만 모든 오류가 동등한 가중치를 가진다는 가정을 하기 때문에 현실세계와는 맞지 않죠. 똑같이 틀렸더라도 1만큼 틀린 경우와 10만큼 틀린 경우를 같다라고 판단할 수 없는 것처럼 말이죠. 이를 해결하기 위해 경험적 위험도 (Empirical Risk)를 도입해봅시다!
$$\mathcal{L} (\theta) = \frac{1}{N} \sum_{n = 1}^{N} l(\mathbf{y}_{n}, f(\mathbf{x}_{n}; \theta)) - (2)$$
엥? 두 식 (1)과 (2)가 무슨 차이인거죠? 라고 하실 수 있겠지만 식 (2)는 (1)의 일반화된 표현으로 $l(\cdot, \cdot)$을 도입하였습니다. 여기서 $l$은 어떻게 정의하느냐에 따라 저희가 성능을 측정하는 방식이 달라지는 것이죠. 앞으로 많이 쓰는 표현으로 최적화식을 통해 다음과 같이 경험적 위험도를 최소화하는 $\hat {\theta}$를 찾을 수 있습니다.
$$\hat{\theta} = \text{argmin}_{\theta} \mathcal{L} (\theta) = \text{argmin}_{\theta} \frac{1}{N} \sum_{n = 1}^{N} \sum_{n = 1}^{N} l(\mathbf{y}_{n}, f(\mathbf{x}_{n}; \theta)) - (3)$$
여기까지는 단순히 모델 $f$를 정의하고 최적화하는 과정을 작성한 것 뿐 입니다. 이 상태에서 모델 $f$의 불확실성을 구하려면 어떻게 해야할까요? 기본적인 방법은 다음과 같이 모델 $f$를 입력 특징 $\mathbf{x}$를 조건으로 하는 조건부확률분포 (conditional probabilistic distribution)으로 간주하는 것 입니다.
$$p (y = c | \mathbf{x}; \theta) = f_{c} (\mathbf{x}; \theta) - (4)$$
여기서 $f_{c}: \mathcal{X} \rightarrow [0, 1]^{c}$는 확률 모델로써 다음 두 조건을 따르게 됩니다.
$$\begin{cases} &\sum_{c = 1}^{C} f_{c} (\mathbf{x}; \theta) = 1 \\ &0 \le f_{c} (\mathbf{x}; \theta) \le 1 \end{cases}$$
이를 만족하는 가장 쉬운 확률모델이 한가지 있습니다. 바로 소프트맥스 (softmax) 함수이죠.
$$\text{softmax} (\mathbf{a}) = \left[ \frac{e^{a_{1}}}{\sum_{c = 1}^{C} e^{a_{c}}}, \dots, \frac{e^{a_{C}}}{\sum_{c = 1}^{C} e^{a_{c}}} \right]$$
위 정의를 보시면 소프트맥스 함수가 확률 모델 조건을 정확하게 만족하고 있습니다. 여기서 $\mathbf{a} = f(\mathbf{x}; \theta)$로 logit이라고 정의됩니다. 따라서, $p (y = c | \mathbf{x}; \theta) = \text{softmax}_{c} (f(\mathbf{x}; \theta))$로 정의한다면 각 클래스의 예측에 대한 확률값이 나올 것 입니다. 이때, 모델의 불확실성이 높다면 $C$개의 클래스에 대한 확률이 거의 비슷할 것이죠 불확실성이 낮다면 특정 클래스에 대한 확률만 높겠죠. 이와 같은 방식으로 불확실성을 측정해볼 수 있습니다.
이제 다시 식 (2)로 돌아가서 $l$을 어떻게 정의해야할 지 생각해봅시다. 저희는 $f$를 확률 모델로 간주하기로 했기 때문에 그에 대한 파라미터 $\theta$는 확률분포의 모수가 됩니다. 즉, 확률분포의 모수 추정을 하는 것이 되므로 기초통계학[16].최대 우도 추정법에서 배웠던 최대 우도 추정법 (Maximum Likelihood Estimation; MLE)을 기반으로 해주면 되겠네요! 따라서, 저희는 $l (\mathbf{y}, f(\mathbf{x}; \theta)) = -\log p(\mathbf{y} | f(\mathbf{x}; \theta))$와 같이 정의해주면 됩니다. 그러면 MLE 기반의 최적화 결과는 다음과 같이 쓸 수 있겠죠.
$$\hat{\theta}_{\text{MLE}} = \text{argmin}_{\theta} \left( -\frac{1}{N} \sum_{n = 1}^{N} \log p(\mathbf{y}_{n} | f(\mathbf{x}_{n}; \theta)) \right) = \text{argmin}_{\theta} \text{NLL} (\theta) - (5)$$
여기서 $\text{NLL} (\theta)$는 Negative Log Likelihood의 약자를 의미합니다.
2) Regression
입력 데이터가 이산적으로 값으로 매핑되는 분류 문제와는 다르게 회귀 문제의 경우 연속적인 값 $\mathbf{y} \in \mathbb{R}$으로 매핑됩니다. 이를 학습하기 위해서 사용되는 대표적인 손실 함수로는 Quadratic loss가 있죠.
$$l_{2} (\mathbf{y}, \hat{\mathbf{y}}) = (\mathbf{y} - \hat{\mathbf{y}})^{2} - (6)$$
식 (6)에서 중요한 점은 분류 문제에서 처음 사용했던 오분류율과는 다르게 더 큰 차이를 보이는 예측에 대해서 더 강한 패널티를 부여한다는 것 입니다. 여기서 경험적 위험도로 quadratic loss로 선택하게 되면 Mean Squared Error (MSE)를 이용해 최적화가 진행됩니다.
$$\text{MSE} (\theta) = \frac{1}{N} \sum_{n = 1}^{N} (\mathbf{y}_{n} - f(\mathbf{x}_{n}; \theta))^{2}$$
그렇다면 회귀 문제에서 확률적인 관점에서 어떻게 모델을 학습할 수 있을까요? 기본적으로 출력에 대한 확률 분포가 가우시안 분포라고 가정하겠습니다. 그리고 문제를 단순하게 만들기 위해 가우시안 분포의 두 모수인 평균 $\mu$와 분산 $\sigma^{2}$ 중 분산이 고정되어 있다고 가정하겠습니다. 저희는 결국 모델의 예측이 $\mu$를 추정하는 것으로 해석하게 됩니다. 따라서, 저희는 수식을 다음과 같이 쓸 수 있습니다.
$$p (\mathbf{y} | \mathbf{x}; \theta) = \mathcal{N} (\mathbf{y}| f(\mathbf{x}; \theta), \sigma^{2}) = \frac{1}{\sqrt{2\pi\sigma^{2}}} \text{exp} \left( -\frac{1}{2\sigma^{2}} (\mathbf{y} - f(\mathbf{x}; \theta))^{2} \right) - (7)$$
이때, 분류 문제에서도 언급했듯이 $\mu = f(\mathbf{x}; \theta)$를 얻기 위해서는 MLE를 기반으로 수행하기 때문에 Negative Log Likelihood를 이용해야합니다.
$$\begin{align*} \text{NLL} (\theta) &= -\frac{1}{N} \sum_{n = 1}^{N} \log p(\mathbf{y}_{n} | f(\mathbf{x}_{n}; \theta)) \\ &= - \frac{1}{N} \sum_{n = 1}^{N} \log \left( \left( \frac{1}{2\pi\sigma^{2}} \right)^{\frac{1}{2}} \text{exp} \left( -\frac{1}{2\sigma^{2}} (\mathbf{y}_{n} - f(\mathbf{x}_{n}; \theta))^{2} \right) \right) \\ &= -\frac{1}{N} \sum_{n = 1}^{N} \left( \log \left( \frac{1}{2\pi\sigma^{2}} \right)^{\frac{1}{2}} - \frac{1}{2\sigma^{2}} (\mathbf{y}_{n} - f(\mathbf{x}_{n}; \theta))^{2} \right) \\ &= \frac{1}{N} \text{MSE} (\theta) + \text{constant} \end{align*}$$
즉, MLE를 통해 파라미터를 얻는 것은 MSE를 최소화하는 파라미터를 찾는 것과 동일하다는 의미가 됩니다. 또한, 회귀 문제에서의 불확실성은 저희가 처음에 고정한 $\sigma^{2}$에 의해 예측을 중심으로 얼마나 퍼져있는 지로 결정이 되겠죠.
Overfitting and Generalizability
식 (2)가 경험적 위험도에 대한 수식이라고 말씀드렸습니다. 하지만 어떤 경험 (데이터셋)을 이용하는 지에 대해서는 명시적으로 표현이 되지 않았기 때문에 앞으로는 다음과 같은 수식을 쓰도록 하겠습니다.
$$\begin{cases} &\mathcal{L} (\theta, \mathcal{D}_{\text{train}}) = \frac{1}{|\mathcal{D}_{\text{train}}|} \sum_{\mathbf{x}, \mathbf{y} \in \mathcal{D}_{\text{train}}} l (\mathbf{y}, f(\mathbf{x}; \theta)) \\ &\mathcal{L} (\theta, \mathcal{D}_{\text{test}}) = \frac{1}{|\mathcal{D}_{\text{test}}|} \sum_{\mathbf{x}, \mathbf{y} \in \mathcal{D}_{\text{test}}} l(\mathbf{y}, f(\mathbf{x}; \theta)) \end{cases}$$
위의 경우 훈련 데이터 $\mathcal{D}_{\text{train}}$와 시험 데이터 $\mathcal{D}_{\text{test}}$에 대한 경험적 위험도를 정의하고 있습니다. 흔히 과적합 (overfitting)이라고 한다면 훈련 데이터에 대한 경험적 위험도 $\mathcal{L} (\theta, \mathcal{D}_{\text{train}}) \approx 0$이지만 시험 데이터에 대한 경험적 위험도 $\mathcal{L} (\theta, \mathcal{D}_{\text{test}})$는 큰 경우를 의미합니다. 이와 같은 과적합을 방지하고 훈련 데이터와 다른 형태의 새로운 시험 데이터에서도 성능이 잘 나올 수 있는 능력을 일반화 능력 (Generalizability)라고 하죠.
참고문헌
Probabilistic Machine Learning: An Introduction (Murphy)