[CS236n] 3. Maximum Likelihood Learning

Date:     Updated:

카테고리:

태그:


💡 이 글은 『2024 YAI 봄전반기 생성모델팀』으로 진행되었으며, CS236n Fall 2023를 따라 정리했습니다.

1. Introduction

2장에서 모델의 확률분포 $p_\theta(x)$를 어떻게 표현할 것인지의 예시로 각종 자가회귀모형(autoregressive model)에 대해 알아보았다. 3장에서는 이를 학습하는 방법 중 하나로 maximum likelihood learning을 알아본다.

본격적인 내용에 앞서 일반적인 생성모델의 학습(learning) 시의 가정과 그 목표를 확인하고자 한다.

먼저 생성모델의 학습 시의 가정은 다음과 같다. 학습하고자 하는 도메인의 분포가 $p_{data}$를 따르면, 우리는 그 중 $m$개의 샘플을 가진 데이터셋 $\mathcal{D}$를 가지고 있다. 이때의 가정은 IID(independent and identically distributed) 즉, 각각의 샘플이 서로 독립적이고 같은 분포를 따른다는 것이다.

생성모델의 학습 목표는 이 데이터셋을 가지고 모델의 파라미터 $\theta$를 학습하여 $p_{\theta}$를 $p_{data}$ 분포에 잘 근사하는 것이다. 그러나 데이터의 수가 유한하며, 계산이 어려우므로 완벽하게 일치하는 것은 불가능하다. 따라서 우리는 $p_{\theta}$를 $p_{data}$에 “최선“으로 근사하는 것을 목표로 한다. 그렇다면 무엇이 “최선“인가? 이는 생성모델의 학습 목적에 따라 다르다.

  • Density estimation: 전체 분포 $p_{data}$에 대한 정보가 중요하고, 조건부확률을 계산하고 싶을 때 (대부분의 생성 모델)
  • Specific prediction task: 이메일이 스팸인지 아닌지와 같은 특정 예측을 위해
  • Structure or knowledge discovery: 모델을 통해 데이터의 구조나 특징을 발견하고자 할 때

일반적인 생성모델은 density estimation을 목적으로 하므로, 이를 기준으로 학습 방법을 알아본다. 이때의 목표는 $p_{\theta}$를 $p_{data}$에 최대한 가깝게(“closeness”) 만드는 것이다. 이를 수학적으로 정의하는 방법은 다양하나, 중요한 예로 KL-divergence가 있다.


2. KL-divergence

KL-divergence는 두 확률 분포의 차이를 측정하는 척도이다. 두 분포 $p$, $q$의 Kullback-Leibler divergence (KL-divergence)는 다음과 같이 정의된다.

\[\begin{aligned} D_{KL}(p\parallel q) &= \sum_{x} p(x) \log \frac{p(x)}{q(x)} \\ &= \mathbb{E}_{x \sim p} \left[ \log \frac{p(x)}{q(x)} \right] \end{aligned}\]

KL-divergence의 성질은 다음과 같다.

  • $D_{KL}(p\parallel q) \geq 0$: 두 분포 간의 차이는 항상 0 이상이다.
  • $D_{KL}(p\parallel q) = 0$ $\iff$ $p = q$: 두 분포가 같을 때만 그 값이 0이 된다.
  • $D_{KL}(p\parallel q) \neq D_{KL}(q\parallel p)$: 교환법칙이 성립하지 않는다. (asymmetric)

KL-divergence는 두 분포의 차이를 측정하는 척도이므로, $p_{\theta}$가 $p_{data}$에 가까울수록 $D_{KL}(p_{data}\parallel p_{\theta})$는 작아진다. 따라서 생성모델의 학습 목표는 $D_{KL}(p_{data}\parallel p_{\theta})$를 최소화하는 것이다.

$D_{KL}(p_{data}\parallel p_{\theta})$를 $\log$를 활용하여 다음과 같이 변형할 수 있다.

\[\begin{aligned} D_{KL}(p_{data}\parallel p_{\theta}) &= \mathbb{E}_{x \sim p_{data}} \left[ \log \frac{p_{data}(x)}{p_{\theta}(x)} \right] \\ &= \mathbb{E}_{x \sim p_{data}} \left[ \log p_{data}(x) - \log p_{\theta}(x) \right] \\ &= \mathbb{E}_{x \sim p_{data}} \left[ - \log p_{\theta}(x) \right] + \mathbb{E}_{x \sim p_{data}} \left[ \log p_{data}(x) \right] \\ &= - \mathbb{E}_{x \sim p_{data}} \left[ \log p_{\theta}(x) \right] + \text{const} \end{aligned}\]

