일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- python 문법
- VSCode
- linalg
- 최대가능도 추정법
- Python
- Numpy
- Numpy data I/O
- 표집분포
- BOXPLOT
- namedtuple
- ndarray
- Python 특징
- 딥러닝
- 카테고리분포 MLE
- subplot
- Array operations
- Python 유래
- 가능도
- unstack
- Comparisons
- 정규분포 MLE
- groupby
- Operation function
- boolean & fancy index
- 부스트캠프 AI테크
- seaborn
- type hints
- scatter
- pivot table
- dtype
- Today
- Total
또르르's 개발 Story
[10-1] 딥러닝에 사용되는 통계학 본문
딥러닝에서는 데이터를 받아들여 통계적 모델을 만들고 결과값을 추정합니다.
따라서 통계적 모델링은 적절한 가정 위에서 확률분포를 추정(inference)하는 것이 목표이며, 기계학습이 추구하는 목표입니다.

그러나 유한한 개수의 데이터만 관찰해서 모집단의 분포를 정확하게 알아낼 수 없습니다.
데이터가 무작위로 들어오면 이 데이터들이 어떠한 분포를 가졌는지 유추할 수 없으며, 근사적으로 확률분포를 추정할 수 밖에 없습니다. 그래서 예측모형의 목적은 분포를 정확히 맞추는 것보다 위험을 최소화하는 것에 가깝습니다.
1️⃣ 확률분포 가정하기
확률분포를 가정하는 방법은 우선 히스토그램을 통해 모양을 관찰합니다.
- 데이터가 2개의 값(0 또는 1)만 가지는 경우 => 베르누이 분포
- 데이터가 n개의 이산적인 값을 가지는 겨우 => 카테고리 분포
- 데이터가 [0,1] 사이에서 값을 가지는 경우 => 베타 분포
- 데이터가 0 이상의 값을 가지는 경우 => 감마 분포, 로그 정규분포 등
- 데이터가 R 전체에서 값을 가지는 경우 => 정규분포, 라플라스 분포 등
하지만 위의 경우만 가지고 확률분포를 가정하는 것은 위험합니다. 데이터의 일부분만 가지고 판단한 것이기 때문에 다른 데이터가 입력되면 해당 분포를 가지는지 모르기 때문이죠.
그래서 데이터를 생성하는 원리를 먼저 고려하는 것이 중요합니다.
데이터의 생성원리가 정규분포를 따라간다면 차후에 생성된 데이터도 정규분포를 따라가기 때문입니다.
각 분포마다 추정한 분포가 맞는지 검정하는 방법들이 있으므로 모수를 추정한 후에는 반드시 검정을 해야 합니다.
그렇다면 모수가 무엇일까요?
2️⃣ 모수와 통계량
모수(parameter)는 확률분포(모집단)의 특성입니다.
확률분포마다 가지고 있는 특성들이 존재하며, 모수는 이러한 확률분포(모집단) 특성을 식별하는 척도입니다.
예를 들어, 정규분포를 추정할 때 정규분포의 모수(parameter)는 "평균 μ"과 "분산 σ2"이 존재합니다.
데이터가 특정 확률분포를 따른다고 가정한 후 그 분포를 결정하는 모수(parameter)를 추정하는 방법을 모수적(parametric) 방법론이라고 합니다.
만약 특정 확률분포를 가정하지 않고 데이터에 따라 모델의 구조 및 모수의 개수가 유연하게 바뀌면 비모수(nonparametric) 방법론이라 부릅니다. 기계학습의 많은 방법론은 비모수 방법론에 속합니다. (비모수는 모수를 안 쓰는 게 아니라 모수가 유연하게 바뀌는 것을 말합니다.)
통계량(statistic)은 모집단에서 추출한 표본(sample)을 이용해 만든 표본들의 함수입니다.
정규분포의 모수는 평균 μ(ˉX)와 분산 σ2(S2)으로 이를 추정하는 통계량(statistic)은 다음과 같습니다.
(여기서 표본 분산 S2를 구할 때 N이 아니라 N−1로 나누는 이유는 불편(unbiased) 추정량을 구하기 위함입니다. 기대값을 취했을 때 원래 모집단의 대표적인 통계치와 일치하게 유도하기 위해 사용합니다.)

