for textmining

Generative Adversarial Network

|

이번 글에서는 Generative Adversarial Network(이하 GAN)에 대해 살펴보도록 하겠습니다. 이 글은 전인수 서울대 박사과정이 2017년 12월에 진행한 패스트캠퍼스 강의와 위키피디아 등을 정리했음을 먼저 밝힙니다. 그럼 시작하겠습니다.

concept

Ian Goodfellow가 2014년 제안한 GAN은 생성자(generator, $G$)와 구분자(discirimiator, $D$), 두 네트워크를 적대적(adversarial)으로 학습시키는 비지도 학습 기반 생성모델(unsupervised generative model)입니다. $G$는 Zero-Mean Gaussian으로 생성된 $z$를 받아서 실제 데이터와 비슷한 데이터를 만들어내도록 학습됩니다. $D$는 실제 데이터와 $G$가 생성한 가짜 데이터를 구별하도록 학습됩니다. GAN의 궁극적인 목적은 실제 데이터의 분포에 가까운 데이터를 생성하는 것입니다. GAN을 도식화한 그림은 다음과 같습니다.

목적함수

GAN의 목적함수는 다음과 같습니다. 게임이론 타입의 목적함수로 두 명의 플레이어($G$와 $D$)가 싸우면서 서로 균형점(nash equilibrium)을 찾아가도록 하는 방식입니다.

[\min { G }{ \max _{ D }{ V\left( D,G \right) } } ={ E }{ x\sim { p }{ data }\left( x \right) }\left[ \log { D\left( x \right) } \right] +{ E }{ z\sim { p }_{ z }\left( z \right) }\left[ \log { \left{ 1-D\left( G\left( z \right) \right) \right} } \right]]

우선 $D$ 입장에서 살펴보겠습니다. 실제 데이터($x$)를 입력하면 높은 확률이 나오도록 하고($D(x)$를 높임), 가짜 데이터($G(z)$)를 입력하면 확률이 낮아지도록($1-D(G(z))$를 낮춤=$D(G(z))$를 높임) 학습됩니다. 다시 말해 $D$는 실제 데이터와 $G$가 만든 가상데이터를 잘 구분하도록 조금씩 업데이트됩니다.

이번엔 $G$를 살펴보겠습니다. Zero-Mean Gaussian으로 뽑은 노이즈 $z$를 받아 생성된 가짜 데이터($G(z)$)를 $D$에 넣었을 때, 실제 데이터처럼 확률이 높게 나오도록($1-D(G(z))$를 높임=$D(G(z))$를 낮춤) 학습됩니다. 다시 말해 $G$는 $D$가 잘 구분하지 못하는 데이터를 생성하도록 조금씩 업데이트됩니다.

실제 학습을 진행할 때는 두 네트워크를 동시에 학습시키지 않고 따로따로 업데이트를 합니다. $D$를 학습시킬 때는 $G$를 고정한 상태에서, $G$를 학습시킬 때는 $D$를 고정한 상태에서 진행한다는 이야기이죠.

우선 $D$를 학습하기 위한 목적함수는 다음과 같이 다시 쓸 수 있습니다. 즉 $G$의 파라메터를 고정한 상태에서 실제 데이터 $m$개, $G$가 생성한 가짜 데이터 $m$개를 $D$에 넣고 $V$를 계산한 뒤, $D$에 대한 $V$의 그래디언트를 구하고 $V$를 높이는 방향으로 $D$의 파라메터를 업데이트합니다.

[\begin{align} \max _{ D }{ V\left( D \right) } =&{ E }_{ x\sim { p }_{ data }\left( x \right) }\left[ \log { D\left( x \right) } \right] +{ E }_{ z\sim { p }_{ z }\left( z \right) }\left[ \log { \left{ 1-D\left( z \right) \right} } \right] \ =&\frac { 1 }{ m } \sum _{ i=1 }^{ m }{ \log { D\left( { x }^{ i } \right) } } +\frac { 1 }{ m } \sum _{ i=1 }^{ m }{ \log { \left{ 1-D\left( G\left( { z }^{ i } \right) \right) \right} } } \end{align}]

$G$의 목적함수는 다음과 같습니다. $D$의 파라메터를 고정한 상태에서 가짜 데이터 $m$개를 생성해 $V$을 계산한 뒤, $G$에 대한 $V$의 그래디언트를 구하고 $V$를 낮추는 방향으로 $G$의 파라메터를 업데이트합니다.

[\begin{align} \min _{ G }{ V\left( G \right) } =&{ E }_{ z\sim { p }_{ z }\left( z \right) }\left[ \log { \left{ 1-D\left( G\left( z \right) \right) \right} } \right] \ =&\frac { 1 }{ m } \sum _{ j=1 }^{ m }{ \log { \left{ 1-D\left( G\left( { z }^{ j } \right) \right) \right} } } \end{align}]

학습 초기에 $G$가 생성하는 데이터의 품질은 조악할 것입니다. 이 경우 $D$는 확실하게 가짜 데이터라고 잘 구분하게 되겠죠. $D(G(z))$가 0에 가까울 것이라는 이야기입니다.

그런데 목적함수를 잘 보면 expectation 안쪽이 $\log{(1-x)}$ 꼴임을 알 수 있습니다. 이 경우 $x$가 0일 때 기울기가 작습니다. 학습 초기 $G$의 파라메터를 팍팍 업데이트해줘야 하는데 그러지 못할 가능성이 크다는 말입니다.

이에 $G$의 목적함수를 아래처럼 살짝 바꿔서 초기 $G$ 학습을 가속화합니다. $\log(x)$의 경우 $x$가 0일 때 기울기가 매우 큽니다.

[\min { G }{ V\left( G \right) } ={ E }{ z\sim { p }{ z }\left( z \right) }\left[ \log { \left{ 1-D\left( G\left( z \right) \right) \right} } \right] \ \Rightarrow -{ E }{ z\sim { p }_{ z }\left( z \right) }\left[ \log { D\left( G\left( z \right) \right) } \right]]

학습

몇 가지 수식을 통해 GAN 학습 과정을 좀 더 살펴보도록 하겠습니다. 이상적인 경우, 즉 $G$가 매우 학습이 잘 되었다면 $G$가 Zero-Mean Gaussian으로 뽑은 노이즈 $z$를 받아 생성한 데이터와 실제 데이터가 일치할 것입니다($G(z)=x$, $p_g(x)=p_{data}(x)$). 이 경우 최적의 구분자 $D$는 다음과 같이 식을 쓸 수 있습니다.

