brunch

You can make anything
by writing

C.S.Lewis

by 김범준 Jun 07. 2018

패턴인식론 기말 시험

15문제

작년에도 비즈니스 애널리틱스 공부하던 자료를 브런치에 올렸는데, 이렇게 공부해둔 걸 블로그에 정리해두는 게 참 좋다는 걸 느낌. 마치 뇌를 스크린샷 떠서 잊을 때마다 복습하는 느낌이라고 할까..
이번에는 15문제가 출제되는데 교수님이 아예 그냥 문제를 알려주셨다=_= 각각에 대한 설명은 찾아가면서 정리했는데 물론 틀린 부분이 있을 수 있습니다..



1) k-fold cross-validation

특히 데이터의 양이 충분치 않을 때, 트레이닝이나 테스트 데이터를 어떻게 골라내느냐에 따라 모델의 성능이 조금씩 달라질 수 있음. 

k-fold cross validation은 데이터셋을 k개의 같은 크기로 나눈 다음에, 하나의 부분씩을 test set으로 사용하여 k개의 test performance를 평균 내는 것을 의미.

복수의 테스트를 하여 평균 성능 평가 -> hyper parameter 선택에도 씀


2) Differential entropy

entropy는 원래 discrete를 다루는데 differential entropy는 continuous한 x를 다룸

S는 적절한 범위


3) Kullback–Leibler divergence

q가 known(predicted distribution)이고 p가 unknown(true distribution)일 때, q를 활용해서 얼마나 추가적인 정보가 있어야 p를 알 수 있을까?

cross-entropy H(p, q) : q를 활용해서 p를 encode하는데 필요한 정보량

entropy H(p) : p를 encode하는데 필요한 정보량

KL divergence KL(p||q)=H(p, q)-H(p)

직관적으로 KL-divergence는 두 distribution 사이의 거리를 계산한 값. 근데 p, q가 교환되지는 않으므로 엄밀한 의미에서 거리는 아님.


4) Maximum likelihood, Maximum a posteriori

ML : likelihood를 maximize하는 theta를 찾음

여기서 iid 가정해서 곱으로 나타내고, log likelihood로 바꾸고, 곱을 합으로 바꿔서 계산함.


MAP : posterior를 maximize하는 theta를 찾음. posterior가 likelihood*prior에 비례한다는 Bayes Rule 활용.

prior를 잘 알고 있으면 유리하다.


5) Non-parametric density estimation - KDE, Histogram, kNN

Non-parametric density estimation : 관측된 데이터들의 분포로부터 pdf를 추정하고자 하는 것. 이때 distribution의 형태에 대해 어떠한 가정도 하지 않음.

KDE(Kernel Density Estimation) : 관측된 모든 데이터에 대해 커널 함수를 만들고, 이들을 모두 더한 후 normalize해서 pdf를 얻음. density의 맥락에서는 volume을 고정해서 k를 조사하는 방식으로 이해할 수 있음.

Histogram : 관측된 데이터들로부터 히스토그램을 그리고 이를 정규화하여 pdf를 얻음.

kNN(K-nearest neighbors) : classification에서는 k개의 nearest data points로부터 voting하는 classifier를 말함. density estimation에는, 주어진 data point x에서 k개의 nearest data points를 찾았을 때 거리들이 멀면 그 data point는 확률이 작고, 거리들이 가까우면 그 data point는 확률이 높은 것으로 이해할 수 있음(density의 맥락). k를 고정해서 volume을 조사하는 방식.


6) Expectation–maximization algorithm for Gaussian mixture model

EM 알고리즘(Expectation–maximization algorithm) : latent avariable이 있을 때 maximum likelihood를 푸는 trick. object funciton을 log likelihood로 나타낼 때   

로 표현. 이렇게 theta와 q를 optimize해야 되는 문제 -> k-means처럼 alternating해서 update하고자 함

E-step : theta고정. q가 p에 같도록 해서 KL=0이 되게 함(L은 증가함) -> L을 계산.

M-step : q 고정. theta= argmax(L_t(x,theta))로 theta계산. 이때 theta에서 L이 증가하고 p, q가 달라지므로 KL도 증가 -> ln(p(x|theta))이 증가

KL은 0보다 크거나 같아서 L이 log likelihood의 lower bound처럼 생각할 수 있음.

EM 알고리즘은 missing data에도 적용할 수 있음.

GMM : 주어진 data를 가장 잘 설명하는 optimal한 k개 gaussian에 대한 mu와 sigma를 찾는 maximize likelihood 문제. c_i를 latent로 다루어 EM 알고리즘으로 품


7) forward propagation for DNN

(딥러닝 북 p208 참고)


8) backward propagation for DNN

(딥러닝 북 p209 참고)


9) Adam optimization algorithm

Adam(Adaptive Moment Estimation) : RMSProp(learning rate decay를 필터링을 거쳐서 사용하는 방식)과 Momentum(gradient를 속도로 이해했을 때의 momentum을 고려하는 방식)을 합친 방식


10) Architecture of CNN

- Typical architectures look like

[(CONV-RELU)*N – POOL?]*M-(FC-RELU)*K, SOFTMAX

where N is usually up to ~5, M is large, 0 <= K <= 2.

- But, recent advances such as ResNet/GoogLeNet challenge this paradigm


11) Support vector machine

Margin(hyperplane과 가장 가까운 쪽의 data points 사이의 거리)을 Maximize하는 아이디어

support vector가 hyperplane에 가장 가까운 data point. 이때 그 외의 다른 data point는 무시 가능.

linearly separable한 경우에서 margin을 maximize하는 hyperplane을 수식적으로 표현, 라그랑주 승수법 적용해서 primal problem을 dual problem으로 바꾸고 품. 

linearly separable하지 않으면 slack variable을 적용하고 수식에도 반영함. 


12) kernel trick of SVM

data에 rbf같은 kernel function을 적용해서 high dimension으로 mapping함. kernel function의 parameter는 cross-validation해서 얻을 수 있음

nonlinear problem에 주로 kernel 사용. 왜냐하면 hyperplane은 선형적으로 분리하니까. kernel을 사용하면 SVM의 성능이 비약적으로 증가함.


13) General Architecture of Generative adversarial network

input noise variable z -> Generator가 fake image G(z)를 만듦 -> Discriminator가 real image x와 fake image G(z)를 판별해서 D(x)와 D(G(z))를 출력함


14) Learning Procedure of GAN

D는 점점 잘 감별하도록 학습하게 되므로 real data에 대해 D(x)가 1이 되도록, 또 fake에 대해 D(G(z))가 0이 되도록 만들고자 함. 즉 log(D(x))+log(1-D(G(z))를 maximize하도록 loss_D를 잡을 수 있음

G는 점점 fake를 진짜처럼 잘 만들어내게 하므로 D(G(z))가 1이 되도록 만들고자 함. 즉 log(D(G(z))를 maximize하도록 loss_G를 잡을 수 있음.

D와 G를 alternating하면서 학습시킴. D를 k번 학습시키고 G를 1번 학습시키는 등 균형있게 D와 G가 학습하도록 해야 함.


15) cGAN

condition은 data가 generate되는 mode(process)를 control(direct)하는 역할

y를 condition이라고 하면 Generator에서는 z에 y를 concat하고 Discriminator에서는 x 혹은 G(z|y)에 y를 concat하는 방식임.


작가의 이전글 내가 공부한 머신러닝/딥러닝 자료들
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari