우연히 기회가 닿아 멀티캠퍼스의 딥러닝 에스프레소 강의를 듣게 되었다. 코로나로 인해 오프라인 수업이 아닌 온라인으로 수업을 들었다.

강의의 내용은 생각보다 방대하고 깊이도 있었다. 한 학기 대학교 강의 수준의 내용을 3일만에 듣는 느낌이었다. 시간적 여유가 있다면 찬찬히 이해하며 들으면 더 좋을 뻔했지만, 직장인의 한계는 인정하자.

특히 알고리즘을 수식 측면에서 자세히 설명해주는 부분도 좋았다. 물론 수식을 이해하기는 어려웠지만 대략적인 흐름을 파악하는데는 분명 도움이 되었다. 다만 시간이 흐름이 많이 잊혀질 것 같아 아쉽니다.

학습한 내용을 남기는 차원에서 3일의 교육 내용을 간략히 살펴보면 아래와 같다.

 

1. 첫째날

prior, likelihood, posterior의 개념을 익혔다. likelihood가 확률이 아니라는 점이 쉽게 이해하기는 어려웠지만, 어려풋이 특정 값이 주어졌을 때 그것에 가장 적합한 분포라는 차원에서 이해를 해 보았다. 이 내용은 셋째날까지 줄곧 이야기되는 개념이기 때문에 이해하는 것이 중요했다. posterior(사후 확률)는 prior(사전확률) X likelihood(가능도)와 같다는 것도 중요한 개념이다.

closed form으로 나오게 하기 위해 likelihood는 유사한 linear 모델로 바꾼다고 한다. 수업을 배우면서 알게 됐지만, closed form으로 나오는 부분이 중요했다.

 


베이지안 통계를 이용하는 것의 장점으로 uncertainty를 측정할 수 있다는 것도 배웠다. uncertainty는 Data의 uncertainty와 Model의 uncertainty로 나눌 수 있었다. 각각을 지칭하는 용어가 있는데, 이는 셋째 날에도 나오니 그 때 다시 애기해보자.

 


베이지안 통계와 딥러닝의 장단점을 알아보면서, 각각의 장단점을 합친 배이지안 딥러닝에 대해서도 언급했다. 여러가지 장단점이 있지만 가장 중요한 것은 베이지안 통계는 linear모델이지만, 딥러닝은 non-linear모델이라는 것이 중요한 듯 하다. 그리고 베이지안 통계는 uncertainty를 측정할 수 있다는 장점도 가져간다.

 


Baysian Framework에 대해서도 배웠는데 알아두면 좋을 것 같다.

1. prior
2. likelihood
3. marginal likelihood
4. posterior
5. Predictive Distribution
6. Decision Making

 

 

그 다음에는 확률분포에 대해서 다루었는데, 회사일을 하면서 듣다보니 전부다 제대로 듣지는 못했다. 확률분포를 애기하면서 데이터가 주어진 경우에 likelihood 표현식을 배우고, maximum likelihood를 얻는 방법에 대해서 배웠다. maximum likelihood를 구할 때는 계산을 쉽게 하기 위해 log를 씌운다. 분포는 Bernoulli - Binomial, Categorical - Multinomial, Gausian 순으로 배웠다.

 

이후에 확률분포를 다루면서 joint, marginal 확률 분포에 대해서 다루었다. joint는 2개 이상의 변수가 포함된 확률분포였고, marginal은 이 중에 하나의 변수는 전체 값으로 놓은 확률분포였다. 그래서 marginal 확률분포를 구할 때는 적분을 구한다. 조건부 확률분포도 배웠다.

 

Expectation(기대값)을 sampling으로 근사값을 계산하는 것도 중요한 개념이었다. Posterior를 구할 때 뭐가 잘 안돼서(뭐였는지 기억이 안남), 이를 구할 수 있는 방법은 2가지가 있었다. 하나는 Approximate Inference라고 해서 그와 유사한 다른 식으로 대체하는 것이고, 다른 하나는 Sampling Method라고 해서 샘플링으로 구하는 것이라고 한다. Sampling Method의 대표적인 것이 MCMC라고 한다.

 

베이지안 통계를 다루면서 Beta분포와 Dirichlet분포에 대해서 배웠다. Beta분포는 어디에 활용되는 것인지 궁금했는데, 베르누이 분포에 대한 prior로 베타분포를 사용한다고 한다. 그래서 사실 베타분포보다는 Dirichlet분포를 더 많이 사용한다고 한다. posterior를 구하기 윟서는 prior X likelihood를 사용하는데, 베타분포를 이용하지 않으면 closed form을 구할 수 없다고 한다.

 