[\begin{align} D^{ * }=&\max _{ D }{ V\left( D \right) } \ =&{ E }_{ x\sim { p }_{ data }\left( x \right) }\left[ \log { D\left( x \right) } \right] +{ E }_{ z\sim { p }_{ z }\left( z \right) }\left[ \log { \left{ 1-D\left( G\left( z \right) \right) \right} } \right] \ =&{ E }_{ x\sim { p }_{ data }\left( x \right) }\left[ \log { D\left( x \right) } \right] +{ E }_{ x\sim { p }_{ g }\left( x \right) }\left[ \log { \left{ 1-D\left( x \right) \right} } \right] \ =&\int _{ x }^{ }{ { p }_{ data }\left( x \right) \log { D\left( x \right) } dx } +\int _{ x }^{ }{ { p }_{ g }\left( x \right) \log { \left{ 1-D\left( x \right) \right} } dx } \ =&\int _{ x }^{ }{ { p }_{ data }\left( x \right) \log { D\left( x \right) } +{ p }_{ g }\left( x \right) \log { \left{ 1-D\left( x \right) \right} } dx } \end{align}]

위 식이 최대화되는 지점은 위 식을 우리가 알고자 하는 $D(x)$로 미분한 값이 0이 되는 지점입니다. 식을 $D(x)$로 미분한 결과를 0으로 만든 식을 $D(x)$로 정리하면 다음과 같습니다. 아래 식에 원래 가정($p_g(x)=p_{data}(x)$)을 대입해 풀면 최적의 구분자 $D$는 1/2로 수렴합니다.

[D^{ * }\left( x \right)=\frac { { p }{ data }\left( x \right) }{ { p }{ data }\left( x \right) +{ p }_{ g }\left( x \right) }]

$D$는 데이터 $x$가 주어졌을 때 실제 데이터($y=1$)일 확률을 의미합니다. 이를 베이즈룰을 이용해 정리하면 최적의 $D$는 사전확률 $p(y=1)$와 $p(y=0)$이 1/2로 서로 같을 때 도출됩니다.

[\begin{align} p\left( y=1|x \right) =&\frac { p\left( x,y=1 \right) }{ p\left( x \right) } \ =&\frac { p\left( x,y=1 \right) /p\left( y=1 \right) }{ \left{ p\left( x,y=1 \right) +p\left( x,y=0 \right) \right} /p\left( y=1 \right) } \ =&\frac { p\left( x|y=1 \right) }{ p\left( x|y=1 \right) +p\left( x|y=0 \right) } \ =&\frac { p\left( x|y=1 \right) { 1 }/{ 2 } }{ p\left( x|y=1 \right) { 1 }/{ 2 }+p\left( x|y=0 \right) { 1 }/{ 2 } } \ =&\frac { p\left( x|y=1 \right) p\left( y=1 \right) }{ p\left( x|y=1 \right) p\left( y=1 \right) +p\left( x|y=0 \right) p\left( y=0 \right) } \end{align}]

GAN의 목적함수를 최적의 구분자 $D$를 전제하고 식을 정리하면 다음과 같습니다. 다시 말해 최적의 $D$가 전제된 상황이라면 GAN의 목적함수를 최적화하는 과정은 $p_{data}$와 $p_g$ 사이의 젠슨-섀넌 다이버전스(Jensen-Shannon divergence)를 최소화하는 것과 같습니다. 젠슨-섀넌 다이버전스는 두 확률 분포 간 차이를 재는 함수의 일종인데요. 데이터의 분포와 $G$가 생성하는 분포 사이의 차이를 줄인다고 해석할 수 있습니다.

[\begin{align} \min _{ G }{ V\left( { D }^{ * },G \right) } =&{ E }_{ x\sim { p }_{ data }\left( x \right) }\left[ \log { { D }^{ * }\left( x \right) } \right] +{ E }_{ x\sim { p }_{ g }\left( x \right) }\left[ \log { \left{ 1-{ D }^{ * }\left( x \right) \right} } \right] \ =&{ E }_{ x\sim { p }_{ data }\left( x \right) }\left[ \log { \frac { { p }_{ data }\left( x \right) }{ { p }_{ data }\left( x \right) +{ p }_{ g }\left( x \right) } } \right] +{ E }_{ x\sim { p }_{ g }\left( x \right) }\left[ \log { \frac { { p }_{ g }\left( x \right) }{ { p }_{ data }\left( x \right) +{ p }_{ g }\left( x \right) } } \right] \ =&\int _{ x }^{ }{ { p }_{ data }\left( x \right) \log { \frac { { p }_{ data }\left( x \right) }{ { p }_{ data }\left( x \right) +{ p }_{ g }\left( x \right) } } dx } +\int _{ x }^{ }{ { p }_{ g }\left( x \right) \log { \frac { { p }_{ g }\left( x \right) }{ { p }_{ data }\left( x \right) +{ p }_{ g }\left( x \right) } } dx } \ =&-\log { 4 } +\int _{ x }^{ }{ { p }_{ data }\left( x \right) \log { \frac { 2\cdot { p }_{ data }\left( x \right) }{ { p }_{ data }\left( x \right) +{ p }_{ g }\left( x \right) } } dx } +\int _{ x }^{ }{ { p }_{ g }\left( x \right) \log { \frac { 2\cdot { p }_{ g }\left( x \right) }{ { p }_{ data }\left( x \right) +{ p }_{ g }\left( x \right) } } dx } \ =&-\log { 4 } +\int _{ x }^{ }{ { p }_{ data }\left( x \right) \log { \frac { { p }_{ data }\left( x \right) }{ \frac { { p }_{ data }\left( x \right) +{ p }_{ g }\left( x \right) }{ 2 } } } dx } +\int _{ x }^{ }{ { p }_{ g }\left( x \right) \log { \frac { { p }_{ g }\left( x \right) }{ \frac { { p }_{ data }\left( x \right) +{ p }_{ g }\left( x \right) }{ 2 } } } dx } \ =&-\log { 4 } +KLD\left( { p }_{ data }\left( x \right) ||\frac { { p }_{ data }\left( x \right) +{ p }_{ g }\left( x \right) }{ 2 } \right) +KLD\left( { p }_{ g }\left( x \right) ||\frac { { p }_{ data }\left( x \right) +{ p }_{ g }\left( x \right) }{ 2 } \right) \ =&-\log { 4 } +2\cdot JSD\left( { p }_{ data }\left( x \right) ||{ p }_{ g }\left( x \right) \right) \end{align}]