여기서 $\mathbb{E}_ {x \sim p_{data}} \left[ \log p_{data}(x) \right]$는 학습하고자 하는 파라미터 $\theta$와 무관하므로, 최소화하는 것은 의미가 없다. 따라서 $\mathbb{E}_ {x \sim p_{data}} \left[ \log p_{data}(x) \right]$는 상수로 취급할 수 있고, $D_{KL}(p_{data}\parallel p_{\theta})$를 최소화하는 것은 $\mathbb{E}_ {x \sim p_{data}} \left[ \log p_{\theta}(x) \right]$를 최대화하는 것과 같다. 이를 수학적으로는 다음과 같이 표현하고, 여기서 $\mathbb{E}_ {x \sim p_{data}} \left[ \log p_{\theta}(x) \right]$를 expected log-likelihood라고 한다.

\[\begin{aligned} \underset{\theta}{\mathrm{argmin}} D_{KL}(p_{data}\parallel p_{\theta}) &= \underset{\theta}{\mathrm{argmax}} \mathbb{E}_ {x \sim p_{data}} \left[ \log p_{\theta}(x) \right] \end{aligned}\]

그러나, 우리는 $p_{data}$를 알지 못하므로, $\mathbb{E}_ {x \sim p_{data}} \left[ \log p_{\theta}(x) \right]$를 직접 최대화할 수 없다. 따라서 데이터셋 $\mathcal{D}$에 대하여 log-likelihood를 계산한 empirical log-likelihood를 최대화하는 것으로 대체한다.

\[\begin{aligned} \mathbb{E}_ {\mathcal{D}} \left[ \log p_{\theta}(x) \right] &= \frac{1}{\left\vert \mathcal{D} \right\vert} \sum_{x \in \mathcal{D}} \log p_{\theta}(x) \\ \end{aligned}\]

이를 maximum likelihood estimation (MLE)이라고 하며, 이를 통해 $p_{\theta}$를 $p_{data}$에 최대한 가깝게 만들 수 있다. 수학적으로 나타내면 다음과 같고, 이는 데이터의 likelihood $P_{\theta}(x^{(1)}, x^{(2)}, \cdots, x^{(m)}) = \prod_{x \in \mathcal{D}} p_{\theta}(x)$를 최대화하는 것과 같다.

\[\begin{aligned} \theta &= \underset{\theta}{\mathrm{argmax}} \mathbb{E}_ {\mathcal{D}} \left[ \log p_{\theta}(x) \right] \\ &= \underset{\theta}{\mathrm{argmax}} \frac{1}{\left\vert \mathcal{D} \right\vert} \sum_{x \in \mathcal{D}} \log p_{\theta}(x) \\ \end{aligned}\]


3. Monte Carlo estimation

구할 수 없는 $\mathbb{E}_ {x \sim p_{data}} \left[ \log p_{\theta}(x) \right]$ 대신 $\mathbb{E}_ {\mathcal{D}} \left[ \log p_{\theta}(x) \right]$를 사용하여 학습을 진행하는 것은 충분히 직관적이다. 이를 수학적으로는 Monte Carlo estimation을 통해 정당화할 수 있다. 몬테 카를로 방법은 복잡한 확률분포 $p$를 가진 시스템에서 어느 확률 분포 $g$의 기댓값을 추정하는 표본추출 방법이다. 몬테 카를로 방법의 핵심은 “엄청나게 많은 시도”를 하면 어떤 확률 분포의 기댓값을 추정할 수 있다는 것이다.

몬테 카를로 방법의 핵심 아이디어는 다음과 같다.

  1. 확률분포 $g$의 기댓값을 다음과 같이 나타낸다.

    \[\mathbb{E}_ {x \sim P} \left[ g(x) \right] = \sum_{x} g(x) P(x)\]
  2. 분포 $P$에서 $T$개의 샘플 $x^1, x^2, \cdots, x^T$를 추출한다.
  3. 이를 이용하여 기댓값을 추정한다.

    \[\hat{g} (x^1, x^2, \cdots, x^T) := \frac{1}{T} \sum_{t=1}^{T} g(x^t)\]

