[3-1] Model Learning: Maximum likelihood estimation (MLE)
아래 references의 강의 및 자료들을 공부하고 짧게 정리한 내용입니다! 저도 공부하면서 정리한 내용이라 틀린 것이 있다면 언제든 댓글 달아주신다면 감사하겠습니다~ :D
____
이번 및 다음 포스팅에서는 fully-observed graphical model일 때와 partially-observed graphical model일 때의 learning방법에 대해 살펴보려고 한다. fully-observed GM의 경우 일반적으로 우리가 사용하는 classification model과 유사하게 생각하면 되는데, input random variable x1, ..., xn을 모두 관측할 수 있는 경우이다. paritally-observed GM의 경우 VAE와 같이 hidden variable을 사용하는 경우를 생각하면 된다. 이러한 hidden variable을 왜 사용하게 되는지는 partially-observed GM 포스팅에 설명할 예정이다!
요약하면 우리가 딥러닝을 학습할 때 편안하게 사용하고 있는 maximum likelihood estimation(MLE)에 대해 다시 한번 살펴보고, 공부하다 보면 가끔씩 나오는 EM algorithm은 언제 왜 써야하는지에 대한 내용을 다뤄보려고 한다. 이번 포스팅에서는 MLE에 대한 내용만 다룰 예정이다.
1. Parameter learning for fully observed GM
1.1 Undirected model에서 p(x) 정의를 exponential family 형태로 나타내면?
Undirected / directed model에 대해 다시 한번 간단히 요약해보면, random variable간 연결성을 DAG로 나타낼 수 있어 방향성이 있는 경우는 directed model, 없는 경우는 undirected model에 해당한다. 예시로는 directed model의 경우 DAG 조건을 만족하는 generation model, undirected model의 경우 BERT같은 representation learning model이나 classification model이 해당될 수 있을 것 같다. 자세한 내용은 PGM 포스팅 2편: PGM representations에 정리되어 있다.
앞서 PGM 포스팅 2편: PGM representations에서는 undirected model에서의 joint probability distribution p(x)를 다음과 같이 정의했다:
여기서 θ는 함수 ϕ의 parameter이다. 그냥 input x_c를 함수 ϕ를 통해 logit으로 만들고, partition function Z(θ)로 나누어 줌으로써 probability 값으로 변환해줬다는 정도로 이해하면 된다. (PGM 포스팅 2편에 자세히 설명되어있지만 결과적으로 softmax가 된다.) 이 p(x) representation수식을 exponential family 형태로 다음과 같이 정리해볼 수 있다 (이전 포스팅 exponential family Section 1 참조):
즉 indicator function 1{xc' = xc}가 T(x)(여기서는 f(x)로 표기)로, model parameter θ가 natural parameter η로 mapping될 수 있으므로 Z(θ)에서 Z(η)로, logϕ함수는 parameter η로 매칭된 것을 볼 수 있다.
갑자기 웬 exponential family?? 라고 생각할 것이다. 하지만 우리가 딥러닝에서 사용하는 모델들은 거의 대부분 exponential family의 cost 함수를 optimize하고 있다. 예를 들어 language model이나 classification model이라면 categorical distribution이므로 bernoulli를, diffusion같은 이미지 생성 모델이라면 gaussian을 기반으로 하고 있다. 다음 포스팅에 guassian mixture가 나올 예정이므로 여기서는 예시로 계속 classification model을 생각해보기로 하자. 구하고자 하는 것은 각 class의 발생 확률이므로 bernoulli distribution의 canonical parameter를 추정하면 된다.
1.2 Exponential family에서 MLE(maximum liklihood estimation)
그럼 이제 undirected model의 p(x)도 exponential family 형태로 나타낼 수 있다는 것을 알았고, 우리는 exponential family안의 distribution (ex. bernoulli distribution)을 optimize할 것이다. exponential family(이전 포스팅 Section 3의 수식들과 같습니다)에서의 p(x) 수식을 정의했던 것을 다시 한번 확인해보자:
maximum likelihood estimation은 이 p(x)의 log likelihood를 maximize하는 parameter η를 찾는 것이다. 따라서 먼저 N개의 dataset D = {x1, ..., xn}이 주어졌을 때 log p(x)를 정의해보면:
dataset D 내 각 요소 x_i간의 iid(independent and identically distributed) assumption을 이용하기 때문에 둘째 줄에서 log product와 같은 형태의 수식이 나오고, 마지막 줄은 log를 안에 넣어줌으로써 곱셈 연산을 없앤 결과이다.
위 식에서 log partition function A(η)를 구하는 것이 문제인데, 보통 구할 수 없기 때문에 PGM 포스팅 2편에서 소개한 restricted boltzmann machine처럼 contrastive divergence를 통해 partition function을 구하지 않는 방법 등을 사용한다. 하지만 exponential family의 경우 이 점을 걱정하지 않아도 된다. 위 loss의 gradient를 구할 때 dA(η)/dη = μ가 되기 때문인데, 자세한 내용은 exponential family 포스팅 Section 3에 소개되어 있다!
어쨌든 위 loss L을 parameter η에 대해 미분한 값이 0이 되는 지점이 최적점이므로, 다음과 같이 η에 대해 미분해보면:
exponential family 포스팅에서 dA(η)/dη = E_x~p(x) [T(x)]가 됨을 보였는데, 위 식을 통해 MLE를 optimize하면 결과적으로 dA(η)/dη = empirical mean이 됨을 볼 수 있다. 결과적으로 exponential family에서의 MLE는 실제 x의 distribution p(x)에 대한 기댓값 E_x~p(x) [T(x)]를 data의 empirical mean에 매칭해나가는 과정으로 볼 수 있다. 이러한 것을 moment matching이라고 한다고 한다.
결과적으로 MLE optimization을 통해 μ^을 구하게 되면, natural parameter η^ 또한 구할 수 있고(exponential family 포스팅 Section 5 참조) 결과적으로 원하는 bernoulli/gaussian/... distribution을 모델링할 수 있다.
뭐 어쩌라는거지? 라는 생각이 들 수 있는데 결과적으로 classification모델을 만들 때 우리가 알고 있는 bernoulli distribution에서의 log loss(=cross entropy =forward KL)를 일반화한 내용이라고 볼 수 있다. 즉 forward KL: KL(P||Q)에서 P는 실제 data의 distribution, Q는 model이 학습한 distribution이 되는데 위의 과정들은 Q를 exponential family로 한정한 내용이다. 뿐만 아니라 MLE의 경우 P를 P^인 empirical data distribution으로 대체하는 과정이 된다.
결과적으로 categorical data에 대해서 위 내용은 아래 forward KL (= cross entropy)식을 optimize하는 과정과 같다:
결과적으로 위의 과정에서 loss L을 최대화하는 지점은 E_x~p(x) [T(x)] = data의 empirical mean일때 임을 보였는데, 여기서도 KL을 minimize하는 과정은 data의 empirical mean을 maximize하는 과정과 같음을 볼 수 있다. 사실 exponential family식을 bernoulli distribution에 대해 특화하면 당연히 얻을 수 있는 식이다. forward KL, reverse KL, cross entropy에 관한 내용은 이 포스팅에 정리할 예정이다.
2. Directed model(Bayesian Network)
2.1 MLE에서의 overfitting: MAP inference
사실 MLE에는 치명적인 단점이 있다. 어떤 biased coin이 있고, 이 coin에서 head와 tail이 나올 확률을 구해야 하는 상황을 생각해보자. 즉 우리는 bernoulli distribution에서 p(x)를 구하고 싶은 것이다.
위 그림처럼 head가 나올 확률을 θ로 두고 p(x)를 모델링해보면 맨 아랫줄과 같은 식이 된다. 따라서 여기에 log를 취하면 loss는:
가 된다. 이 경우 optimal theta 값은
가 된다. 이러한 경우 만약 실제 θ가 1/70이더라도, 데이터가 D = {tail, tail, tail, tail}이라면 θ = 0이 되는 것이다. 물론 요즘에는 large-scale model을 학습하며 엄청난 양의 internet scale data를 쓰기 때문에 이러한 문제가 매우 완화된 편이다.
따라서 MLE로 optimize하는 경우에는 데이터에 따라 parameter 추정값이 달라지기 때문에 empirical risk가 크다. 따라서 never seen data에도 generalize하는 방법이 필요한데, bayes rule을 쓰면 이러한 문제를 해결할 수 있다:
즉 위 bayes rule 식에서와 같이, MLE에서 p(x|θ)를 optimize했던 것을 p(θ|x)를 optimize하는 것으로 바꾸는 것이다. 어차피 p(θ|x)를 maximize하는 θ를 찾는 것이므로 gradient를 구하는 과정에서 분모는 무시할 수 있고, 따라서 p(x|θ)p(θ)를 maximize하는 θ값을 찾으면 된다. 이것을 MAP(maximum a posterior) inference라고 한다. MAP에 대한 자세한 설명은 이 블로그에 나와있다:
https://process-mining.tistory.com/126
MAP estimation (Maximum A Posterior estimation)이란? (MAP와 MLE, MAP estimation의 단점)
Maximum Likelihood Estimation은 우리가 어떤 parameter를 추정할 때, likelihood 값을 최대로 하는 parameter를 찾는 과정을 말한다. 하지만 Maximum Likelihood Estimation은 우리가 기본적으로 알고 있는 데이터의 사전
process-mining.tistory.com
보통 p(θ)를 prior distribution이라고 하는데, 그럼 prior는 어떻게 구하지? 라고 생각할 것이다. 이 때 conjugate prior를 이용하면 되는데, 만약 p(x|θ)가 bernoulli distribution이라면 bernoulli의 conjugate prior인 beta distribution을, gaussian이라면 gaussian의 conjugate prior인 gaussian distribution을 이용하면 된다. conjugate prior에 대한 자세한 설명은 이 블로그에 나와있다:
https://untitledtblog.tistory.com/188
Conjugate Prior의 정의와 예제
1. Conjugate Prior의 정의 베이지안 머신러닝 (Bayesian machine learning)에서는 주어진 데이터셋 $\mathcal{D}$에 대해 모델 매개변수 $\theta$의 사후 확률 (posterior probability) $p(\theta|\mathcal{D})$를 최대화하도록
untitledtblog.tistory.com
추후 probability distribution 종류 및 conjugate prior에 대한 내용은 이 포스팅에 정리할 계획이다!
2.2 Bayesian Networks
위 경우처럼 bayes rule은 model parameter θ에 대한 prior를 제공하여 MLE의 단점을 보완하는데도 사용되지만, directed model(=bayesian network)에서의 maximum likelihood를 계산하는데도 사용될 수 있다. directed model은 아래와 같은 경우를 생각하면 된다:
random variable간에 direction이 존재하므로 random variable의 값은 그 변수의 parents variable에 영향을 받게 된다. 따라서 conditional probability들의 곱으로 p(x)를 나타낼 수 있었다.
결과적으로 bayesian network에서의 p(x)는 다음과 같이 정의될 수 있다:
여기서 πi는 xi의 parents들 집합을 의미한다. n개의 data가 주어졌을 때 log loss의 모습은 다음과 같다:
이런 sequential model에 대한 예시가 궁금할텐데, 강의에는 tabular model에 대한 예시가 주로 나와있었다. 또한 최근에 소개된 GFlowNet의 경우 DAG조건을 만족하기 때문에 위 bayesian model의 loss와 유사한 형태의 loss를 optimize한다. GFlowNet의 경우에는 markov property 또한 가정하기 때문에 위의 conditional probability p(x_i|x_πi)에서 x_πi가 하나의 parent로 한정되어 연산이 쉬워지는데, 다른 경우 어떤 모델이 있고 어떻게 계산하는지는 아직 잘 모르겠다. ㅠㅠ DAG는 아니지만 유사하게 language generation model의 경우, p(x1, ..., xn) = p(xn|xn-1, ..., x1) ... p(x2|x1) p(x1)을 계산하는데, 각각의 conditional probability를 masking 및 attention block을 통해 추정하고 있다!
현재까지는 fully-observed GM의 learning에 대해 살펴보았다. 다음 포스팅에서는 partially-observed GM의 learning에 사용되는 EM algorithm에 대해 살펴볼 예정이다!