GAN의 학습과정을 도식화한 그림은 다음과 같습니다. 학습이 진행될 수록 $p_g$(녹색 실선)는 $p_{data}$(검정 점선), $D$(파란 점선)는 1/2로 수렴하는 것을 확인할 수 있습니다.

단점과 극복방안

GAN의 이론적 배경은 탄탄하지만, 실제 적용에는 많은 문제가 있습니다. 대표적으로 학습이 어렵다는 점을 꼽을 수 있겠습니다. 차례대로 살펴보겠습니다.

mode collapsing

mode collapsing이란 우리가 학습시키려는 모형이 실제 데이터의 분포를 모두 커버하지 못하고 다양성을 잃어버리는 현상을 가리킵니다. 그저 손실(loss)만을 줄이려고 학습을 하기 때문에 $G$가 전체 데이터 분포를 찾지 못하고, 아래 그림처럼 한번에 하나의 mode에만 강하게 몰리게 되는 경우입니다. 예컨대 MNIST를 학습한 $G$가 특정 숫자만 생성한다든지 하는 사례가 바로 여기에 속합니다.

진동

$G$와 $D$가 서로 진동하듯 수렴하지 않는 문제 역시 mode collapsing 문제와 관련이 있습니다.

mode collapsing 해결방안

mode collapsing 해결방안 가운데 간단하면서 효과적인 것으로 알려진 세 가지는 다음과 같습니다. 모델이 전체 데이터 분포의 경계를 골고루 학습하게 하고, 그것을 계속 기억할 수 있도록 하는 것이 핵심입니다.

  • feature matching : 가짜 데이터와 실제 데이터 사이의 least square error를 목적함수에 추가
  • mini-batch discrimination : 미니배치별로 가짜 데이터와 실제 데이터 사이의 거리 합의 차이를 목적함수에 추가
  • historical averaging : 배치 단위로 파라메터를 업데이트하면 이전 학습은 잘 잊히게 되므로, 이전 학습 내용을 기억하는 방식으로 학습

힘의 균형

$D$보다 $G$를 학습시키는 것이 일반적으로 어렵습니다. $G$가 학습이 잘 안되어서 둘 사이의 힘의 균형이 깨지는 경우 GAN 학습이 더 이상 진전될 수 없습니다. GAN 연구 초기에는 $G$를 $k$번 업데이트시키고, $D$를 한번 업데이트시키거나, 목적함수 비율을 조절하는 등 밸런스를 맞추기 위해 다양한 방식을 시도하였으나 뾰족한 대안이 되진 못했습니다. 그러나 최근엔 LSGAN, WGAN, F-GAN, EBGAN 등 손실함수를 바꿔서 이 문제를 해결한 연구가 여럿 제안되었습니다.

평가

GAN은 데이터 생성이 목적이기 때문에 정량적인 평가가 어렵습니다. 그럼에도 다음과 같은 세 가지 방식이 널리 쓰입니다.

  • 정성평가 : 사람이 직접 평가
  • 학습된 분류기를 이용 : 기존 뉴럴네트워크를 활용해 label이 있는 데이터 셋을 학습시킨다. 동일한 데이터로 GAN을 학습한 후 $G$를 이용해서 새로운 데이터를 생성하고 미리 학습시켜둔 분류기 모델에 넣어 분류를 시행한다. 이 때 (1)생성된 새로운 데이터가 한 범주에 높은 확률로 분류되거나 (2)전체적으로 다양한 범주의 데이터가 생성됐다면 GAN의 성능을 높다고 평가할 수 있다.
  • inception score : $G$가 생성한 데이터의 다양성(개성)을 측정하는 지표로 클 수록 좋다.

Comment  Read more

변분추론(Variational Inference)

|

이번 글에서는 Variational Inference(변분추론, 이하 VI)에 대해 살펴보도록 하겠습니다. 이 글은 전인수 서울대 박사과정이 2017년 12월에 진행한 패스트캠퍼스 강의와 위키피디아 등을 정리했음을 먼저 밝힙니다. 그럼 시작하겠습니다.

concept

VI란 사후확률(posterior) 분포 $p(z$|$x)$를 다루기 쉬운 확률분포 $q(z)$로 근사(approximation)하는 걸 말합니다. 사후확률 분포를 계산하는게 불가능에 가까울 정도로 어려운 경우가 많기 때문입니다. 가령 다음과 같은 경우입니다.

  • marginal probability, 즉 사후확률의 분모인 $p(x)=Σ_zp(x,z)$를 계산하기 힘든 경우
  • likelihood, 즉 $p(x$|$z)$를 더 복잡하게 모델링하고 싶은 경우
  • prior, 즉 $p(z)$를 더 복잡하게 모델링하고 싶은 경우

VI를 도식화한 그림은 아래와 같습니다. 사후확률 분포를 우리가 익히 알고 있는 정규분포로 근사한 케이스입니다.

KL Divergence

사후확률에 근사한 $q(z)$를 만들기 위해 쿨백-라이블러 발산(Kullback-Leibler divergence, 이하 KLD) 개념을 활용합니다. KLD는 두 확률분포의 차이를 계산하는 데 사용하는 함수인데요. 사후확률 분포 $p(z$|$x)$와 $q(z)$ 사이의 KLD를 계산하고, KLD가 줄어드는 쪽으로 $q(z)$를 조금씩 업데이트하는 과정을 반복하면 사후확률을 잘 근사하는 $q^*(z)$를 얻게 될 것이라는 게 VI의 핵심 아이디어입니다. KLD 식을 조금 변형하면 다음과 같이 유도할 수 있습니다.

[\begin{align} { D }_{ KL }\left( q\left( z \right) ||p\left( z|x \right) \right) =&\int { q\left( z \right) \log { \frac { q\left( z \right) }{ p\left( z|x \right) } } dz } \ =&\int { q\left( z \right) \log { \frac { q\left( z \right) p\left( x \right) }{ p\left( x|z \right) p\left( z \right) } } dz } \ =&\int { q\left( z \right) \log { \frac { q\left( z \right) }{ p\left( z \right) } } dz } +\int { q\left( z \right) \log { p\left( x \right) } dz } -\int { q\left( z \right) \log { p(x|z) } dz } \ =&{ D }_{ KL }\left( q\left( z \right) ||p\left( z \right) \right) +\log { p\left( x \right) } -{ E }_{ z\sim q\left( z \right) }\left[ \log { p(x|z) } \right] \end{align}]

이후 이 글에서는 동전던지기 예제를 바탕으로 VI를 설명하겠습니다.

conjugate distribution

