목차
이전 글에 이어, autoregressive generative model에 어떤 모델이 있는지 좀 더 살펴보자.
다음은 다양한 deep generative model 의 비교 표이다.

Autoencoder based ARM
Autoregressive Models (ARM) vs Autoencoders (AE)
Autoencoder
먼저 autoencoder에 대해 간단히 알아보고 비교해보자.

Autoencoder는 encoder
예를 들어 Fig 2에서 encoder는
위는
보통 autoencoder를 사용하는 목적은 input과 똑같은 reconstruction 결과물을 얻는 것 보다는 encoding의 결과인
그렇다 해도 기본적인 형태의 autoencoder는 generative model은 아니다. 새로운 데이터를 생성하기 위해 sampling할 때 필요한
Generative model from an autoencoder

그런데, Fig 3에서와 같이 input으로부터 데이터를 추정(estimate)한다는 점에서 FVSBN과 NADE는 autoencoder와 비슷해 보인다. 그럼 autoencoder를 generative model로 활용하려면 어떻게 해야하는 지 알아보자.
우선 네트워크가 Bayesian Network (DAG structure)여야 한다. 즉, ordering이 필요하다.
예를 들어, Fig 3의 autoencoder를 살펴보자. Ordering이 1, 2, 3 순서라면,
이때
Masked AE for Distribution Estimation (MADE)
MADE는 masking을 활용하여 autoencoder를 generative model에 활용한 모델이다.

Autoencoder를 autoregressive하게 활용하기 위해(DAG structure를 갖게 하기 위해, 즉 ordering을 부여하기 위해) masking을 하여 특정 path를 끊어준다. Fig 4에서, ordering이
- 첫 번째 순서인
의 distribution 의 parameter를 생성하는 unit은 어떤 input에도 의존하지 않으며, 는 input 에만, 는 input 에 의존한다. - Hidden layer에서 각 unit에 대해
(예시에서 n=3) 범위에서 integer를 랜덤으로 골라 해당 unit이 의존할 input을 정한다. 예를 들어, 2를 골랐으면 1( )과 2( )에 의존하게 된다. - Mask를 추가하여 몇몇 path(connection)를 없앤다. Fig 4에서
을 보면, 첫 번째 열(첫 번째 unit, 즉 )의 path는 전부 masking(0)되어있다. 따라서 오른쪽 그림처럼 unit은 아무런 connection이 없는 것이다. 마찬가지로 의 경우 두 번째 path가 끊겨 있다.
이렇게 masking을 하면

RNN based ARMs
이전 글에서 RNN으로 Autoregressive Model을 모델링하는 방법을 설명했다. Autoencoder 기반 모델들은 input과 output dimension이 고정되어있지만, RNN은 임의의 length를 다룰 수 있다는 장점을 갖고 있다.
그 예시를 알아보자.
Character RNN
Character RNN은 text를 다루는 RNN 기반 autoregressive generative model이다.

이 모델은 요즘 핫한 chatGPT의 근간이 되는 모델이기도 하다. 하지만, 주어진 past data에 따라 가장 높은 확률의 다음 단어를 생성할 뿐, feqture encoding을 하는 게 아님에 주목하자.
PixelRNN
PixelRNN은 image를 다루는 RNN 기반 autoregressive generative model이다.

Fig 7과 같이 image를 pixel의 순서대로 다루는데, pixel conditional
실제로는 Fig 7 가운데 그림처럼 masking을 통해 multi-scale context를 고려하고, 정확하게는 RNN variants 중 하나인 LSTM을 활용하지만, 이 포스팅에서 자세히 다루지는 않겠다.
Pros and Cons of RNN based ARM
이전 글에서도 설명했지만, RNN을 활용한 autoregressive generative model의 장단점을 다시 한 번 살펴보자.
- Pros
- 임의의 lengt의 sequence에 적용이 가능하다.
- 모든 계산 가능한 함수에 대해 RNN을 적용할 수 있다. (일반적(general)으로 사용이 가능하다.)
- Cons
- Ordering이 필요하다.
- Likelihood evaluation 과정이 sequential하게 이루어진다. → 학습이 매우 느리다.
- Generation 과정이 sequential하게 이루어진다. → autoregressive model의 한계이다.
- Vanishing/exploding gradient problem이 존재한다. → 학습이 어렵다.
CNN based ARM
PixelCNN
다음으로는 image에서 RNN보다 훨씬 많이 활용되는 CNN을 기반으로 한 autoregressive generative model을 살펴보자.


Idea는 매우 간단한데, Fig 8, 9와 같이 masked convolution을 활용하여 주어진 context(이웃한 pixel)를 활용하여 다음 pixel을 예측하는 것이다.
PixelCNN vs PixelRNN
다음은 PixelCNN과 기본 LSTM 기반 PixelRNN과 BiLSTM 기반 PixelRNN을 비교한 그림이다.

연산의 속도와 log-likelihood의 quality는 trade-off 관계임을 알 수 있다.
최근댓글