해당 포스팅은 네이버 부스트캠프 AI Tech 학습 정리 자료임을 알려드립니다.
1. 강의 정리
최성철 교수님 - Data Visualization - Graph tools
1) Matplotlib
Matplotlib 라이브러리는 다양한 graph 지원하며 Pandas와 연동이 되고 있습니다. pyplot 객체를 사용해서 데이터를 표시합니다. pyplot 객체에 그래프들을 쌓은 다음에 flush(plt.show())하는 과정을 거쳐서 보여줍니다. 최대 단점은 argument를 kwargs로 받기 때문에 어떤 parameter가 필요한지 알아보기가 어렵다는 단점이 있습니다. graph는 원래 figure 객체에 생성됩니다. pyplot 객체 사용할 때 기본 figure에 그래프가 그려집니다. Matplotlib은 그래프가 그려질 때, Figure와 그 속에 Axes(title, axis 등 포함)로 구성됩니다. Figure 위에 여러 개의 Axes를 생성하는 것도 가능합니다. figure 내부에 여러 개의 subplot들을 넣을 수도 있고, 색상이나 선의 종류를 설정할 수 있습니다. 저장은 plt.show()하기 전에 savefig로 저장해야 합니다. 다양한 종류의 그래프를 그릴 수 있습니다.
2) Seaborn
Matplotlib을 좀 더 쉽게 만들어 주는 라이브러리입니다. 기존 matplotlib에 기본 설정을 추가할 수 있으며 복잡한 그래프를 간단하게 만들 수 있는 wrapper입니다. 손쉬운 설정으로 데이터를 산출할 수 있습니다. seaborn tutorial은 잘 작성되어 있어서 직접 해보면 좋습니다.
임성빈 교수님 - 통계학 맛보기
1) 통계적 모델링
통계적 모델링은 적절한 가정 위에서 데이터를 표현하는 확률분포를 추정(inference)하는 것이 목표이며, 기계학습과 통계학이 공통적으로 추구하는 목표입니다. 하지만 데이터를 가지고 정답의 분포를 확실하게 알수는 없고 사용할 수 있는 확률분포가 많아서 어떤 것을 고르는지에 대한 문제가 있습니다. 그래서 유한한 개수의 데이터를 활용해서 모집단의 분포를 정확하게 알아내는 것은 불가능합니다. 그렇기 때문에 근사적으로 확률분포를 추정할 수밖에 없습니다. 예측모형의 목적은 분포를 정확하게 맞추는 것보다는 데이터와 추정 방법의 불확실성을 고려해서 예측의 위험을 최소화하는 것입니다. 데이터가 특정 확률분포를 따른다고 선험적으로 가정한 후 그 분포를 결정하는 모수(parameter)를 추정하는 방법을 모수적(parametric) 방법론이라고 합니다. 특정 확률분포를 가정하지 않고 데이터에 따라 모델의 구조 및 모수의 개수가 유연하게 바뀌면 비모수(nonparametric) 방법론이라 부릅니다. 많은 기계학습의 방법론은 비모수 방법론에 속합니다. 여기서 주의해야 할 것은 비모수 방법론이라고 해서 모수가 없는 것이 아니라, 모수가 무한하게 많거나 가변적인 것을 말합니다. 그래서 모수적 방법론과 비모수적 방법론은 가정의 유무로 나누게 됩니다.
확률 분포를 가정하는 방법은 히스토그램을 통해 모양을 관찰합니다.
-
데이터가 2개의 값(0 또는 1)만 가지는 경우에는 베르누이분포로 가정합니다.
-
데이터가 n개의 이산적인 값을 가지는 경우에는 카테고리분포나 다항 분포로 가정합니다.
-
데이터가 [0,1] 사이에서 값을 가지는 경우에는 베타분포로 가정합니다.
-
데이터가 0 이상의 값을 가지는 경우에는 감마분포, 로그 정규분포 등으로 가정합니다.
-
데이터가 $\mathbb{R}$ 전체에서 값을 가지는 경우에는 정규분포, 라플라스 분포 등으로 가정합니다.
단, 기계적으로 확률분포를 가정해서는 안 되며, 데이터를 생성하는 원리를 먼저 고려하는 것이 원칙입니다. 각 분포마다 검정하는 방법들이 있으므로 모수를 추정한 후에는 반드시 검정을 해야 합니다.
2) 모수 추정
데이터의 확률분포를 가정했다면 모수를 추정해볼 수 있습니다. 정규분포의 모수는 평균 $\mu$과 분산 $\sigma^{2}$으로 이를 추정하는 통계량(statistic)은 다음과 같습니다.
평균 : $\bar{X} = \frac{1}{N}\sum_{i=1}^{N}X_{i}$, $\mathbb{E}[\bar{X}] = \mu$, 분산 : $S^{2} = \frac{1}{N-1}\sum_{i=1}^{N}(X_{i}-\bar{X})^{2}$, $\mathbb{E}[S^{2}] = \sigma^{2}$
위의 식을 설명하면, 표본평균들의 평균은 모집단의 평균과 일치하고 표본 분산들의 평균은 모집단의 분산과 일치하게 된다는 것을 표현한 식입니다. 이때, 표본 분산을 구할 때 $N$이 아니라 $N-1$로 나누는 이유는 불편(unbiased) 추정량으로 만들어 주기 위해 사용합니다. 불편 추정량은 추정량의 기댓값이 모수와 같을 때의 추정량을 말합니다. 그러므로 위에서 봤을 때, 표본 분산들의 평균은 모집단의 분산과 일치하지 않기 때문에 불편 추정량이 아닙니다. 이를 같아지게 만들어주기 위해서 $N$이 아니고 $N-1$로 나눠주는 것입니다.
통계량의 확률분포를 표집분포(sampling distribution)라 부르며, 특히 표본 평균의 표집 분포는 $N$이 커질수록 정규분포 $\boldsymbol{N}(\mu, \sigma^{2}/N)$를 따릅니다. 이를 중심 극한 정리(Central Limit Theorem)이라 부르며, 모집단의 분포가 정규분포를 따르지 않아도 성립합니다. 여기서 말하는 표집 분포(sampling distribution)는 표본 평균들의 확률분포를 이야기하는 것으로 중심 극한 정리가 적용되지만 표본의 분포는 정규분포를 따르지 않을 수도 있다는 차이를 구분해야 합니다.
3) 최대가능도 추정법
표본평균이나 표본 분산은 중요한 통계량이지만 확률분포마다 사용하는 모수가 다르므로 적절한 통계량이 달라지게 됩니다. 단순히, 표본 평균과 표본 분산만 가지고 확률분포를 추정하는 것은 위험합니다. 모수를 이론적으로 가장 가능성이 높은 모수를 추정하는 방법 중 하나는 최대 가능도 추정법(maximum likelihood estimation, MLE)입니다.
$$ \hat{\theta}_{MLE} = \mathrm{\underset{\theta}{argmax}}L(\theta;x) = \mathrm{\underset{\theta}{argmax}}P(x|\theta) $$
가능도(likelihood) 함수는 $L(\theta;x)$로 표현하는 함수입니다. 이 함수는 모수 $\theta$를 따르는 분포가 $x$를 관찰할 가능성을 뜻하지만 확률로 해석하면 안되고, $x$가 주어진 상황에서 모수 $\theta$를 변수로 둔 함수로 생각하시면 됩니다. $\theta$에 대한 값의 합이 1이 아니기 때문에 확률로 해석할 수 없습니다. 그래서 $\theta$에 대한 크고 작은 대소 비교를 하는 함수라고 이해하면 됩니다. 데이터 집합 $X$가 독립적으로 추출되었을 경우 가능도 함수를 확률 밀도 함수(확률 질량 함수)의 곱으로 표현할 수 있습니다. 로그함수의 성질인 곱을 덧셈으로 바꿔주는 성질을 활용해서 로그 가능도를 최적화합니다.
$$L(\theta;X) = \prod_{i=1}^{n}P(x_{i}|\theta) \Rightarrow logL(\theta;X) = \sum_{i=1}^{n}logP(x_{i}|\theta)$$
왜 로그 가능도를 사용하나요? 로그가능도를 최적화하는 모수 $\theta$는 가능도를 최적화하는 MLE가 됩니다. 데이터의 숫자가 적으면 상관없지만 만일 데이터의 숫자가 수억 단위가 된다면 컴퓨터의 정확도로는 가능도를 계산하는 것은 불가능합니다. 데이터가 독립일 경우, 로그를 사용하면 가능도의 곱셈을 로그가능도의 덧셈으로 바꿀 수 있기 때문에 컴퓨터로 연산이 가능해집니다. 경사하강법으로 가능도를 최적화할 때 미분 연산을 사용하게 되는데, 로그가능도를 사용하면 연산량을 $O(n^{2})$에서 $O(n)$으로 줄여줍니다. 대게의 손실 함수의 경우 경사 하강법을 사용하므로 목적식을 최소화하게 됩니다. 보통 로그 가능도의 경우에는 maximum을 찾아야 하기 때문에 이것을 최소로 만들어주는 음의 로그 가능도(negative log-likelihood)를 최적화하게 됩니다.
4) 최대 가능도 추정법 예제 : 정규분포
정규분포를 따르는 확률변수 $X$로부터 독립적인 표본 {$x_{1}, ... , x_{n}$}을 얻었을 때 최대 가능도 추정법을 이용하여 모수를 추정해보려고 합니다.
$$logL(\theta;X) = \sum_{i=1}^{n}logP(x_{i}|\theta) = \sum_{i=1}^{n}log\frac{1}{\sqrt{2\pi\sigma^{2}}}e^{-\frac{|x_{i}-\mu|^{2}}{2\sigma^{2}}} = -\frac{n}{2}log2\pi\sigma^{2} - \sum_{i=1}^{n}\frac{|x_{i}-\mu|}{2\sigma^2}$$
여기서 맨 마지막의 식에서 첫 번째 항은 분산이 포함만 포함된 식, 두 번째 항은 평균과 분산이 포함된 식으로 구분할 수 있습니다. 우리는 최적화를 하기 위해서 $\theta = (\mu, \sigma)$에 대해 이 식을 미분하도록 합니다.
$$0 = \frac{\partial logL}{\partial \mu} = -\sum_{i=1}^{n}\frac{x_{i}-\mu}{\sigma^{2}} \Rightarrow \hat{\mu}_{MLE} = \frac{1}{n}\sum_{i=1}^{n}x_{i}$$
$$0 = \frac{\partial logL }{\partial \sigma} = -\frac{n}{\sigma} +\frac{1}{\sigma^{3}}\sum_{i=1}^{n}|x_{i}-\mu|^{2} \Rightarrow \hat{\sigma}^2_{MLE} = \frac{1}{n}\sum_{i=1}^{n}(x_{i}-\mu)^{2}$$
첫 번째 식은 $logL$을 평균에 대해서 미분하였고, 두 번째 식은 $logL$을 표준편차로 미분한 모습입니다. 이때, 두 미분이 모두 0이 되는 $\mu$, $\sigma$를 찾으면 가능도를 최대화할 수 있습니다. MLE는 불편 추정량($n$을 사용)을 보장하지는 않습니다.
5) 최대 가능도 추정법 예제 : 카테고리 분포
이번에는 이산 확률변수에 해당하는 카테고리 분포에 대해서 알아보고자 합니다. 카테고리 분포는 베르누이 분포를 다차원으로 확장한 분포라고 볼 수 있습니다. 카테고리 분포 Multinoulli($x; p_{1}, ... , p_{d}$)를 따르는 확률변수 $X$로부터 독립적인 표본 {$x_{1}, ... , x_{n}$}을 얻었을 때 최대 가능도 추정법을 이용해서 모수($p_{1}, ... , p_{d}$)를 추정한다면 어떻게 할 수 있을까요?
$$\hat{\theta}_{MLE} = \underset{p_{1}, ... , p_{d}}{argmax}\,logP(x_{i}|\theta) = \underset{p_{1}, ... , p_{d}}{argmax}\,log(\prod_{i=1}^{n}\prod_{k=1}^{d} p_{k}^{x_{i, k}}) \, with \sum_{k=1}^{d}p_{k} = 1$$
$$log(\prod_{i=1}^{n}\prod_{k=1}^{d}p_{k}^{x_{i,k}}) = \sum_{k=1}^{d}(\sum_{i=1}^{n}x_{i,k})logp_{k} = \sum_{k=1}^{d}n_{k}logp_{k} \, with \, n_{k} = \sum_{i=1}^{n}x_{i,k}$$
오른쪽 제약식을 만족하면서 왼쪽 목적식을 최대화하는 것이 우리가 구하는 MLE입니다. 목적식에 제약식이 추가된 경우에는 그냥 미분해서 0이 되는 점을 찾으면 안 되고 아래와 같이 목적식에 제약식을 정리해서 풀어야 합니다.
$$\Rightarrow L(p_{1}, ... , p_{k}, \lambda) = \sum_{k=1}^{d}n_{k}logp_{k} + \lambda(1-\sum_{k}p_{k})$$
여기서는 목적식에 제약식을 넘겨서 $\lambda$를 곱하는 라그랑주 승수법을 이용해서 새로운 목적식을 만들어 줄 수 있습니다. 이 방법을 통해서 주어진 제약식을 만족하면서 목적식을 최적화시키는 모수($p_{1}, ... , p_{d}$)를 구할 수 있습니다. 이렇게 구해진 목적식을 $p_{k}$와 $\lambda$에 대해 미분을 하면 아래와 같습니다.
$$ 0 = \frac{\partial L}{\partial p_{k}} = \frac{n_{k}}{p_{k}}-\lambda, \, 0 = \frac{\partial L}{\partial \lambda} = 1 - \sum_{k=1}^{d}p_{k} $$
우측에 있는 것은 아까 제약식과 동일하므로 0인 것이 자명하고 좌측의 식은 $p_{k} = \frac{n_{k}}{\sum_{k=1}^{d}n_{k}}$을 만족하게 됩니다. 그렇기 때문에 카테고리 분포의 MLE는 경우의 수를 세서 비율을 구하는 것이 됩니다.
6) 최대 가능도 추정법 예제 : 딥러닝
최대가능도 추정법을 이용해서 기계학습 모델을 학습할 수 있습니다. 딥러닝 모델의 가중치를 $\theta =(W^{(1)}, ... W^{(L)})$라 표기했을 때 분류 문제에서 소프트맥스 벡터는 카테고리 분포의 모수 ($p_{1}, ... , p_{k}$)를 모델링합니다. 원핫벡터로 표현한 정답 레이블 $y = (y_{1}, ... , y_{k})$을 관찰 데이터로 이용해 확률분포인 소프트맥스 벡터의 로그 가능도를 최적화할 수 있습니다.
$$\hat{\theta}_{MLE} = \underset{\theta}{argmax}\,\frac{1}{n}\sum_{i}^{n}\sum_{k=1}^{K}y_{i,k}log(MLP_{\theta}(x_{i})_{k})$$
이 수식을 풀어서 설명하면, $MLP$부분은 예측값이고, $y_{i,k}$는 정답 레이블입니다. 이러한 방법을 통해서 모수 $\theta$를 추정할 수 있습니다.
기계학습에서 사용되는 손실 함수들은 모델이 학습하는 확률분포와 데이터에서 관찰되는 확률분포의 거리를 통해 유도합니다. 통계학에서 MLE로 모수를 추정하는 방법론과 매우 밀접하게 관련이 있습니다. 데이터 공간에 두 개의 확률분포 $P(x)$, $Q(x)$가 있을 경우 두 확률분포 사이의 거리(distance)를 계산할 때 다음과 같은 함수들을 이용합니다.
-
총 변동 거리 (Total Variation Distance, TV)
-
쿨백-라이블러 발산 (Kullback-Leibler Divergence, KL)
-
바슈 타인 거리 (Wasserstein Distance)
7) 쿨백-라이블러 발산
쿨백-라이블러 발산(KL Divergence)은 다음과 같이 정의합니다.
$$\mathbb{KL}(P||Q) = \sum_{x \in \chi}P(x)log(\frac{P(x)}{Q(x)}), \, \mathbb{KL}(P||Q) = \int_{\chi}P(x)log(\frac{P(x)}{Q(x)})dx$$
위의 식에서 이산 확률변수의 경우 좌측식으로, 연속 확률변수의 경우 우측식으로 정의할 수 있습니다. 쿨백 라이블러는 다음과 같이 분해할 수 있습니다.
$$\mathbb{KL}(P||Q) = -\mathbb{E}_{x \sim P(x)}[logQ(x)] + \mathbb{E}_{x \sim P(x)}[log P(x)]$$
여기서 앞부분은 크로스 엔트로피라고 부르고 뒷부분은 엔트로피라고 부릅니다. 분류 문제에서 정답 레이블을 $P$, 모델 예측을 $Q$라 두면 최대 가능도 추정법은 쿨백-라이블러 발산을 최소화하는 것과 같습니다. 여기서 이 표현을 좀 더 자세하게 보면, $P$를 정답레이블로 가정을 한다면, 위의 식에서의 엔트로피 값은 항상 상수의 값을 가지게 됩니다. 그렇기 때문에 likelihood function을 최대화시키면 크로스엔트로피는 최소가 되게 됩니다. 이것은 쿨백-라이블러 발산을 최소화하는 것과 동일합니다.
2. 피어 세션 정리
수업 PPT 같이 공부하기, 질문 답변
3. Reference
-
표본 분산, 불편 추정량 - m.blog.naver.com/ao9364/222023124818