목차
Flow-based Models (1)에서 모델을 전반적으로 이해해보았다. 본 포스팅에서는 flow-based model의 예시를 알아보자.
Flow-based model은 invertible transformation에 어떤 함수를 사용하는지에 따라 나뉜다.
Planar Flows
Planar flow에서의 invertible transformation은 다음과 같다. (편의 상 bold체를 따로 사용하지 않고 벡터를 표현한다.)
위 식과 같이
그런데, invertible 성질을 만족하기 위해서는 다음과 같은 두 가지 제약조건이 필요하다.
Base distribution


NICE and Real-NVP
NICE와 Real-NVP라는 flow-based model을 알아보자. 특히 Real-NVP는 GLOW 등 좋은 성능을 보이는 다른 flow-based model들의 기본이 되는 중요한 모델이다.
Nonlinear Independent Components Estimation (NICE)
NICE는 additive coupling layer와 rescaling layer 이렇게 두 가지 invertible transformation으로 구성된다.
Additive coupling layers
Additive coupling layer에서는 random variable
그리고 layer에서는 두 가지 연산 forward mapping
먼저 forward mapping은 아래와 같이 진행된다.
: 개 input units, 개 output units를 갖는 neural network
첫 번째 subset에 대해서는 identity transformation(그대로 transform), 두 번째 subset에 대해서는 첫 번째 subset을 입력한 neural network의 결과를 뺀 결과를
이때 Jacobian은 다음과 같이 계산한다.
Jacobian은 lower triangular matrix 형태로 나오며, determinant가 1이므로 volume이 보존된다. (volume preserving transformation)
또한 inverse mapping은 아래와 같이 진행한다.
Forward mapping에서 사용했던 neural network를 그대로 활용하여
NICE에서는 여러 개의 서로 다른
Rescaling layeres
Rescaling layer는 여러 additive coupling layer를 거친 후 마지막 layer에서 동작하는 transformation이다.
마찬가지로 forward mapping
Forward mapping부터 살펴보자.
: 번째 dimension에 대한 scaling factor
즉, 단순히
Jacobian도 간단하다.
Inverse mapping은 자연스럽게 다음과 같이 계산한다.
Real-valued Non-volume Preserving Flows (Real-NVP)
Real-NVP도 NICE와 비슷하게 coupling layer와 permutation layer 두 가지 layer로 구성된다. 단, 이름에서 알 수 있듯이, Jacobian의 determinant가 1이 아닌, non-volume preserving transformation을 활용한다.
Coupling layers
NICE에서의 additive coupling layer와 마찬가지로, 우선 variable
Forward mapping
, : 각각 scaling, transition neural network로, 개 units을 입력받아 개 units를 출력한다. : Element-wise 곱(production)을 나타낸다.
Inverse mapping
Jacobian과 그 determinant는 다음과 같이 계산한다.
이 경우, determinant 값이 1이 아닐수도 있다. 즉 non-preserving volume transformation이므로 더 general한 모델이다.
MAF, IAF, Parallel Wavenet
Real-NVP까지는 flow-based model에서 어떤 transformation을 사용하는가로 구분지었다. 그런데, autoregressive model을 flow model처럼 사용할 수도 있다. 이러한 방법을 autoregressive flow라 한다.
아래와 같은 Gaussian autoregressive model을 복기해보자.
여기서 conditional distribution
즉, autoregressive flow는 결국 standard Gaussian에서 샘플링한
Masked Autoregressive Flow (MAF)

MAF의 forward mapping
에 대해 샘플링 으로 두고, 와 계산 으로 두고, 와 계산
따라서 샘플링을 할 때 autoregressive하게 이전 value들을 사용하여 계산함으로써 샘플링 시간이 오래걸린다는 특징이 있다.
MAF의 inverse mapping
- 모든
와 를 계산한다. (모든 를 알고 있으므로 parallel computation 가능) → MADE 모델의 과정과 같다. 로 를 구한다.
따라서, MAF는 샘플링을 할 때에는 autoregressisve하게(이전 value들을 사용하여) 계산해야 하기 때문에 느리지만, likelihood를 구할 때(training할 때)에는 빠르게 할 수 있다.
Inverse Autoregressive Flow (IAF)
IAF는 말그대로 MAF와 forward, inverse mapping 방법이 반대이다. 즉, MAF 수식에서

IAF의 forward mapping
- 모든
에 대해 를 샘플링한다. - 모든
를 계산한다. 로 를 계산한다.
Inverse mapping
로 을 계산한다. 로 를 계산한다.
즉, sampling은 빠르지만 training이 느리다.
Parallel Wavenet
MAF와 IAF처럼, 샘플링 시간과 학습 시간은 trade-off 관계이다. 그런데, Parallel Wavenet 모델에서는 knowledge distillation을 활용하여 training 시에는 MAF의 이점을, sampling 시에는 IAF의 이점을 활용한다.
Training은 두 단계로 나뉜다.
- Teacher model (MAF)를 학습한다.
- Student model (IAF)를 학습한다. 이때 loss는 아래와 같은 KL divergence를 활용한다.
Objective는 다음과 같이 나타낼 수 있다.
Test(evaluation) 시에는 IAF 기반의 student model을 사용한다.
최근댓글