통계량의 확률분포를 표집 분포(sampling distribution)라 부르며, 특히 표본 평균의 표집 분포는 데이터의 개수가 많아질수록(N이 커질수록) 정규분포 N(μ,σ2/N)를 따릅니다.(중심 극한 정리)
✅ 표본분산과 표집분포 차이
표본 분포 => 통계량 표본들의 분포
표집 분포 => 표본평균과 표본분산의 확률분포
표집분포만 N이 커질수록 정규분포를 따릅니다. 이 경우 모집단의 분포가 정규분포를 따르지 않아도 성립됩니다.
ex) 이항분포는 아무리 데이터를 많이 모아도 정규분포가 되지 않지만, 이항분포의 평균과 분산은 데이터가 많아질수록 정규분포에 가까워집니다.
3️⃣ 가능도(Likelihood)
확률분포 중 확률변수가 연속형일 경우 확률밀도함수를 사용합니다. 확률밀도함수는 연속된 값이기 때문에 특정 사건이 일어날 확률을 구하는 것이 아닌 구간의 밀도(넓이)를 구해서 확률을 계산하는데요. 확률밀도함수에서 구간이 아닌 특정 사건이 일어날 확률을 구하게 되면 0이 나오게 됩니다.

그렇다면 확률밀도함수에서 y축의 값은 무엇을 의미할까요?
또한, 확률밀도함수의 어느 특정한 부분에서 사건이 일어날 확률을 알 수 없을까요?
이때 가능도(likelihood)라는 개념을 사용해 확률밀도함수에서 특정 사건이 일어날 확률을 비교할 수 있다고 합니다.
가능도는 특정한 값 x가 관측되었을 때, 그 값이 어떤 확률분포에 속하는지에 대한 확률입니다.
아래 수식에서 보듯이, (P에서) θ 확률분포에서 x라는 값이 관측(확정)되었을 때, θ 확률분포의 가능도 함수 L(θ|x)를 다음과 같이 정의할 수 있습니다.
L(θ;x)=P(X=x|θ)
다시 확률밀도함수로 돌아오면..
예를 들어, 어떠한 확률밀도함수에서 특정한 사건 x가 발생했을 때, 가능도는 그 x값이 정규분포(μ,σ2)에 속해있을 확률을 구할 수 있습니다.

만약, 위 사진과 같은 정규분포(μ=50,σ2=2.5)에서 x=53에서 0.068의 확률을 가진다고 한다는 뜻은 이렇게 표현할 수도 있습니다. x=53이 관측되었을 때, 이 x가 정규분포(μ=50,σ2=2.5)에 있을 확률은 0.068라고요.
즉,
정규분포(μ=50,σ2=2.5)에서 x=53에서 0.068의 확률을 가짐
=
x=53이 관측되었을 때, 이 x가 정규분포(μ=50,σ2=2.5)에 있을 확률은 0.068
이라는 뜻은 아래와 같이 정리할 수 있습니다.
가능도 = 확률밀도함수에서 y값을 나타냄
가능도는 확률밀도함수에서 y의 값을 나타낸다고 말할 수 있으며, 확률밀도함수의 y값이 높을수록 특정 사건이 일어날 확률이 높다라고 말할 수 있습니다. 따라서 확률밀도함수에서 특정 사건이 일어날 때 확률이 0이 나오는 문제점을 가능도라는 개념을 사용해 표현이 가능합니다.
하지만 가능도는 확률을 뜻하지 않습니다. (가능성을 뜻하지만 전체를 더해서 1이 되지 않으므로 확률이 아닙니다.)
따라서 가능도 함수 L(θ;x)은 모수 θ에 대한 확률로 이해하면 안 되고, 모수 θ에 대해서 크고 작음에 따른 대소 비교가 가능한 함수라고 이해해야 합니다.
또한, 데이터 집합 X가 독립적으로 추출되었을 경우, 로그가능도 최적화를 할 수 있습니다.
가능도 함수 L(θ;x)가 확률 밀도/질량 함수들의 곱으로 표시될 수 있는데 이러한 경우 L(θ;x)에 log를 취해줌으로써 곱셈 연산을 덧셈 연산으로 바꿀 수 있습니다.

가능도를 최적화하는 모수나 로그가능도를 최적화하는 모수나 둘 다 MLE로 수렴합니다.
또한, 로그가능도를 사용하면 경사하강법으로 가능도를 최적화할 때 미분 연산을 사용하게 되는데, 로그가능도를 사용하면 연산량을 O(n2)에서 O(n)으로 줄여줍니다. 대게의 손실함수의 경우 경사하강법을 사용하므로 음의 로그가능도(negative log-likelihood)를 최적화하게 됩니다.
4️⃣ 최대가능도 추정법(MLE)
표본평균이나 표본분산은 중요한 통계량이지만 확률분포마다 사용하는 모수가 다르기 때문에 적절한 통계량이 달라지게 됩니다. 그렇기에 다양한 확률분포에서 가장 가능성이 높은 모수를 추정하는 방법인 최대가능도 추정법(maximum likelihood estimation, MLE)을 사용하게 됩니다.
최대가능도 추정법(MLE)은 아래 수식으로 표현됩니다.