동전던지기 실험은 이항분포를 따릅니다. 이항분포란 성공확률이 $p$이고, 그 결과가 성공 혹은 실패뿐인 실험을 $n$번 반복시행할 때 성공횟수의 분포를 가리킵니다. 이항분포 파라메터 $p$의 사전확률과 사후확률 모두 베타분포를 따르는데요. 이처럼 사전확률 분포와 사후확률 분포가 같은 가족군으로 묶일 때 그 사후확률/사전확률을 모두 묶어 켤레분포(conjugate distributions)라고 합니다.

$q(z)$를 $α_q$, $β_q$를 파라메터로 하는 베타분포, 앞면이 관측된 수를 $n_h$, 뒷면을 $n_t$로 둡시다. 이를 아래 식에 대입해 풀면 사후확률 분포 $p(z$|$x)$에 가장 잘 근사한 $q(z)$는 $α_q+n_h$, $β_q+n_t$를 파라메터로 하는 베타분포가 된다고 합니다. 이와 관련해서는 이 글, 수식 유도와 관련해서는 위키피디아를 참고하시면 좋을 것 같습니다.

Variational Inference with Monte Carlo sampling

몬테카를로 방법(Monte Carlo Method)이란 랜덤 표본을 뽑아 함수의 값을 확률적으로 계산하는 알고리즘을 가리킵니다. 수학이나 물리학 등에 자주 사용되며 계산하려는 값이 닫힌 형식(closed form)으로 표현되지 않거나 복잡한 경우에 그 값을 근사적으로 계산하려고 할 때 쓰입니다. 예컨대 특정 확률 분포를 따르는 $x$의 함수값의 기대값은 다음과 같이 $k$개 샘플로 근사하는 것입니다.

[\int { p\left( x \right) f\left( x \right) dx } ={ E }{ x\sim p\left( x \right) }\left[ f(x) \right] \approx \frac { 1 }{ K } \sum _{ i=0 }^{ K }{ { \left[ f({ x }{ i }) \right] }{ { x }{ i }\sim p\left( x \right) } }]

몬테카를로 방법을 KLD에 적용해 식을 정리하면 다음과 같습니다.

[\begin{align} { D }_{ KL }\left( q\left( z \right) ||p\left( z|x \right) \right) =&{ D }_{ KL }\left( q\left( z \right) ||p\left( z \right) \right) +\log { p\left( x \right) } -{ E }_{ z\sim q\left( z \right) }\left[ \log { p(x|z) } \right] \ =&{ E }_{ z\sim q\left( z \right) }\left[ \log { \frac { q\left( z \right) }{ p\left( z \right) } } \right] +\log { p\left( x \right) } -{ E }_{ z\sim q\left( z \right) }\left[ \log { p(x|z) } \right] \ \approx &\frac { 1 }{ K } \sum _{ i=0 }^{ K }{ { \left[ \log { \frac { q\left( { z }_{ i } \right) }{ p\left( { z }_{ i } \right) } } \right] }_{ { z }_{ i }\sim q\left( z \right) } } +\log { p\left( x \right) } -\frac { 1 }{ K } \sum _{ i=0 }^{ K }{ { \left[ \log { p\left( x|{ z }_{ i } \right) } \right] }_{ { z }_{ i }\sim q\left( z \right) } } \ =&\frac { 1 }{ K } \sum _{ i=0 }^{ K }{ { \left[ \log { q\left( { z }_{ i } \right) } -\log { p\left( { z }_{ i } \right) } -\log { p\left( x|{ z }_{ i } \right) } \right] }_{ { z }_{ i }\sim q\left( z \right) } } +\log { p\left( x \right) } \end{align}]

이렇게 되면 $q(z)$를 설정하는 것이 자유롭게 됩니다. 동전던지기 예제에서는 $q(z)$를 베타분포로 정하는 것이 자연스럽지만, 실제 문제에서는 사후확률 분포에 대해 아무런 정보가 없기 때문에 이렇게 VI를 진행하기 어렵습니다. 하지만 몬테카를로 방법을 이용하게 되면 $q(z)$를 어떤 분포든 사용할 수 있게 됩니다.

예컨대 사후분포에 대한 정보가 없어서 $q(z)$를 정규분포로 정했다고 칩시다. 이 정규분포에서 $K$개의 $z$들을 뽑으면 위 식, 즉 KLD의 근사값을 계산할 수 있게 됩니다. 정규분포의 파라메터는 평균과 분산이므로, 이들을 조금씩 바꿔가면서 KLD 근사값을 최소로 하는 평균과 분산을 구할 수 있을 것입니다. 이렇게 구해진 정규분포가 바로 VI의 결과가 됩니다.

Variational Inference with SGD

VI에 그래디언트 디센트(Gradient Descent)를 이용할 수도 있습니다. KLD를 줄이는 쪽으로 파라메터를 업데이트한다는 게 핵심 아이디어죠. 이를 Stochastic Variational Inference(SVI)라고도 합니다. 어쨌든 이 방식으로 VI를 하려면 KLD 식이 미분 가능해야 합니다. $q(z)$는 정규분포($θ_q={μ_q, σ_q}$), $p(z)$는 베타분포($α$, $β$)라고 두고 KLD 식을 $θ_q$에 대해 미분해 보겠습니다. (추론 대상 파라메터는 $θ_q$)

[\begin{align} \frac { \partial }{ \partial { \theta }_{ q } } { D }_{ KL }\left( q\left( z \right) ||p\left( z|x \right) \right) =&\frac { \partial }{ \partial { \theta }_{ q } } { D }_{ KL }\left( q\left( z \right) ||p\left( z \right) \right) +\frac { \partial }{ \partial { \theta }_{ q } } \log { p\left( x \right) } -\frac { \partial }{ \partial { \theta }_{ q } } { E }_{ z\sim q\left( z \right) }\left[ \log { p(x|z) } \right] \ =&\frac { \partial }{ \partial { \theta }_{ q } } { E }_{ z\sim q\left( z \right) }\left[ \log { q\left( z \right) } -\log { p\left( z \right) } -\log { p(x|z) } \right] \end{align}]

위 식 미분을 완료하려면 $d/dθ_q$가 expectaion 안으로 들어가야 합니다. 그런데 $q(z)$는 $θ_q$에 의존하는 분포이고 $z$는 $q$에서 뽑기 때문에 $d/dθ_q$가 expectaion 안으로 들어갈 수 없음을 확인할 수 있습니다.

이렇게 하면 어떨까요? $z$ 대신 노이즈($ε$)를 뽑고, 노이즈로부터 $z$를 계산한다. $q(z)$는 정규분포라고 가정했으므로, $z$는 다음과 같이 쓸 수 있습니다.

