어떠한 강아지 이미지가 주어졌다고 가정했을 때
아래는 generative model이 했으면 하는 혹은 할 수 있는 것들 3가지이다.
또한, Generative model은 explicit model과 inplicit model로 나뉜다
Example
fully dependent하면 너무 많은 파라미터가 필요하고 independent하다면 파라미터를 줄일 수 있었지만, 이렇게 되면 표현할 수 있는 이미지가 적은 문제가 있으니 이 중간점을 찾자!
3 가지 중요한 방법
위와 같이 binary 픽셀을 가지는 28x28의 이미지가 있을 때, 앞에서 보았던 확률 분포를 만들기를 원한다면 몇 개의 파라미터가 필요할까?
chain rule을 가지고 joint distribution을 나눈 이 모델을 autoregressive model이라 부른다
명확히 하면 auto regressive 모델은 이전 하나의 정보가 이전 정보들에 dependent 한다는 것을 말한다
i번째 픽셀이 i-1에만 dependent한 것도 auto regressive 모델이지만 i번째 픽셀이 1부터 i-1까지 dependent한 것도 auto regressive 모델이다.
auto regressive를 활용을 하기 위해 중요한 것은 ordering이다.
i번째 픽셀을 첫 번째부터 i-1번째 픽셀까지 dependent하기 위한 모델
첫 번째 픽셀에 대한 확률 분포를 어떤 것에도 dependent하지 않은 상태로 만들고, 두 번째 픽셀에 대한 확률을 첫 번째 픽셀에만 dependent하게 만들고, i번째 픽셀에 대한 확률은 첫번째 픽셀에 대한 확률부터 i-1 번째 픽셀에 대한 확률까지 dependent한 모델이다.
neural network의 입장에서는 입력 차원이 계속 달라지기 때문에 weight가 계속 커진다.
NADE는 explicit 모델로 단순히 이 모델이 generation만 할 수 있는 것이 아니라 binary 벡터가 주어졌을 때 임의의 확률로 계산할 수 있는 모델이다
이제껏 binary 픽셀을 말헀지만, 연속적인 픽셀의 경우에는 Gaussian mixture model을 활용하여 만들 수 있다.
어떤 이미지에 있는 픽셀들을 만들고 싶은데, RGB의 픽셀을 고려하여 i번째 픽셀의 R먼저 만들고 후에 G,B순서로 만드는 모델이다.
앞에서 봤던 것은 auto regression 모델을 fully connect layer를 통해 만들었는데,
차이점으로는 위에서는 i번째 픽셀은 i-1개의 입력을 다 고려할 수 있는 Dense layer를 만든것인 반면, Pixel RNN은 이름에서와 같이 RNN을 활용해 만들겠다는 차이점이 있다.
ordering을 어떻게 하냐에 따라서 두 가지의 알고리즘으로 나뉜다
- Row LSTM : i번쨰 픽셀을 만들 때 위쪽의 픽셀을 활용하는 것
- Diagonal BiLSTM : bidirection LSTM을 활용하되 이전의 픽셀들을 다 활용하는 것