이 수식은 어떤 모수(θ)를 선택했을 때, x가 가장 많이 관측되는 확률분포 P(x|θ)에서의 모수는 무엇인지(argmaxθ : 확률분포가 최대일 때 그때의 θ 값)를 찾는 방법입니다.
(가능도 함수 L(θ|x)는 이미 데이터 x가 주어져있는 상태에서 모수(θ)를 변경시킴에 따라 값이 바뀌는 함수입니다.)
(즉, 가능도 함수 L(θ|x)가 최대가 될 때의 θ 값을 뜻함)
1) 최대가능도 추정법 (1) : 정규분포
정규분포를 따르는 확률변수 X로부터 독립적인 표본 {x1,.....xn}을 얻었을 때 최대가능도 추정법을 이용하여 모수를 측정하는 방법입니다.
정규분포는 두 개의 모수인 평균(μ)와 분산(σ2)을 가지고 있기 때문에 최대가능도 추정은 아래와 같이 표현할 수 있습니다.

가능도함수 L(θ;x)를 log를 취하면 로그가능도 최적화로 풀 수 있습니다.

log의 성질은 곱셈으로 표현된 확률분포를 덧셈으로 바꿔주기 때문에 아래와 같이 표현할 수 있습니다.
(여기서 log=loge를 나타내며, log(1√2πσ2) + loge−|xi−μ|22σ2로 나타냅니다.)
(앞의 항에는 i로 표현된 수식이 없으므로 뒤의 항에만 ∑가 붙습니다.)

여기서 모수 θ=(μ,σ)이므로 위의 수식을 미분해서 최적화할 수 있습니다.


이때 두 미분이 모두 0이 되는 μ,σ를 찾으면 가능도는 최대화하게 됩니다.
(위의 식을 μ와 σ2으로 정리)
(여기서 σ2은 n−1이 아닌 n인데 MLE는 불편추정량을 보장하지 않습니다.)

위의 식을 보면 최대가능도 추정법으로 적절한 모수 θ=(μ,σ2)가 출력되는 것을 알 수 있습니다.
2) 최대가능도 추정법 (2) : 카테고리 분포
카테고리 분포는 이산확률분포로 베르누이 분포(두 개의 값 중 하나를 선택하는 확률분포)에서 다차원으로 확장한 개념입니다. 따라서 여러 개의 값들 중 하나를 선택하면 1의 확률로 만들고 나머지는 0으로 만듭니다.
카테고리 분포 Multinoulli(x;p1,....,pd)를 따르는 확률변수 X로부터 독립적인 표본 {x1,....,xn}을 얻었을 때 최대가능도 추정법을 이용하여 모수를 측정하면 아래와 같은 수식으로 표현이 가능합니다.
(곱셈으로 표현되기 때문에 로그가능도를 사용합니다.)

이때, 카테고리 분포는 {p1,...,pd} 까지의 모수를 가지는데,
여기서 Pk는 1차원부터 d차원까지 각각의 차원에서 값들이 1 또는 0이 되는 확률을 의미하는 모수입니다.
따라서 {p1,...,pd}까지 다 더해줬을 때 1이 되어야 합니다.

그래서 카테고리 분포의 가능도를 표현할 때 모수 Pk에 해당하는 값에다가 xi,k (주어진 데이터 xi의 k번 째 차원에 해당하는 값)을 승수로 취해줍니다. (Pxi,kk)
카테고리 분포 logP(xi|θ)에서 log를 취했기 때문에 곱하기는 다 덧셈으로 변경됩니다.
=n∑i=1d∑k=1(xi,klogPk)
=d∑k=1n∑i=1(xi,klogPk)
=d∑k=1(n∑i=1xi,k)logPk
이때, xi,k는 0 또는 1이기 때문에 ∑ni=1xi,k의 개념은 주어진 각 데이터들에 대해서 k값이 1인 데이터의 수를 카운팅하는 nk라고 보면 됩니다.

따라서 아래와 같이 작성할 수 있습니다.(오른쪽 ∑dk=1Pk=1은 제약식)

목적식에 ∑dk=1Pk=1과 같은 제약식이 추가된 상황에서는 앞에서와 같이(정규분포 최대가능도 추정) 미분할 때 0이 되는 값을 구하는 게 아니고 라그랑주 승수법을 이용해야 합니다.