Graphical Representation에 대해서도 배웠는데, 알고리즘의 구조를 도식화하는 방법이었다. 처음에는 조금 생소했지만, 수식으로 보는 것보다 구조를 파악하는데는 용이할 것이라는 생각이 들었다.

 

2. 둘째날

둘째날에는 알고리즘에 대한 내용을 주로 다루었다. 베이지안 모델을 다룰 때는 linear Gaussian model인 경우에 수식이 유용하게 전개된다고 한다. 먼저, 회귀분석과 베이지안 회귀분석에 대해서 배웠다. 베이지안 회귀분석에서는 w가 고정된 값이 아니라 분포에서 나온 random variable이기 때문에, marinal likelihood를 구해야 한다. 특이한 것은 marginal likelihood 값을 계산하면, 데이터 적합한 polynomial의 차수를 구할 수 있다는 것이다.

 

다음은 K-means와 Gauusian Mixture Models에 대해서 배웠다. 여기서는 K-Means에 대해서 다루면서 EM알고리즘에 대서 다룬다. EM알고리즘은 expectatioin step과 maximization step으로 이루어진다. K-Means경우 expectation step은 data에 대응하는 cluster를 추정한다. 군집이 2개라면 현재 중심을 가지고, 데이터를 2개의 군집으로 나눈다. 군집을 우선 나는 과정이라고 이해할 수 있겠다. 다음은 maximization step으로 objective function J를 최대화하기 위한 parmeter u를 구한다. expecation step에서 나뉜 군집을 기준으로 새로운 군집의 중심을 구하는 과정이라고 보면 되겠다. 이 과정을 반복하면서 군집을 나누는 것이 EM알고리즘이었다.

 

Gaussian Models은 Single mulivariate Gaussian Distribution과 Gaussian Mixture Models로 나누어서 설명이 되었다. 쉽게는 앞에 거는 분포가 하나인 경우고, 뒤에 것은 분포가 여러 개인 경우이다.

Single multivariate Gausssian distribution은 dataset의 distribution을 모델링하는 것이다. 데이터가 Gaussian 분포를 따른다고 보고, maximum likelihood를 계산해서 평균과 covariance matrix를 구한다.

Gaussian Mixture Models은 좀 복잡한데, log-likelihood를 최대화하는 파라미터를 closed form으로 구할 수 없기 때문이다. 그러나 posterior(reponsibility)를 고정하면 mean을 비로새 mixing coefficient오 covariance matrix도 closed form으로 구할 수 있다. 아무튼 이 방법을 이용해서 EM알고리즘으로 군집을 나누게 된다. 먼저 파라미터를 임의값으로 초기화하고, responsibility를 구한다. 다음으로 responsiblity를 고정하고 parameter를 다시 구한다. 이 과정을 반복한다고 한다.


다음으로 Variational Gaussian Mixture Models을 다루었는데, 내용이 상당히 어려워서 깊게 들어가지는 않았다. 재밌는 것은 Gaussian Mixture Models은 군집 갯수를 지정해야 줘야 하는데, Variational Gaussian Mixture Models은 군집갯수를 지정하는 것은 동일하나 알아서 최적화를 해준다고 한다. sckit-learn에 모듈이 있으니 사용하기는 편리하다.


PCA와 Probilistic PCA(PPCA)도 다루었다. PPCA는 genrative modeldl이지만 linear model이라는 단점이 있다. 이를 non-linear모델인 AutoEncoder(AE)와 결합하여, VAE가 나오게 된다.

Probablilistic PCA는 확률적으로 차원축소를 일으키는 것으로, Z-space(축소된 공간)가 정규분포 (0, 1)을 따르게 된다. Z-space에서 샘플링해서 linear식을 이용하면 데이터를 생성할 수 있다. Bayesian PCA도 있는데, 이 부분은 따로 배우지 않고 넘어갔다.

 

둘째 날의 마지막은 KL-Divergence로 끝났다. KL-Divergence는 두 분포의 차이를 나타내는 범함수(function)이다. 재밌는 것은 KL-Divergence는 P를 기준으로 Q분포와의 차이와, Q를 기준으로 P분포와의 차이가 값이 다르다는 것이다. 그래서 symmetric하지 않고 수학적으로 distnce의 개념도 아니다. KL-Divergence 값은 항상 0보다 크거나 같으며, 두 분포 P, Q가 같을 때만 0이 된다. 이를 이해하기 위해서는, P를 기준으로 할 때는 P가 없는 곳을 고려하지 않는다는 것을 이해하면 된다.

 

 