이때 Monte Carlo estimate $\hat{g}$의 특성 3가지는 다음과 같다.

  1. Unbiased

    \[\mathbb{E}_ P[\hat{g}] = \mathbb{E}_ P[g(x)]\]
  2. Convergence

    \[\lim_{T \to \infty} \hat{g} = \mathbb{E}_ P[g(x)]\]
  3. Variance

    \[V_ P[\hat{g}] = \frac{1}{T} V_ P[g(x)]\]

여기서 $P=p_{data}$, $g(x) = \log p_{\theta}(x)$로 두면, $\mathbb{E}_ {x \sim p_{data}} \left[ \log p_{\theta}(x) \right]$를 $\mathbb{E}_ {\mathcal{D}} \left[ \log p_{\theta}(x) \right]$로 추정하는 과정이 곧 Monte Carlo estimation임을 알 수 있다. 그리고 충분히 큰 수의 데이터셋이 있다면 Monte Carlo estimate는 $\mathbb{E}_ {x \sim p_{data}} \left[ \log p_{\theta}(x) \right]$에 수렴하며, 분산의 크기도 감소한다는 것을 알 수 있다.


4. Maximum likelihood learning

4.1. Biased coin example

지금까지의 과정을 예시로 들어보자. 동전을 던져서 앞면을 $H$, 뒷면을 $T$라 하고, 데이터셋 $\mathcal{D} = \lbrace H, H, T, H, T \rbrace $가 있다고 하자. 이러한 예시는 일반적인 우리의 상식대로, 앞면과 뒷면이 동일한 횟수가 나온 것이 아니므로 이를 따 “biased coin”이라고 부른다. 이때 중요한 가정은 이 과정이 확률분포 $p_{data}$를 따른다는 것이다. 이때 동전의 앞면과 뒷면의 확률분포를 학습하기 위하여 모델을 다음과 같이 정의하자.

\[\begin{aligned} p_{\theta}(x=H)=\theta, \quad p_{\theta}(x=T)=1-\theta \end{aligned}\]

그렇다면 데이터셋에 대하여 empirical likelihood는 다음과 같이 계산할 수 있다. (예시의 특성상 log-likelihood가 아닌 likelihood를 계산하였다.)

\[\begin{aligned} P_{\theta}(H, H, T, H, T) &= p_{\theta}(H) \cdot p_{\theta}(H) \cdot p_{\theta}(T) \cdot p_{\theta}(H) \cdot p_{\theta}(T) \\ &= \theta \cdot \theta \cdot (1-\theta) \cdot \theta \cdot (1-\theta) \end{aligned}\]

empirical likelihood를 그래프로 나타내면 다음과 같다.

우리는 empirical likelihood를 최대화하는 $\theta$를 찾는 것이 목표이다. 그래프를 보면 $\theta=0.6$일 때 empirical likelihood가 최대임을 알 수 있다. 이처럼 MLE를 통해 데이터셋에 대한 확률분포를 학습할 수 있다.

4.2. Autoregressive model

그렇다면 MLE를 통해 autoregressive model을 어떻게 학습할지도 알아보자. 먼저 일반적인 autoregressive model을 다음과 같이 정의하자. 여기서 $\theta = (\theta_1, \theta_2, \cdots, \theta_n)$은 모델의 파라미터이다.

\[\begin{aligned} p_{\theta}(x) = \prod_{i=1}^{n} p_{\mathrm{Neural}}(x_i \mid \mathbf{x}_ {<i}; \theta_i) \end{aligned}\]

데이터셋 $\mathcal{D} = \lbrace x^{(1)}, x^{(2)}, \cdots, x^{(m)} \rbrace$이 주어진 autoregressive model의 empirical likelihood 함수는 다음과 같이 나타낼 수 있다.

\[\begin{aligned} \mathcal{L}(\theta, \mathcal{D}) &= \prod_{j=1}^{m} p_{\theta}(x^{(j)}) \\ &= \prod_{j=1}^{m} \prod_{i=1}^{n} p_{\mathrm{Neural}}(x_i^{(j)} \mid \mathbf{x}_ {<i}^{(j)}; \theta_i) \\ \end{aligned}\]