[z={ \mu }{ q }+{ \sigma }{ q }\epsilon ,\quad \epsilon \sim N\left( 0,1 \right)]

따라서 위의 식은 다음과 같이 전개할 수 있습니다. $E_{ε~N(0,1)}$은 더 이상 $θ_q$에 의존하지 않으므로 $d/dθ_q$가 expectaion 안으로 들어갈 수 있습니다. SVI 역시 몬테카를로 방법을 써서 $K$개 샘플로 KLD 함수의 그래디언트를 근사할 수 있습니다. 이 그래디언트의 반대 방향으로 파라메터 $θ_q$를 조금씩 업데이트하면 KLD를 줄일 수 있게 되고, 이를 반복하게 되면 사후확률 분포 $p(z$|$x)$에 근사하는 $q(z)$를 찾을 수 있습니다.

[\begin{align} \frac { \partial }{ \partial { \theta }_{ q } } { D }_{ KL }\left( q\left( z \right) ||p\left( z|x \right) \right) =&\frac { \partial }{ \partial { \theta }_{ q } } { E }_{ \varepsilon \sim N\left( 0,1 \right) }\left[ \log { q\left( { \mu }_{ q }+{ \sigma }_{ q }\varepsilon \right) } -\log { p\left( { \mu }_{ q }+{ \sigma }_{ q }\varepsilon \right) } -\log { p(x|z={ \mu }_{ q }+{ \sigma }_{ q }\varepsilon ) } \right] \ =&{ E }_{ \varepsilon \sim N\left( 0,1 \right) }\left[ \frac { \partial }{ \partial { \theta }_{ q } } \left{ \log { q\left( { \mu }_{ q }+{ \sigma }_{ q }\varepsilon \right) } -\log { p\left( { \mu }_{ q }+{ \sigma }_{ q }\varepsilon \right) } -\log { p(x|z={ \mu }_{ q }+{ \sigma }_{ q }\varepsilon ) } \right} \right] \ \approx &\frac { 1 }{ K } \sum _{ i=0 }^{ K }{ { \left[ \log { q\left( { \mu }_{ q }+{ \sigma }_{ q }{ \varepsilon }_{ i } \right) } -\log { p\left( { \mu }_{ q }+{ \sigma }_{ q }{ \varepsilon }_{ i } \right) } -\log { p(x|z={ \mu }_{ q }+{ \sigma }_{ q }{ \varepsilon }_{ i }) } \right] }_{ { \varepsilon }_{ i }\sim N\left( 0,1 \right) } } \end{align}]

노이즈($ε$)를 뽑아 VI를 하는 방식은 $z$를 직접 샘플링하는 방식보다 분산(variance)이 적어 유용하다고 합니다.

Vatiational EM algorithm

지금까지는, 사전확률함수 $p(z)$와 우도함수 $p(x$|$z)$를 이미 알고 있다는 전제 하에 VI 과정을 설명해 드렸습니다. 하지만 실제 문제에서는 사전확률과 우도의 파라메터 또한 알고 있지 못하는 경우가 많습니다. 그런데 VI는 사후확률 $p(z$|$x)$에 근사한 $q(z)$를 찾는 것이 목적이므로 $p(z)$의 파라메터는 임의로 고정시켜도 관계 없다고 합니다. (아래 식에서 상수항인 $\log{p(x)}$에 해당)

따라서 우리는 사후확률 $p(z$|$x)$에 근사한 $q(z)$의 파라메터를 찾는 것과 동시에, 우도함수 $p(x$|$z)$의 파라메터 또한 추정해야 합니다. 하지만 이를 단박에 찾기 어렵습니다. 이 때 유용한 방법론이 바로 EM algorithm입니다. $q(z)$의 파라메터를 $θ_q$, 우도함수의 파라메터를 $θ_l$라고 둘 때 EM algorithm은 다음과 같은 과정을 수렴할 때까지 반복합니다.

  • Expectaion : $D_{KL}(q(z)$||$p(z$|$x))$를 줄이는 $θ_q$를 찾는다. (몬테카를로 방법을 활용한 VI, SVI 등 적용)
  • Maximization : E-step에서 찾은 $θ_q$를 고정한 상태에서 $\log{p(x)}$의 하한(lower bound)을 최대화하는 $p(x$|$z)$의 파라메터 $θ_l$를 찾는다.

여기에서 생소한 내용이 M-step입니다. 우선 KLD는 다음 식의 우변과 같이 세 개 요소로 분해될 수 있습니다. E-step에서는 KLD를 줄이기 위해 $q$만을 업데이트하므로 이 과정에서 $\log{p(x)}$는 변하지 않습니다. 그런데 KLD를 줄이기 위해선 $\log{p(x)}$ 또한 줄여야 할 것입니다.

[{ D }_{ KL }\left( q\left( z \right)   p\left( z x \right) \right) ={ D }_{ KL }\left( q\left( z \right)   p\left( z \right) \right) +\log { p\left( x \right) } -{ E }_{ z\sim q\left( z \right) }\left[ \log { p(x z) } \right]]

위 식을 $\log{p(x)}$를 중심으로 정리하면 다음과 같이 쓸 수 있습니다.

[\log { p\left( x \right) } ={ E }_{ z\sim q\left( z \right) }\left[ \log { p(x z) } \right] -{ D }_{ KL }\left( q\left( z \right)   p\left( z \right) \right) +{ D }_{ KL }\left( q\left( z \right)   p\left( z x \right) \right)]

KLD는 항상 양수입니다.

[{ D }_{ KL }\left( q\left( z \right)   p\left( z x \right) \right) \ge 0]

따라서 $\log{p(x)}$의 하한은 다음과 같습니다. $p(x)$는 베이즈 정리에서 evidence라고 이름이 붙여진 항인데요. 이 때문에 아래 부등식의 우변을 Evidence Lower Bound(ELBO)라고도 부릅니다.

[\log { p\left( x \right) } \ge { E }_{ z\sim q\left( z \right) }\left[ \log { p(x z) } \right] -{ D }_{ KL }\left( q\left( z \right)   p\left( z \right) \right)]

위 부등식 우변의 값을 줄이게 된다면 $\log{p(x)}$를 줄이게 되고, 결과적으로 KLD를 줄일 수 있게 됩니다. 따라서 $θ_q$를 고정시킨 채 위 부등식 우변의 값을 줄이는 방향으로 우도함수의 파라메터 $θ_l$를 업데이트하면 우리가 원하는 결과를 얻을 수 있습니다.

Comment  Read more

unsupervised generative models

|

