[15′ ICLR] NICE: NON-LINEAR INDEPENDENT COMPONENTS ESTIMATION 핵심 리뷰

This entry is part 11 of 13 in the series Image Generative Model

내용 요약

Normalizing Flow를 DNN을 사용하여 구현한 모델인 NICE의 핵심 내용을 살펴봅니다. Coupling Layer와 Additive Function을 사용하여 어떻게 제약조건을 해결했는지 살펴봅니다.

1. 들어가며

이번 글에서는 2015년 ICLR에 발표된 논문인 NICE: NON-LINEAR INDEPENDENT COMPONENTS ESTIMATION를 리뷰합니다. NICE는 딥러닝으로 구현한 최초의 Normalizing Flow 모델입니다.

2. 기존 방법의 문제점

Normalizing Flow는 NICE에서 처음 제안한 방법이 아닙니다. NICE 이전부터 존재했던 Generative 방법중 하나죠. 하지만 Normalizing Flow를 딥러닝 모델로 구현하기에는 여러 어려움이 있었습니다.

첫 번째 문제는 대부분의 딥러닝 모델에서 사용하는 함수들은 역함수가 존재하지 않다는 것이었습니다. 즉 Invertible Function이 아니라는 것이죠.
두 번째 문제는 마찬가지로 대부분의 딥러닝 모델 함수들은 Jacobian의 Determinant를 구하기 어렵다는 것이었습니다.

Normalizing Flow의 기본 개념과 기존 방법의 문제에 대해서는 딥러닝과 Normalizing Flow 글을 참고 바랍니다.

2. 제안 방법

이제 NICE의 제안 방법을 살펴보겠습니다.

1-1. Triangular Matrix

제안 방법의 첫 번째 포인트는 Jacobian을 Triangular Matrix 형태로 만든 것입니다.

image 59

위 그림은 Triangular Matrix를 표현한 것인데요. 우선 Matrix가 두 개의 삼각형으로 이루어진 모습을 볼 수 있습니다. 그리고 한쪽은 실수값을 갖고 한쪽은 모두 0을 갖고 있는 모습이죠.

이러한 Triangular Matrix는 Determinant를 구하기 쉽다는 특징이 있습니다. 왜냐하면 대각 성분들의 곱으로 표현되기 때문입니다. 따라서 함수 f의 Jacobian이 Triangular Matrix가 되도록 구현하면 Jacobian의 Determinant를 쉽게 구할 수 있습니다. 아래 챕터에서 이어서 어떻게 Jacobian을 Triangular Matrix로 구현했는지 살펴보겠습니다. 

1-2. Coupling layer

다음은 Coupling Layer의 사용입니다. Coupling Layer란 Input을 둘로 나눠 구성한 Matrix입니다. 이렇게 말이죠.

image 60

그리고 나서 y2는 y1과 적절한 함수를 사용하여 구성해줍니다. 수식으로는 다음과 같이 표현할 수 있습니다.

1.coupling-layer-output
1.coupling-layer-output

이렇게 표현되는 y의 Jacobian은 다음과 같습니다.

image 61

따라서 구하고자 하는 det(J)는 다음과 같습니다.

3.det(J)
3.det(J)

아주 간단하게 Jacobian의 Determinant를 계산할 수 있게 되었죠? 따라서 두 번째 문제인 Determinant 문제는 해결되었습니다.

이제 첫 번째 문제인 Inversion 가능한 함수여야 한다는 조건을 생각해보겠습니다. 위의 수식에서 g 함수를 단순히 Additive Function (+)를 사용해볼까요? 그러면 수식은 이렇게 표현됩니다.

image 62

이렇게 Additive Function을 사용하면 역함수도 바로 구할 수 있습니다. 역함수는 이렇게 표현 되겠죠.

4.inverse-function
4.inverse-function

또한 함수 m에는 Inversion이나 Determinant 같은 제약 조건이 없습니다. 따라서 Deep Neural Network 같은 복잡한 함수를 사용할 수 있다는 장점이 있습니다. 게다가 g를 +함수로 사용함으로써 det(J)는 다음과 같이 표현됩니다.

5.after-det(J)
5.after-det(J)

따라서 Coupling Layer를 사용하고 g 함수는 Additive Function을 사용함으로써 두 가지 제약조건을 해결하게 되었습니다. 그리고 m함수에 DNN을 사용할 수 있게 되었죠.

이렇게 구성된 Coupling Layer는 복잡한 Distribution을 표현하기 위해 3~4개의 coupling layer를 연속으로 배치하여 구성해 주었습니다.

3. 실험 결과

다음은 이렇게 제안한 방법의 실험 결과를 살펴보겠습니다.

3-1. Log likelihood and generation

이렇게 학습한 NF모델의 Image Classification 데이터셋에 대한 Log Likelihood를 측정한 결과입니다.

6.log-likelihood
6.log-likelihood

다음은 각 데이터셋에 대해 생성한 이미지 모습입니다.

7.image-generation
7.image-generation

먼저 첫 번째 그림인 MNIST 생성 이미지를 보겠습니다. 제법 그럴듯하게 생성하는 모습을 볼 수 있습니다.

반면 TFD, SVHN, CIFAR10 등 조금 더 복잡한 이미지에 대해서는 그럴듯 하지만 형태가 뭉개진 모습을 보입니다. 아직은 GAN 등과 같은 기존 방식 대비 저조한 성능을 보이는 모습입니다. 이러한 성능은 이후 RealNVP, GLOW 등의 모델에서 개선됩니다.

Series Navigation<< Normalizing Flow 설명 – 정의, 특징, 딥러닝 모델들[17′ ICLR] DENSITY ESTIMATION USING REAL NVP (RealNVP) 핵심 리뷰 >>
0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
Scroll to Top