우리의 목표는 $\mathcal{L}(\theta, \mathcal{D})$를 최대화하는 $\theta$를 찾는 것이고, 계산상의 편의를 위해 $\mathcal{L}(\theta, \mathcal{D})$에 $\log$를 취한 $\ell(\theta)$를 최대화하는 것으로 대체한다.

\[\begin{aligned} \ell(\theta) &= \log \mathcal{L}(\theta, \mathcal{D}) \\ &= \sum_{j=1}^{m} \sum_{i=1}^{n} \log p_{\mathrm{Neural}}(x_i^{(j)} \mid \mathbf{x}_ {<i}^{(j)}; \theta_i) \\ \end{aligned}\]

4.1절의 biased coin example과는 달리, 이처럼 복잡한 함수는 $\theta$를 바로 계산하는 것이 어렵다. (이를 “closed form solution을 가지고 있지 않다“고 표현한다.) 따라서 gradient descent를 사용한다. 이 방법은 다른 머신러닝 및 딥러닝 알고리즘 기초에서도 많이 설명하는 개념이므로, 이에 대한 설명은 간단하게만 작성하였다. 순서는 다음과 같다.

  1. $\theta^0 = (\theta_1, \theta_2, \cdots, \theta_n)$를 초기화한다.
  2. $\nabla_{\theta} \ell(\theta)$를 계산한다. (backpropagation)

    \[\begin{aligned} \nabla_{\theta} \ell(\theta) &= \sum_{j=1}^{m} \sum_{i=1}^{n} \nabla_{\theta} \log p_{\mathrm{Neural}}(x_i^{(j)} \mid \mathbf{x}_ {<i}^{(j)}; \theta_i) \\ \end{aligned}\]
  3. $\theta^{t+1} = \theta^t + \alpha \nabla_{\theta} \ell(\theta)$를 계산한다. ($\alpha$: learning rate)
  4. $\theta^{t+1}$가 수렴할 때까지 2, 3을 반복한다.

참고로, parameter sharing을 사용하지 않는 autoregressive model의 경우 다음과 같이 각각의 $p_{\mathrm{Neural}}(x_i \mid \mathbf{x}_ {<i}; \theta_i)$에 대하여 최적화를 따로 진행할 수도 있다.

\[\begin{aligned} \nabla_{\theta_i} \ell(\theta) &= \sum_{j=1}^{m} \nabla_{\theta_i} \log p_{\mathrm{Neural}}(x_i^{(j)} \mid \mathbf{x}_ {<i}^{(j)}; \theta_i) \\ \end{aligned}\]

4.3. Limitation

4.1절에서 데이터셋 $\mathcal{D} = \lbrace H, H, T, H, T \rbrace$에 대해 MLE를 진행하여 최적의 $\theta=0.6$을 얻었다. 이는 데이터셋 $\mathcal{D}$로부터 앞면이 나올 확률이 $0.6$인 것과 동일한 결과이다. 그러나 이는 우리의 상식인 앞면이 나올 확률인 $0.5$와는 다른 결과이다. 즉, MLE는 주어진 데이터를 잘 설명하지만, 데이터 분포에 대한 가설을 설명하지 않고 지나치게 overfitting 될 수 있다는 문제가 있다. 이러한 문제를 해결하기 위해 regularization을 사용하거나, 또 다른 데이터 분포를 추정하는 방법론을 사용할 수 있다. 다른 방법론들은 이후 다른 생성모델들을 다루면서 소개될 것이다.


5. Summary

[CS236n] 3. Maximum Likelihood Learning에서는 생성모델의 학습 방법 중 하나인 maximum likelihood learning에 대해 알아보았다. 이는 데이터셋 $\mathcal{D}$에 대하여 모델의 파라미터 $\theta$를 학습하여 $p_{\theta}$를 $p_{data}$에 최대한 가깝게 만드는 것을 목표로 한다. 이 과정은 수학적으로는 KL-divergence를 최소화하는 것과 동일하며, 이를 Monte Carlo estimation을 통해 수학적으로 정당화할 수 있다. 그 예시로, biased coin example과 autoregressive model에서 MLE를 진행하는 방법과 MLE의 한계를 알아보았다.


CS236n 카테고리 내 다른 글 보러가기

댓글 남기기