이번 글에서는 비지도학습(unsupervised learning) 기반의 generative model을 가우시안믹스처모델(Gaussian Mixture Model, GMM) 중심으로 살펴보도록 하겠습니다. 이 글은 전인수 서울대 박사과정이 2017년 12월에 진행한 패스트캠퍼스 강의를 정리했음을 먼저 밝힙니다. 그럼 시작하겠습니다.

generative model

generative model이란 데이터 $X$가 생성되는 과정을 두 개의 확률모형, 즉 $p(Y)$, $p(X$|$Y)$으로 정의하고, 베이즈룰을 사용해 $p(Y$|$X)$를 간접적으로 도출하는 모델을 가리킵니다. generative model은 레이블 정보가 있어도 되고, 없어도 구축할 수 있습니다. 이 글에서는 레이블 정보 없이 구축하는 비지도학습 기반의 generative model을 살펴보겠습니다.

Gaussian Mixtrue Model

GMM은 선형판별분석의 일반화된 버전입니다. GMM을 generative modeling 관점에서 분석하면 다음과 같습니다.

[p\left( { z }^{ (i) } \right) \sim Multinomial(\phi )\ p\left( { x }^{ (i) } { z }^{ (i) }=j \right) \sim N\left( { \mu }{ j },{ \Sigma }{ j } \right)]

선형판별분석과 가장 큰 차이점은 레이블 $y$가 없는 비지도학습이라는 사실입니다. $y$ 대신 $z$가 등장했습니다. 그런데 $z$는 학습데이터로 주어지지 않은 잠재변수(latent variable)입니다. $z$는 다항분포를 따른다고 가정합니다. 이렇게 뽑힌 $z$가 $j$번째 id일 때 $x$가 나타날 확률은 $j$번째 평균과 분산을 모수로 갖는 정규분포를 따를 것이라 가정합니다.

GMM의 로그우도 함수는 다음과 같습니다. 단 여기에서 파라메터 $θ$는 (1)$z$와 관련된 다항분포 파라메터 $Φ$ (2)각 정규분포의 평균 $μ$ (3)정규분포의 분산 $Σ$ 세 가지를 가리킵니다.

[\begin{align} l(\theta )=\sum _{ i }^{ }{ \log { \sum _{ { z }_{ i } }^{ }{ p\left( { x }^{ i },{ z }^{ i },\theta \right) } } } \end{align}]

$z$가 학습데이터로 주어진 상황이라면, 우리가 구하고자 하는 각각의 파라메터들에 대해 위 로그우도 함수를 편미분한 결과가 0인 지점에서, 쉽게 파라메터를 추정할 수 있을 것입니다. 그러나 $z$는 잠재변수이기 때문에 위의 로그우도 함수를 최대화하는 파라메터를 단박에 구할 수 없습니다. 이 때문에 EM 알고리즘을 다음과 같이 적용합니다.

  • Expectation : 로그우도 함수값의 하한(lower bound)을 구한다.
  • Maximization : E-step에서 구한 로그우도 함수값을 최대화하는 파라메터를 찾는다.

그렇다면 로그우도 함수의 하한은 어떻게 구할까요? Jensen’s inequality를 이용해 봅시다. 임의의 함수 $f$가 볼록함수(convex function)이고 $x$가 확률변수(random variable)이면 다음이 성립한다고 합니다.

\(E\left[ f\left( x \right) \right] \ge f\left( E\left[ x \right] \right)\)

그런데 로그 함수($f$)는 오목함수(concave function)이므로 위의 부등식 방향이 반대로 적용될 겁니다. 또 여기에서 $z^i$에 대한 임의의 확률분포 $Q_i(z^i)$를 상정해 둡시다. Jensen’s inequality와 $Q$를 활용해 GMM의 로그우도함수를 다음과 같이 다시 적을 수 있습니다.

[\begin{align} l(\theta )=&\sum _{ i }^{ }{ \log { \sum _{ { z }_{ i } }^{ }{ p\left( { x }^{ i },{ z }^{ i },\theta \right) } } } \ =&\sum _{ i }^{ }{ \log { \sum _{ { z }_{ i } }^{ }{ { Q }_{ i }\left( { z }^{ i } \right) \frac { p\left( { x }^{ i },{ z }^{ i },\theta \right) }{ { Q }_{ i }\left( { z }^{ i } \right) } } } } \ \ge& \sum _{ i }^{ }{ \sum _{ { z }_{ i } }^{ }{ { Q }_{ i }\left( { z }^{ i } \right) \log { \frac { p\left( { x }^{ i },{ z }^{ i },\theta \right) }{ { Q }_{ i }\left( { z }^{ i } \right) } } } } \end{align}]

그런데 실제 로그우도는 $Q_i$와 상관이 없기 때문에 가급적 위 부등식이 ‘=’에 가깝게 정할 수 있으면 좋을 겁니다. Jensen’s inequality에서 등호는 $f(x)$가 선형(linear)일 때 성립한다고 합니다. 아울러 $Q_i$ 또한 확률분포이므로 그 합이 1이 되어야 합니다. 따라서 다음 두 가지 속성을 만족하도록 $Q_i$를 정하면 좋을 겁니다.

[\frac { p\left( { x }^{ i },{ z }^{ i },\theta \right) }{ { Q }{ i }\left( { z }^{ i } \right) } =c\leftrightarrow { Q }{ i }\left( { z }^{ i } \right) \propto p\left( { x }^{ i },{ z }^{ i },\theta \right) \ \sum { z }^{ }{ { Q }{ i }\left( { z } \right) } =1]

그런데 $Q_i$를 $z$에 대한 사후확률(posterior)로 정하면 위 두 개 가정을 만족시킬 수 있다고 합니다. 다시 말해 $Q_i(z^i)=p(x^i,z^i,θ)/p(x^i,θ)=p(z^i$|$x^i,θ)$로 둡니다. 요컨대 GMM의 EM 알고리즘은 고정된 $θ$ 하에서 $Q_i(z^i)$를 구하고, E-step에서 구한 $Q_i(z^i)$ 하에서 로그우도 함수를 최대화하는 $θ$를 구하는 과정을 반복합니다. 이와 관련해 고려대 강필성 교수님의 비즈니스어낼리틱스 강의노트를 참고용으로 올려둡니다.

Latent Dirichlet Allocation