제약식의 등식을 우변으로 넘겨준 상태(0=1−∑dkPk)에서 라그랑주 승수에 해당하는 λ를 곱해준 식을 목적식에 더해줘서 새로운 목적식을 만들 수 있습니다. 이런 새로운 목적식 최적화를 통해서 제약식도 만족하면서 주어진 L(p1,....,pk)을 최적화시키는 값을 구할 수 있습니다.
라그랑주 승수법이 적용된 L을 모수 θ=Pk와 λ로 미분해 0이 되는 값을 찾습니다.
- Pk로 미분 : (1)번 식
0=∂L∂Pk=∂∂Pk(d∑k=1nklogPk+λ(1−d∑k=1Pk))
=d∑k=1(nkPk)+λ(0−d∑k=11)
=d∑k=1(nkPk)−d∑k=1λ
(여기서 ∑dk=1을 양변에 나눠줍니다.)
=nkPk−λ

Pk로 미분수식을 통해 nkPk가 λ를 만족해야 한다는 사실을 알 수 있습니다.
- λ로 미분 : (2)번 식

이 두 수식을 이용해 Pk값을 유도해낼 수 있습니다.
((1)번 식을 Pk= 형태로 정리)
Pk=nkλ
(위 식을 (2)번 식에 대입)
0=1−d∑k=1Pk=1−d∑k=1nkλ
1=d∑k=1nkλ
λ=d∑k=1nk
(위 식을 다시 (1)번 식에 대입)
Pk=nkλ=nk∑dk=1nk
두 수식을 통해 유추하면 Pk=nk/(nk 모두 더한 값) 이라는 것을 알 수 있습니다.
여기서 (nk 모두 더한 값)은 우리의 데이터 개수인 N과 같습니다.
Pk=nkN
위 식을 통해 카테고리 분포의 MLE는 경우의 수(각각의 차원에 해당하는 데이터의 카운트 숫자)를 세어서 비율을 구하는 것이라 유추할 수 있습니다.
3) 딥러닝에서 최대가능도 추정법
최대가능도 추정법을 이용하면 기계학습 모델을 학습하는 것이 가능합니다.
딥러닝 모델의 가중치 θ=(W(1),.....,W(L))라 표기했을 때 분류 문제에서 소프트맥스 벡터의 카테고리 분포의 모수 (p1,....,pk)를 모델링할 수 있습니다.
원핫벡터로 표현한 정답 레이블 y=(y1,....,yK)을 관찰데이터로 이용해 확률분포인 소프트맥스 벡터의 로그가능도를 최적화할 수 있습니다.
딥러닝 분류문제의 MLE는 다음과 같은 수식으로 표현됩니다.
k=1,....,K까지 모든 클래스의 개수에 대해서 i=1,....,n까지 모든 데이터에 대해 MLP의 k번째 예측값의 log 값과 정답 레이블에 해당하는 y의 k번째 주소 값을 곱한 것들의 덧셈으로 표현됩니다.

이 부분에 대해서는 차후에 다시 정리하겠습니다.
5️⃣ 두 확률분포 사이의 거리
기계학습에서 사용되는 손실함수들은 모델이 학습하는 확률분포와 데이터에서 관찰되는 확률분포의 거리를 통해 유도합니다.
데이터 공간에 두 개의 확률분포 P(x),Q(x)가 있을 경우 두 확률분포 사이의 거리(distance)를 계산할 때 다음과 같은 함수들을 이용합니다.
- 총변동 거리 (Total Variation Distance, TV)
- 쿨백-라이블러 발산 (Kullback-Leibler Divergence, KL)
- 바슈타인 거리 (Wasserstein Distance)
여기서는 쿨백-라이블러 발산 (Kullback-Leibler Divergence, KL)에 대해 짤막하게 소개하겠습니다.
1) 쿨백-라이블러 발산 (Kullback-Leibler Divergence, KL)
쿨백-라이블러 발산(KL Divergence)은 다음과 같이 정의합니다.

쿨백 라이블러는 다음과 같이 분해할 수 있습니다.

분류 문제에서 정답레이블을 P, 모델 예측을 Q라 두면 최대가능도 추정법은 쿨백-라이블러 발산을 최소화하는 것과 같습니다.
'부스트캠프 AI 테크 U stage > 이론' 카테고리의 다른 글
[11-1] Deep Learning의 발전 (0) | 2021.02.02 |
---|---|
[11] 조건부 확률과 베이즈 정리 (0) | 2021.02.01 |
[10] Python 시각화 모듈(matplotlib, seaborn) (0) | 2021.01.29 |
[09-1] 딥러닝에 사용되는 확률론 (0) | 2021.01.28 |
[09] Python pandas (2) (0) | 2021.01.28 |