2018년 4월 28일 토요일

일전의 auto encoder를 조금 개선해 봤다.

 이제는 거의 GAN이 되어가는 것 아닌가 싶지만.

 네트워크 구조는 동일하고 대신 reconstruction loss를 encoder 단에만 실리도록 구조를 바꾸었다. 이렇게 되면 decoding은 온전히 GAN이 관여하는 대신에 likelihood를 latent space 상에서 교정해준다.

 구조를 이런 특이한 형태로 바꾼 이유는 GAN의 강점인 sharp한 이미지가 reconstruction loss로 인해 무너지기 때문이다.

 이 구조에 들어간 intuition을 쉽게 얘기하면 generator가 생성하는 이미지는 어떻게 되든 좋으니, 대신 real distribution에 해당하는 이미지들과 최대한 가깝게 생성할 수 있도록 강제하는 것이다. 이렇게 된다면 discriminator의 혼동과 관계없이 generator 자체에 강력한 constraint가 실리고, 결과적으로 mode는 collapsing할 수 없다. 함정이라면 여기에 사용한 GAN이 LSGAN이라 mode collapsing이 잘 안 일어난다는 거지만, mode를 좀 더 세세하게 나눌 수 있을 거라고 예측된다. 여튼 embedding이 된다는 것만으로 만족이지... 결론적으로 말하면 결과는 나쁘지 않다. 실제 이미지와 동떨어진 이미지가 몇 개 등장하긴 했지만 어차피 embedding은 대강만 되어도 충분하니까.




(좌: 생성된 이미지, 우: 실제 이미지)




(랜덤 생성 이미지)

 이미지가 살짝 hole이 많이 들어가고 품질이 떨어진 것은 훈련이 100k에서 멈췄기 때문이다.

 ...한편으로는 이런 무식한 방법으로도 어떻게든 해결이 되는 듯한 deep learning에 치얼스...

PS. VAEGAN이랑 똑같아 보이면서 조금 다르다. 이 모델은 reparametrization이 없고 distribution에 regularization이 들어간다. decoding에는 관여하지 않는 것도 차이점. 다만 디코딩 성능은... 저 쪽이 결과가 더 좋아보이네. 으.

댓글 없음:

댓글 쓰기