PRML [1.5] 결정 이론
앞에서 불확실성을 정량화하는 확률론에 대해 공부를 했다. 이 확률론과 결정이론을 사용하여 불확실성이 존재하는 상황에서 최적의 의사 결정을 하고 싶다.
입력 벡터 $\bf x$와 타깃 벡터 $\bf t$가 있을 때, 새로운 입력 $\bf x$에 대한 $\bf t$를 예측하고 싶다. 결합 확률 분포 $p(\textbf x,\textbf t)$는 이 변수들의 전체 불확실성을 요약해서 나타내 줄 것이다.
- 주어진 훈련 집합에 대해 $p(\textbf x,\textbf t)$를 찾는 것이 inference(추론)이다.
우리가 엑스레이를 보고 이 환자가 암에 걸렸는지 판별을 하고 싶다고 하자. 그러면, 우리의 최종 목적은 위 확률을 계산하는 것이 아니라, 이 사람이 암에 걸렸는가 아닌가를 결정하는 것이다.
- 적절한 확률이 주어졌을 때, 어떻게 하면 최적의 결정을 내리는 것이 decision(결정)이다.
새 환자의 엑스레이 이미지 $\bf x$에 대해서 두 클래스(암? 정상?) 중 어떤 것으로 이미지를 분류할지, 그 확률은 $p(C_k|\textbf x)$로 표현된다.
\[p(C_k|\textbf x) = {p(\textbf x|C_k)p(C_k)\over p(\textbf x)} \tag{1.77}\]베이지안 정리에 따라, 우리는 더 높은 사후 확률을 가진 클래스로 고르게 되겠다.
1.5.1 오분류 비율의 최소화
각각의 $\bf x$를 가능한 클래스 중 하나에 포함을 시켜야 한다. 입력 공간을 decision region(결정 구역) $\it R_k$으로 나눠서, 해당 결정 구역에 속하는 모든 포인트들은 클래스 $C_k$에 포함될 것이다.
이때, 결정 구역들의 경계를 decision boundary(결정 경계), decision surface(결정 표면)이라고 부른다.
잘못 판정할 확률은 다음과 같이 나타낼 수 있다.
\[\begin{align} p(mistake) &=p(\textbf x \in R_1, C_2) + p(\textbf x \in R_2, C_1) \notag \\ &=\int _{R_1}p(\textbf x, C_2)d\textbf x + \int _{R_2}p(\textbf x, C_1)d\textbf x \tag{1.78} \end{align}\]식을 보면, $C_1$에 속하는 애들을 $C_2$로 분류하고, $C_2$에 속하는 애들을 $C_1$에 분류할 확률이다. 이걸 최소화하면 적절한 판별을 하는 것이 되겠다.
하지만, 잘못 판정할 확률을 줄이는 것보다 제대로 판정할 확률을 높이는 게 계산상 더 쉽다. K개의 클래스에 대해 올바르게 분류가 될 확률은 다음과 같이 나타난다.
\[p(correct)=\sum _{k=1}^K p(\textbf x \in R_k, C_k)=\sum _{k=1}^K \int _{R_k} p(\textbf x, C_k) d \textbf x \tag{1.79}\]올바르게 분류가 될 확률을 극대화하는 방향으로 클래스를 결정해주면 되겠다.
$\widehat x$를 기준으로 왼쪽은. $C_1$, 오른쪽은 $C_2$로 분류한다고 하자.
- 초록색 영역 : $C_2$가 $C_1$으로 잘못 분류됨
- 보라색 영역 : $C_1$이 $C_2$로 잘못 분류됨
- 빨간색 영역 : $C_2$가 $C_1$으로 잘못 분류됨
만약 $\widehat x$를 $x_0$으로 옮긴다면, 초록색과 보라색 영역의 압은 그대로이지만, 빨간색 영역이 없어진다. 이렇게, 오분류 비율이 줄어드는 방향으로 분류하면 되겠다.
1.5.2 기대 손실의 최소화
단순히 환자가 암에 걸렸을 확률과 걸리지 않았을 확률을 계산하는 것에서 그치지 않는다. 그 확률을 기반으로 암인지 아닌지를 판단해야 하는데, 이때 우리는 확률에 따라 아주 정직하게 판단을 하면 안 된다. 왜냐하면, 정상인 사람을 암으로 잘못 판단하는 것보다 암인 사람은 정상으로 잘못 판단하는 것이 더 위험하기 때문이다. 위양성에 대해서는 다시 검사하면 되지만, 암인 사람이 위음성 받고 살다가 상태가 심각해질 수 있다.
따라서, 우리는 어느 한쪽의 손실이 증가하더라도, 다른 한쪽의 손실을 최소화하도록 가중치를 주고 싶다.
cost function(비용 함수) / loss function(손실 함수)를 도입하여, 어떤 결정에 대한 손실을 전체적으로 측정할 수 있다. 그리고, 우리의 목표를 전체 손실을 최소화하는 것으로 한다.
이 앞에 (-) 붙인 utility function(효용 함수)의 값을 최대화 하는 것과 똑같다.
위와 같은 loss matrix(손실 행렬)이 있다고 하자. 올바른 결정에 대해서는 손실이 없고, 잘못된 결정에 대해서는 다른 값의 손실을 계산한다. 위에서 말했듯이, 암 환자를 정상이라고 판단하는 것에 대한 손실이 압도적으로 크다.
손실 행렬의 $i$, $j$번째 요소 $L_{ij}$에 대해, 평균 손실은 다음과 같이 계산할 수 있다.
\[E[L]=\sum _k \sum _j \int _{R_j} L_{kj} p(\textbf x, C_k) d \textbf x \tag{1.80}\]- $E[L]$ : $\bf x$와 이미 정해져 있는 결정 구역들에 대하여, 모든 클래스에 대한 총 손실의 기댓값
데이터 포인트 $\bf x$가 결정 구역 $R_j$에 속할 때의 기대 손실을 $\sum_k L_{kj} p(\textbf x, C_k)$ 와 같이 나타낸다.
이 식을 최소화하는 것이 각 데이터 포인트 $\bf x$에 대해 최적의 결정 영역 $R_j$를 찾는 것이다. 각 $\bf x$는 결정 구역 $R_j$들 중 하나에 독립적으로 포함되므로, 우리는 $R_j$들을 적절히 설정해서 식 1.80의 기대 손실값을 최소화하고 싶다.
그런데, 이제 곱의 법칙에 따라서 $p(\textbf x, C_k)=p(C_k, \textbf x)p(\textbf x)$이다. 모든 항에서 $p(\textbf x)$는 동일할 테니, 식 1.81과 같이 표현하고, 각 $\textbf x$를 손실을 최소화 하는 클래스 $j$에 할당하면 된다.
\[\sum _k L_{kj}p(C_k, \textbf x) \tag{1.81}\]1.5.3 거부 옵션 (reject option)
입력 공간 중 어떤 구역에서는 사후 확률 $p(C_k, \textbf x)$가 매우 작다. $p(\textbf x, C_k)$가 다들 비슷비슷하다는 뜻인데, 이렇게 결정을 내리기 어려운 구역에 대해서는 결정을 하지 않게 할 수 있다. 이것이 reject option이다.
임계값 $\theta$를 정해두고, 사후확률이 그보다 작으면 해당 $\bf x$를 거부하는 것이다. 어느 클래스에 속하는지 확실한 데이터 포인트들은 모델이 분류하고, 애매한 것들은 인간이 직접 분류할 수 있다.
1.5.4 추론과 결정
지금까지 본 것이 inference(추론)를 통해 훈련 집합으로 $p(C_k| \textbf x)$ 에 대한 모델을 학습시키고, decision(결정)을 통해 최적의 클래스를 할당하는 것이다.
이 둘을 한 번에 하는 것이 discriminant function(판별 함수)이다. $\bf x$가 주어졌을 때, 결정값을 반환하는 함수를 직접 학습시킨다.
결정 문제의 접근법 3가지
생성 모델 (generative model)
각 클래스 $C_k$에 대한 조건부 확률 밀도 $p(\textbf x|C_k)$를 추정한다.
클래스 별 사전 확률 $p(C_k)$를 추정한다.
- 베이지안 정리에 따라서 각 클래스별 사후 확률 $p(C_k|\textbf x)={p(\textbf x|C_k)p(C_k) \over p(\textbf x)}$를 구한다.
- 결정 이론에 따라서 각각의 새로운 입력 변수 $\textbf x$에 대한 클래스를 구한다.
이렇게 하면 모든 클래스에 확률적 분포를 학습하게 되고, 실제 데이터 분포를 모방하는 새로운 데이터 포인트를 생성해 낼 수 있다.
데이터 전체의 분포를 학습하기 때문에, 데이터 요구량이 많다.
판별 모델 (discriminative model)
- 처음부터 클래스별 사후 확률 $p(C_k|\textbf x)$를 추론한다.
- 결정 이론에 따라서 각각의 새로운 입력 변수 $\textbf x$에 대한 클래스를 구한다.
데이터의 발생 과정을 학습하는 게 아니라, 클래스 간을 구별하는 경계를 학습한다. 분류 문제에 사용이 되며, 주어진 입력에 대한 출력 라벨을 뱉는 걸 잘한다.
상대적으로 적은 데이터로도 효과적일 수 있다.
판별 함수 $f(\textbf x)$
각 입력값 $\textbf x$가 어느 클래스에 속하는지 바로 출력한다.
사후 확률은 알지 못한다.
- 왼쪽이 생성 모델
- 오른쪽이 판별 모델
- 오른쪽의 초록색 선이 판별 함수
사후 확률 $p(C_k|\textbf x)$의 유의미성
위험의 최소화
손실 행렬 값이 변할 때, 사후 확률을 알고 있다면 식 1.81을 수정함으로써 손실을 최소화하는 결정 기준을 다시 구할 수 있다.
판변 함수만 알고 있다면, 행렬 값이 변할 때마다 훈련 집합에 대한 분류 문제를 새로 풀어야 한다.
거부 옵션
데이터 포인트 비율에 대한 오분류 비율을 최소화하는 거부 기준을 구하기 쉽다.
클래스 사전 확률에 대한 보상
현실에서는 암 환자보다 정상인이 훨씬 많다. 모델을 학습시킬 때 암 환자 엑스레이 1장과 정상 엑스레이 99장으로 학습을 시키면 당연히 학습이 잘 안 된다. 따라서, 학습을 시킬 때는 5:5 비율로 학습을 시키고, ‘현실에는 정상이 더 많음’이라는 정보를 다시 반영시킬 수 있다.
이것이 훈련 집합을 변경한 것에 대한 보상을 적용하는 것이다.
모델들의 결합
엑스레이 이미지와 혈액 검사 정보를 사용해서 진단을 하고 싶다고 하자.
여러 정보를 하나의 입력 공간에 합치는 것보다, 엑스레이 따로, 혈액 검사 따로 학습하는 것이 더 효과적일 수 있다. 두 모델이 각 클래스에 대한 사후 확률을 제공한다면, 확률의 법칙을 통해 서로 다른 출력값을 합칠 수 있다.
엑스레이 이미지 분포 $\bf x_I$와 혈액 데이터 분포 $\bf x_B$가 독립적일 때, $p(\textbf x_I, \textbf x_B|C_k)=p(\textbf x_I|C_k)p(\textbf x_B|C_k)$ 이다. (조건부 독립)
이를 바탕으로 엑스레이 이미지와 혈액 데이터에 대한 사후 확률을 구할 수 있다. \(\begin{align} p(C_k|\textbf x_I, \textbf x_B) &\propto p(\textbf x_I, \textbf x_B|C_k)p(C_k) \notag \\ &\propto p(\textbf x_I|C_k)p(\textbf x_B|C_k)p(C_k) \notag \\ &\propto {p(C_k|\textbf x_I)p(C_k|\textbf x_B) \over p(C_k)} \tag{1.85} \end{align}\) 클래스 별 사전 확률 $p(C_k)$는 데이터 포인트들의 클래스별 분포 비율에서 유추가 가능하다. 그리고 마지막으로 합이 1이 되게 정규화를 한다.
이렇게 조건부 독립을 가정하고 계산하는 일련의 과정이 Naive Bayes(나이브 베이즈) 모델이다.
1.5.5 회귀에서의 손실 함수
방금 본 게 분류 모델에서의 결정 이론이다. 이를 회귀 문제로 확장을 하자. 곡선 피팅 문제가 회귀 문제에 해당한다.
최적의 $y(\textbf x)$ - 1
회귀 문제의 결정 단계에서는 각 $\textbf x$에 대하여 $t$의 추정값 $y(\textbf x)$를 선택해야 한다. 이 때 손실값이 $L(t, y({\bf x}))$라고 하면, 손실의 기댓값은 다음과 같다.
\[E[L] = \iint L(t, y({\bf x}))p({\bf x}, t)\;d{\bf x}dt \tag{1.86}\]손실 함수로 평균 제곱 오차(MSE)를 사용하면 다음과 같이 표현이 되겠다.
\[E[L] = \iint \{y({\bf x})-t\}^2 p({\bf x}, t)\;d{\bf x}dt \tag{1.87}\]우리는 $E[L]$을 최소화하는 예측모델 $y(\textbf x)$의 형태를 선택해야 한다.
\[\dfrac{\delta E[L]}{\delta y({\bf x})}=2\int\{y({\bf x})-t\}p({\bf x}, t)dt=0 \tag{1.88}\] \[y({\bf x})= \dfrac{\int tp({\bf x}, t)dt}{p({\bf x})}=\int tp(t|{\bf x})dt=E_t[t|{\bf x}] \tag{1.89}\]손실 함수의 기댓값을 $y({\bf x})$에 대해 편미분하고, 이를 0으로 설정하여 평균 제곱 오차(MSE)를 최소화하는 조건을 나타낸다. 식 1.88에서 식 1.89로 넘어가는 과정이 회귀 문제에서 손실 함수를 최소화하는 함수 $y({\bf x})$를 찾는 과정이다.
식 1.89는 회귀 문제에서 최적의 예측 함수 $y({\bf x})$가 실제 타겟 값 t 의 조건부 기댓값, 즉 $\textbf x$가 주어졌을 때 t 의 평균값을 예측하는 것이라고 해석할 수 있다. 식 1.89를 regression function(회귀 함수)라고 한다.
벡터 $\bf t$로 나타나는 다차원 변수에 대해서도 최적의 해는 조건부 평균 $\textbf y(\textbf x)=E_t[\textbf t|\textbf x]$로 확장이 가능하다.
최적의 $y(\textbf x)$ - 2
최적의 해가 조건부 기댓값이라는 지식을 바탕으로 $-E[t|{\bf x}]+E[t|{\bf x}]$를 추가해서 식을 재구성하자. 제곱항을 다음과 같이 전개할 수 있다.
\[\begin{align} \{y({\bf x})-t\}^2 \notag \\ &= \{y({\bf x})-E[t|{\bf x}]+E[t|{\bf x}]-t\}^2 \notag \\ &= \{y({\bf x})-E[t|{\bf x}]\}^2 + 2\{y({\bf x})-E[t|{\bf x}]\}\{E[t|{\bf x}]-t\}+\{E[t|{\bf x}]-t\}^2 \notag \end{align}\]이걸 손실함수에 대입하고, t 에 대해 적분하면 교차항들이 사라져서 식 1.90 형태의 손실 함수를 얻을 수 있다.
\[E[L] = \int \{y({\bf x})-E[t|{\bf x}]\}^2 p({\bf x}) d{\bf x} + \int var[t|{\bf x}]p({\bf x})d{\bf x} \tag{1.90}\]두 번째 항은 t 에 대한 분포의 분산을 계산하고, $\bf x$에 대해 평균을 낸 것이다. 표적 데이터의 내재적인 변동성, 즉 노이즈를 표현한다.
우리가 찾고 싶은 게 함수 $y(\textbf x)$인데, 첫 번째 항에만 존재한다. 따라서, 손실 함수를 최소화하려면 $y(\textbf x) = E[t|\textbf x]$가 되는 것이다.
위에서 식 1.89에서 구한 것과 같은 결과가 나왔는데, 무슨 차이가 있냐 한다면..
첫 번째 과정은 손실 함수 $E[L]$을 직접적으로 최소화하는 $y({\bf x})$의 형태를 찾는 것이다.
두 번째 과정은 제곱 손실 함수의 확장과 최적의 해를 찾는 과정을 포함한다. 이 방식은 손실 함수 내에서 $y({\bf x})$의 역할과 중요성을 좀 더 분명하게 드러내며, 왜 $y({\bf x})$를 $\bf x$에 대한 t의 조건부 기댓값으로 설정하는 것이 최적인지를 더 분명하게 보여준다.
회귀에서의 결정 문제 접근법 3가지
결합 밀도를 통한 접근
결합 밀도 $p(\textbf x, t)$를 추론한다.
입력과 출력 간의 전체적인 확률 관계를 파악. (결합 밀도는 입력과 타겟 값이 동시에 발생하는 확률)
조건부 밀도 $p(t|\textbf x)$를 추정한다.
결합 밀도를 정규화하여, 주어진 입력 $\bf x$에 대한 타겟 t 의 조건부 확률 밀도 계산 (특정 입력 $\bf x$가 주어졌을 때 타겟 t 의 분포)
조건부 평균 $y(\textbf x)=E[t|\textbf x]$을 계산한다.
조건부 밀도를 통한 접근
처음부터 조건부 밀도 $p(t|\textbf x)$를 추론한다.
결합 밀도를 먼저 구하지 않고 직접 조건부 확률 분포에 집중.
조건부 평균 계산 (식 1.89)
회귀 함수 $y(\textbf x)$ 직접 구하기
민코프스키 손실 (Minkowski loss)
위에서는 손실 함수로 제곱항 오차를 사용했지만, 손실 함수의 형태는 적절히 상황에 맞게 선택을 하면 된다. 식 1.91은 제곱 손실을 일반화한 예시이다. \(E[L_q] = \iint \left|y({\bf x})-t\right|^q p({\bf x}, t) d{\bf x}dt \tag{1.91}\) $q = 2$ 일 때는 제곱 손실이고, $q$ 값에 따른 손실 함수 그래프 $L_q$는 다음과 같다.