3. 셋째 날

General EM(=Variational EM). 여기서는 EM알고리즘의 E-Step에서 posterior를 구해야 하는데, 분모에 p쎄타(X)를 구하기 위해 적분 또는 summation해야 하는데 이게 어려운 경우가 있다는 데서 출발한다. 이를 해결하기 위해 posterior를 KL-divergence를 최소화하는 variational distribution으로 대체한다. 이 때 KL-divergence를 직접계산할 수 없는 경우 이를 우해하여 ELBO를 최대화하는 방향으로 우회하게 된다. 수식도 설명은 해 줬는데 복잡해서 이해가기가 쉽지는 않았다.


Auto Encoder. 고차원의 데이터를 저차원으로 맵핑하는 Encoder와 이를 복원하는 Decoder로 이루어져 있다. 저차원으로 맵핑된 정보는 데이터를 나타내는 feature로 활용할 수 있다.

 

Variational Auto-Encoder. GAN과 더불어 딥러닝의 대표적인 생성모델. Auto-Encode가 Z-variables의 분포를 알 수 없는 단점을 개선한 것으로 Z-variables의 분포를 Istropic Gaussian 등으로 제한하여 자유롭게 컨트롤 할 수 있다는 특징을 가진다. 그 뒤에 수식과 관련된 내용은 좀 어려웠다.

 

Bayes By BackProp. weight의 posterior를 구하기 위해 variational inference를 사용. ELBO를 최대화하는 방식으로 트레이닝이 진행되며, neural network의 standard backpropagation을 이용하기 위해 reparameterization trick을 사용한다고 한다.
Bayes By BackProp은 precision을 약간 포기하는 대신에 uncertainty를 측정한다는 장점이 있다. Bayes By Backpop은 weight가 0에 집중되는 경향이 발생하면서, weight pruning을 가능하게 해 준다. mobile에서는 연산항이 줄어야 속도가 개선되므로, 꼭 필요한 weight만 남기는 것이 필요하다.

 

MC DropOut. 다른 일 때문에 듣지 못했다. ㅡㅜ 

 

Uncertainty. 크게 epistemic uncerntainty와 aleatoric uncertainty로 나뉜다.

 

epistemic uncerntainty는 model uncertainty라고도 불리며, 모델의 파라미터의 불확실성에 의해 일어나는 불확실성을 말한다. 충분히 많은 데이터를 통해 모델의 파라미터를 학습하면 극복할 수 잇는 요소이다.

 

aleatoric uncertainty는 data uncertainty라고도 하며, 데이터가 가지는 불확실성을 말한다. 센서 데이터와 같이 데이터에 노이즈가 있는 경우에는 많은 데이터가 공급된다고 해도 불확실성을 줄일 수 없다.

 

aleatoric uncertainty는 homoscedastic(같은), heteroscedastic(다른) 둘 종류로 나눌 수 있다. homoscedastic uncertainty는 서로 다른 입력 데이터에 대한 각각의 출력 데이터의 분산이 같은 경우. heteroscedastic uncertainty는 서로 다른 입력 데이터에 대해 각각의 출력 데이터의 분산이 다른 경우를 말한다.

 

GPS 장치 같이 지도의 어떤 지점을 인식하든 오차 범위가 일정하게 정해져 있는 경우 homoscedastic uncertainty를 갖는다고 한다. 어떤 물체인식 모델이 특정 물체를 정확하게 인식하고 다른 물체에 대해 부정확하게 인식한다면 heteroscedastic uncertainty를 갖는다고 한다.

 


마지막으로 GAN에 대해서도 살짝 다루었는데, 여기는 넘어가도록 하자. GAN도 여러가지 종류가 있는데 StyleGAN2가 가장 최신이라고 한다.

 

 

딥러닝 에스프레소 교육 후기

 

 

오늘은 이렇게 멀티캠퍼스 딥러닝 에스페레소 후기에 대해서 알아보았다. 어려운 내용이 많아 이해하기 어려웠지만, 일단 이렇게 한 번 접한 것만으로도 큰 의미가 있다고 생각한다. 어차피 한 번에 이해하기에는 어려운 내용이기 때문에, 시간을 가지고 다음 번에 또 복기해보기를 바래본다. 베이지안 통계와 딥러닝에 관심이 있다면, 꼭 한 번 들어보는 것을 추천한다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기

댓글을 달아 주세요

">