일명 토픽모델링으로도 유명한 잠재디리클레할당(Latent Dirichlet Allocation, LDA) 또한 비지도학습 기반의 generative model입니다. LDA가 가정하는 문서생성과정은 다음과 같습니다.

  • Draw each per-corpus topic distributions $ϕ_k$~$Dir(β)$ for $i∈${$1,2,…K$}
  • For each document, Draw per-document topic proportions $θ_d$~$Dir(α)$
  • For each document and each word, Draw per-word topic assignment $z_{d,n}$~$Multi(θ_d)$
  • For each document and each word, Draw observed word $w_{d,n}$~$Multi(ϕ_{z_{d,n},n})$

LDA에서는 파라메터 추정 과정에서 켤레사전분포를 가정하고, 깁스 샘플링을 사용합니다.

Comment  Read more

discriminative vs generative

|

이번 글에서는 discriminative modelgenerative model을 비교해보도록 하겠습니다. 이 글은 전인수 서울대 박사과정이 2017년 12월에 진행한 패스트캠퍼스 강의를 정리했음을 먼저 밝힙니다. 그럼 시작하겠습니다.

discriminative model

discriminative model이란 데이터 $X$가 주어졌을 때 레이블 $Y$가 나타날 조건부확률 $p(Y$|$X)$를 직접적으로 반환하는 모델을 가리킵니다. 레이블 정보가 있어야 하기 때문에 지도학습(supervised learning) 범주에 속하며 $X$의 레이블을 잘 구분하는 결정경계(decision boundary)를 학습하는 것이 목표가 됩니다. discriminative modelgenerative model에 비해 가정이 단순하고, 학습데이터 양이 충분하다면 좋은 성능을 내는 것으로 알려져 있습니다. 선형회귀와 로지스틱회귀는 disciminative model의 대표적인 예시입니다.

generative model

generative model이란 데이터 $X$가 생성되는 과정을 두 개의 확률모형, 즉 $p(Y)$, $p(X$|$Y)$으로 정의하고, 베이즈룰을 사용해 $p(Y$|$X)$를 간접적으로 도출하는 모델을 가리킵니다. generative model은 레이블 정보가 있어도 되고, 없어도 구축할 수 있습니다. 전자를 지도학습기반의 generative model이라고 하며 선형판별분석이 대표적인 사례입니다. 후자는 비지도학습 기반의 generative model이라고 하며 가우시안믹스처모델, 토픽모델링이 대표적인 사례입니다.

generative modeldiscriminative model에 비해 가정이 많습니다. 그 가정이 실제 현상과 맞지 않는다면 generative model의 성능은 discriminative model보다 성능이 좋지 않을 수 있지만, 가정이 잘 구축되어 있다면 이상치에도 강건하고 학습데이터가 적은 상황에서도 좋은 예측 성능을 보일 수 있습니다. generative model범주의 분포(distribution)을 학습하는 것이 목표가 됩니다. 또한 generative model은 일반적인 베이지안 추론과 마찬가지로 학습데이터가 많을 수록 discriminative model과 비슷한 성능으로 수렴하는 경향이 있다고 합니다. 아울러 generative model은 $p(X$|$Y)$을 구축하기 때문에 이 모델을 활용해 $X$를 샘플링할 수도 있습니다.

data distribution

여기에서 ‘데이터의 분포’라는 개념이 아리송합니다. 예를 들어보겠습니다. 우리가 가진 데이터가 사람 얼굴 사진이라고 칩시다. 이미지 크기가 64×64×3이라면 우리의 데이터($x$)는 이만한 크기의 벡터들일 것입니다. 이 사진(벡터)들을 어떤 기준에 따라 일렬로 세웠다고 가정해 보겠습니다.

우리가 가지고 있는 사진 데이터셋이 동양인들 중심이라면 검은 머리색을 하고 있는 사진이 나타날 확률은 꽤 높을 수 있습니다. 바꿔 말해 검은 머리색을 하고 있는 사진들을 $x$축에 표시하면 $x_3$ 언저리에 위치하고 $p_{data}(x_3)$은 가장 높은 값을 가지게 될 것이라는 얘기입니다. 반대로 머리색이 금발인 사진들이 $x_4$쯤에 위치하고 $p_{data}(x_4)$는 낮은 값을 가집니다. 더 나아가, 처음 보는 이상한 사진들이라면 발생확률이 0에 가까울 것입니다.

generative model의 목적 가운데 하나는 데이터의 분포를 학습하는 것입니다. 다시 말해 우리가 구축하려는 모델에 데이터를 넣으면 실제 데이터의 확률에 가깝게 값을 반환하게끔 만들고 싶다는 이야기입니다. 이를 도식화한 그림은 다음과 같습니다.

Deep Generative Model

Deep Generative Model이란 딥러닝을 활용한 generative model입니다. 데이터의 분포(distribution)를 학습하고, 이로부터 새로운 데이터 $X$를 생성하는 것이 목적입니다. 딥러닝은 데이터의 분포를 모사하거나, 벡터 간 변환에 뛰어난 성능을 지니기 때문에 최근 generative model에 딥러닝 기법이 널리 쓰이고 있습니다. Deep Generative Model을 도식화한 그림은 다음과 같습니다.

차이

다음 그림들은 disciriminative modelgenerative model 간 차이를 직관적으로 나타낸 것입니다.

generative model은 사후확률을 간접적으로, disciriminative model은 직접적으로 도출한다.

generative model은 데이터 범주의 분포를, disciriminative model은 결정경계를 학습한다.

Comment  Read more

supervised generative models

|

이번 글에서는 지도학습(supervised learning) 기반의 generative model나이브 베이즈 모델, 선형판별분석 모델 중심으로 살펴보도록 하겠습니다. 이 글은 전인수 서울대 박사과정이 2017년 12월에 진행한 패스트캠퍼스 강의를 정리했음을 먼저 밝힙니다. 그럼 시작하겠습니다.

generative model

generative model은 데이터 $x$가 생성되는 과정을 두 개의 확률모형, 즉 $p(y)$와 $p(x$|$y)$로 정의합니다. 지도학습 기반의 generative model은 레이블 $y$가 명시적으로 주어진 경우를 가리킵니다. 대표적으로 나이브 베이즈 모델(naive bayes models)과 선형판별분석(linear discriminant analysis)이 있습니다.

나이브 베이즈 모델

나이브 베이즈 모델을 generative modeling 관점에서 분석하면 다음과 같습니다.

[p\left( y \right) \sim { \phi }{ y }\ p\left( { x }{ j } y=0 \right) \sim { \phi }_{ j y=0 }\ p\left( { x }_{ j } y=1 \right) \sim { \phi }_{ j y=1 }]

여기에서 $x$는 데이터, $y$는 범주를 나타냅니다. 영화리뷰를 대상으로 나이브 베이즈 모델을 구축한다면 $x$는 리뷰, $y$는 긍정(1), 부정(0) 극성이 될 겁니다. $y$는 파라메터 $Φ_y$를 가지는 베르누이분포(성공 또는 실패 두 가지 가능한 결과에 대한 확률분포)를 따른다고 가정합니다.

$x_j$는 영화 리뷰에서 $j$번째 단어를 가리킵니다. 영화 리뷰가 부정($y=0$)일 때 $j$번째 단어가 등장할 확률 $p(x_j$|$y=0)$은 파라메터 $Φ_{j,y=0}$을 가지는 베이누이분포를 따른다고 가정합니다. 다시 말해 이 확률은 $j$번째 단어가 한번 이상 나타날 가능성을 가리킵니다.

나이브베이즈 모델의 우도 함수는 다음과 같습니다. $x$와 $y$의 결합확률(joint probability)을 베이즈룰(bayes rule)에 따라 다시 적은 겁니다.

[\begin{align} L({ \phi }_{ y },{ \phi }_{ k|y=0 },{ \phi }_{ k|y=1 })=&\prod _{ i=1 }^{ m }{ p\left( { x }^{ (i) },{ y }^{ (i) } \right) } \ =&\prod _{ i=1 }^{ m }{ \left( \prod _{ j=1 }^{ { n }_{ i } }{ p\left( { x }_{ j }^{ (i) }|y;{ \phi }_{ k|y=0 },{ \phi }_{ k|y=1 } \right) } \right) p\left( { y }^{ (i) };{ \phi }_{ y } \right) } \end{align}]

위 식에 로그를 취하고 각각의 파라메터에 대해 미분을 하여 0이 되는 지점을 찾는 방식으로 계산하면 각각의 파라메터는 다음과 같이 분석적으로 도출할 수 있습니다. 전체 데이터(말뭉치)를 대상으로 아래처럼 각 단어별로 빈도를 세면 파라메터 추정이 종료된 겁니다.

[{ \phi }{ y }=\frac { \sum _{ i }^{ }{ I\left{ { y }^{ (i) }=1 \right} } }{ m } \ { \phi }{ k y=0 }=\frac { \sum { i }^{ }{ I\left{ { y }^{ (i) }=0,{ x }{ j }^{ (i) }=1 \right} } }{ \sum { i }^{ }{ I\left{ { y }^{ (i) }=0 \right} } } \ { \phi }{ k y=1 }=\frac { \sum { i }^{ }{ I\left{ { y }^{ (i) }=1,{ x }{ j }^{ (i) }=1 \right} } }{ \sum _{ i }^{ }{ I\left{ { y }^{ (i) }=1 \right} } }]

이렇게 추정된 파라메터를 가지고 새로운 데이터 $x$에 대한 레이블 추정은 다음과 같이 베이즈룰을 이용합니다. 쉽게 말해 우도 $p(x$|$y)$와 사전확률 $p(y)$ 곱이 큰 쪽으로 $y$를 추정하는 겁니다.

[\begin{align} \arg\max _{ y }{ p(y|x) } =&\arg\max _{ y }{ \frac { p(x|y)p\left( y \right) }{ p\left( x \right) } } \ =&\arg\max _{ y }{ p(x|y)p\left( y \right) } \end{align}]

선형판별분석

선형판별분석을 generative modeling 관점에서 분석하면 다음과 같습니다. 다시 말해 $p(x$|$y)$가 정규분포를 따르고, 각각의 분포는 분산이 $Σ$로 같다고 가정합니다. 아울러 $y$는 파라메터가 $Φ$인 베르누이분포를 따른다고 가정합니다.

[p\left( y \right) \sim { \phi }_{ y }\ p\left( x y=0 \right) \sim N\left( { \mu }_{ 0 },\Sigma \right) \ p\left( x y=1 \right) \sim N\left( { \mu }_{ 1 },\Sigma \right)]

각각의 확률함수는 다음과 같습니다.

[p\left( y \right) ={ { \phi } }^{ y }{ { \left( 1-\phi \right) } }^{ y }\ p\left( x y=0 \right) =\frac { 1 }{ { \left( 2\pi \right) }^{ n/2 }{ \left \Sigma \right }^{ 1/2 } } \exp\left( -\frac { 1 }{ 2 } { \left( x-{ \mu }{ 0 } \right) }^{ T }{ \Sigma }^{ -1 }{ \left( x-{ \mu }{ 0 } \right) } \right) \ p\left( x y=1 \right) =\frac { 1 }{ { \left( 2\pi \right) }^{ n/2 }{ \left \Sigma \right }^{ 1/2 } } \exp\left( -\frac { 1 }{ 2 } { \left( x-{ \mu }{ 1 } \right) }^{ T }{ \Sigma }^{ -1 }{ \left( x-{ \mu }{ 1 } \right) } \right)]

선형판별분석 모델의 로그우도 함수는 다음과 같습니다. $x$와 $y$의 결합확률(joint probability)을 베이즈룰(bayes rule)에 따라 다시 적은 겁니다.

[\begin{align} l(\phi ,{ \mu }_{ 0 },{ \mu }_{ 1 },\Sigma )=&\log { \prod _{ i=1 }^{ m }{ p\left( { x }^{ (i) },{ y }^{ (i) };\phi ,{ \mu }_{ 0 },{ \mu }_{ 1 },\Sigma \right) } } \ =&\log { \prod _{ i=1 }^{ m }{ p\left( { x }^{ (i) }|{ y }^{ (i) };\phi ,{ \mu }_{ 0 },{ \mu }_{ 1 },\Sigma \right) \cdot p\left( { y }^{ (i) };{ \phi } \right) } } \end{align}]

선형판별분석 모델의 파라메터는 위 로그 우도함수를 각각의 파라메터에 대해 미분해서 0이 되는 지점을 찾는 방식으로 분석적으로 도출할 수 있습니다. 자세한 도출 과정은 이곳을 참고하시면 좋을 것 같습니다.

어쨌든 이렇게 추정된 파라메터를 가지고 새로운 데이터 $x$에 대한 레이블 추정은 다음과 같이 베이즈룰을 이용합니다. 쉽게 말해 우도 $p(x$|$y)$와 사전확률 $p(y)$ 곱이 큰 쪽으로 $y$를 추정하는 겁니다.

[\begin{align} \arg\max _{ y }{ p(y|x) } =&\arg\max _{ y }{ \frac { p(x|y)p\left( y \right) }{ p\left( x \right) } } \ =&\arg\max _{ y }{ p(x|y)p\left( y \right) } \end{align}]

Comment  Read more