Posts List

[머신러닝/딥러닝] 11-3. Neural Processes

Neural Processes

(교수님이 NP는 어렵다고 굉장히 빠르게 넘어가셨다. 그런데 개인적으로 딥마인드의 CQN이 궁금해서 조사한걸 추가해 적었으니 그냥 가볍게 원리 이해 수준으로 읽으면 좋을 듯 하다.)

Neural Process(이하 NP), Conditional Neural Process(이하 CNP)는 알파고로 유명한 딥마인드가 2018 ICML에서 처음 발표했다.

전에 없던 지도학습으로 평가되며, Gaussian Process와 Neural Network의 특징을 결합한 모델이다. 쉽게 표현하면 신경망을 기반으로 한 확률모델이며, NP가 얻고자 한 효과는 이렇다.

  • GP의 prediction uncertainty를 얻을 수 있는 효과

  • 소량 데이터로도 좋은 성능을 보이는  GP

  • GP는 대량 데이터에서 효율이 떨어지는데 ,
    대량 데이터에 적합한 Neural Network의 장점

  • 파라미터가 많아도 예측 속도가 빠른 Neural Net

즉, GP는 stochastic process를 이용해 함수의 분포를 학습하는데, stochastic process를 NN(neural network)를 이용해 approximation 하는 것이 바로 NP(Neural Process)다.  

그리고 NN이  stochastic process를 approximation 하는 과정에서 학습에 필요한 데이터수가 대폭 줄어든다.


Generative Query Network

(S. M. Ali Eslam et al. (2018), "Neural scene representation and rendering," Science)

사실 CNP보다 먼저 발표된 것은 GQN이다. 마찬가지로 구글의 딥마인드가 발표했는데, 이 때는 앞서 언급한 GP와 NN을 제안하고자 하는 논문은 아니었다.

GQN은 여러 각도에 찍힌 2D 이미지를 neural net으로 학습해서 3D rendering 하기 위한 방법이었다.

GQN은 위 그림과 같이 Scene Representation 을 만드는 Representation network(f), Predicted view를 생성해내는 Generation network(g)를 가진다. 

Scene Representation은 일종의 암호화된 code라 할 수 있기때문에 f를 encoder, code를 다시 이미지로 변환하는 g를 decoder라 볼 수 있다. 그럼 단계별로 어떤 일이 벌어지는지 확인해보자.

[출처 : Deepmind의 GQN 설명 동영상]

가장 초기에는 학습되지 않은 GQN이 위와 같이 형성되어 있다. 왼쪽이 Representation net(f), 가운데가 Scene representation, 오른쪽이 Generation net(g)이다.  


먼저 위쪽 방향에 카메라를 설치하고 사진을 촬영했다. 이 이미지를 GQN에 입력해 representation을 뽑았다. representation의 밝은 부분이 많을수록 아직 이 공간을 파악하지 못했단 뜻이다. 그럼 사진을 한장 더 입력해보자.

두 번째 사진은 빨간공과 파란색 상자가 같이 나오는 사진이다. 이 사진을 학습하니 Scene representation의 밝은 부분이 많이 사라졌다. 

이번에는 만약 오른쪽에서 사진을 찍으면 어떤 모습일지 예측하는 단계다.

만약 representation net과 generation net이 잘 학습됐다면 View3의 각도를 Query로 입력했을 때 위 그림과 같이 Predicted scene이 True scene을 잘 예측할 수 있다. 

실제로 위 3개 관측치를 학습한 GQN이 다른 시점에서의 scene를 정확히 예측한 것을 확인할 수 있다.


Conditional Neural Process

(M. Garnelo et al. (2018), "Conditional Neural Processes," ICML)

CNP는 위에서 살펴본 GQN의 획기적인 훈련방식을 일반화해서 scene rendering 뿐만 아니라 regression, classification 등에 적용하기 위해 나온 개념이다.

일반적인 supervised learning(지도학습)은 위 그림의 (b)와 같이 (x, y) pair를 학습한 g라는 함수를 만들어서 예측하는데 활용하는 것이다.

하지만 CNP는 (c)와 같은 구조를 가진다. (앞서 설명한 GQN과 동일하다.)

  • 인코더 h를 이용해서 각 관측치를 표현하는 함수 r1, r2, r3... 를 찾는다.
    (CNN의 feature map 개념과 동일하다고 생각하면 된다.)

  • 각 함수를 합쳐서(aggregating) r을 만든다. (논문에서는 평균을 사용했다.) 

  • generatorrquery(x4, x5, x6)를 입력해 y4, y5, y6을 예측한다.

위 개념을 살펴보면, 전체적인 각각의 학습 모형은 Neural Network이지만,

여러 함수의 분포가 반영된 representation을 활용하는 측면에서는 GP와 유사한 모습을 보인다.

이 때 Generation Network를 어떻게 쓰느냐에 때라 regression, classification, image completion등 다양하게 활용할 수 있다.

  • Regression : Output layer의 크기를 1로 하고 ReLU와 같은 함수로 activate한다.
  • Classification : Output layer의 크기를 num_classes로 하고 softmax함수를 적용한다.

  • Image Completion (설명한 원리와 동일, Query를 이미지로 입력)


Neural Processes

(M. Garnelo et al. (2018), "Neural Processes," ICML Workshop on Theoretical Foundations and Applications of Deep Generative Models)

※ 참고로 NP, CNP는 같은날 발표됐고, GQN, NP, CNP를 발표한 저자는 모두 딥마인드 소속이다.

NP는 CNP의 확률적인 버전이다.
(추후에 배울 Autoencoder vs. Variational autoencoder의 관계와 비슷하다.)

위 그림을 보면, CNP는 (x, y) pair를 학습해서 y_t를 예측하는데 사용되지만,

NP에서는 z라는 변수를 거쳐서 y를 예측하게 된다. 

NP 구조는 CNP와 크게 다르지 않다.

  • (x, y) pair로 각각의 함수 rc들을 학습하고, r로 aggregating 한다.
    이번에는 전체 함수의 평균이 아니라, 
    각 함수(r1, r2, ..., rn) 평균과 분산을 parameterize한 z로 aggregating한다.

  • 즉, z는 함수 집합 r의 평균과 분산을 학습하는 확률변수다. (Gaussian 분포를 가짐)

  • z는 학습할때는 posterior지만, 예측할 때는 prior로 사용되며, uncertainty를 측정할 수 있게 해준다.

※ 다만 z가 확률변수기 때문에 back-propagation을 할 수 없다. 그래서 ELBO를 최대화 하는 방법을 이용해서 학습하는데 이번 포스팅에서 자세하게 다루진 않고 variational autoencoder를 포스팅할 때 다루도록 한다.


Attentive Neural Processes

(H. Kim et al. (2019), "Attentive neural Processes," ICLR)

NP는 함수 분포를 모델링하기 위한 효과적인 방법이지만 context set(query)에 underfit한다는 단점이 있다. 실제로 1D regression에서 NP는 context point가 존재하는 지점에서도 과한 분산과 부적절한 평균을 보이곤 한다. 

이러한 점을 해결하기 위해 NP에 Attention 개념을 적용한 것이 Attentive Neural Process이다. (참고 수준으로 기억하도록 하자.)



댓글 쓰기

0 댓글