이번 글에서는 수업시간에 조원들과 만든 새로운 모델(Tabular data 생성)을 다뤄보겠습니다. 그리고 나서 기존의 Tabular data 생성하는 모델인 CTGAN과 비교하며 겪었던 한계를 서술하겠습니다.

Introduction

이 모델은 Tabular data를 생성하는 CTGAN모델에서 이미지 데이터를 생성하는 InfoGAN 모델을 결합했기 때문에 CTGAN, InfoGAN에 대한 모델에 대해서 어느정도 이해가 필요할 것 같습니다.

 

[아래 링크는 InfoGAN,CTGAN 모델에 대해서 정리한 글입니다. 참고하시면 도움이 될 것 같습니다.]

InfoGAN : https://enjoy0life.tistory.com/7

CTGAN : https://enjoy0life.tistory.com/10

 

 

InfoGAN은 기존의 GAN모델을 확장해서 분리가능한 변수를 학습할 수 있습니다. 예를 들어 사람의 이미지를 생성한다고 할 때 눈, 코, 입 모양 등이 사람 이미지 생성하는데 분리된 변수로 볼 수 있습니다.

 

위 사진처럼 기존의 GAN 모델은 Generator에 들어가기 전에, noise vector만 들어갔다면, InfoGAN에서는 noise vector와 latent code라고 불리는 c라는 vector가 추가로 들어갑니다. (사람 이미지라고 생각했을 때, c는 눈, 코, 입 모양이라고 할 수 있습니다.)

 

 

위 사진은 InfoGAN의 Objective function입니다. 기존의 GAN의 Objective function에서 Mutual Information이 추가가 됩니다. Mutual Information term을 전개해보면 아래와 같은 사진처럼 나오는데 이때 우리는 Posterior을 모르기 때문에 Posterior과 근사할 수 있는 우리가 흔히 알고 있는 분포(Gaussian distribution)을 사용하여 두 분포 간 거리가 좁혀지도록 Q의 parameter(mu, var)을 업데이트 하여 Loss를 최소화 하도록 합니다.

 

 

이 부분을 설명하는 이유는 CTGAN에서 InfoGAN을 결합할 term이라서 설명했습니다.

 

GAN 과 InfoGAN의 아키텍처

 

사진 : https://github.com/hwalsuklee/tensorflow-generative-model-collections?fbclid=IwY2xjawFSDWRleHRuA2FlbQIxMAABHU2v1QeSBisMJQStuXW8HkEVWiX2HXIQIlCS3Ni2MiFiCXPlX-id66olNg_aem_z_K9KQQ6TNLlTr7VRIh9pg

 

 

Proposed Method

그럼 이제 저희가 제안한 모델을 살펴보겠습니다. 아래 사진은 CTGAN 모델의 아키텍처입니다.

CTGAN의 아키텍처

 

이 부분에서 어떻게 InfoGAN의 개념을 도입할것인가? → Generator의 input vector에서 conditional vector, noise vector 외에 InfoGAN의 latent code인 c를 도입하는 것 입니다.

여기서 c를 넣는 이유는 InfoGAN 모델을 생각해보면 c가 분리가능한 변수를 학습할 수 있었기 때문입니다.

 

즉, InfoGAN에서 latent code인 c를 넣어서 사람 얼굴을 생성한다고 할 때 이 c는 사람의 눈, 코, 입 등 중요한 변수를 독립적으로 학습합니다. 또한 c의 값을 변화시킬수록 눈, 코, 입 모양이 달라지는 다양한 이미지 데이터가 생성되게 됩니다.

그러면 tabular data를 생성할때도 c를 넣으면 Tabular data에서 중요하게 생각되는 변수가 c 값에 따라 변하지 않을까? 그러면 어떤 변수에 대해서 중점적으로 학습하는지 알게 될 것 같다고 생각했습니다.

 

input에다가 c를 추가했기 때문에 Objective function에는 기존의 CTGAN 모델의 Objective function에 Mutual information term이 추가가 됩니다.(Mutual Information term을 추가하여 G(z,c)가 c에 대한 정보를 많이 가지도록 합니다.) 이때 $\lambda$는 hyperparameter입니다.

 

 

아까 InfoGAN에서 Posterior을 직접구할 수 없었기 때문에 Q라는 보조분포를 사용했기때문에 저희가 제안한 모델에서도 Q라는 Network를 추가해줍니다. Q(우리가 흔히 아는 분포, Gaussain distribution)를 실제 Posterior과 가깝게 만들도록 mu와 var을 업데이트 합니다.

 

 

이렇게 최종적으로 모델을 만들었습니다. 그러면 이렇게 만든 모델이 실제로 데이터에서 어떤 변수를 중점적으로 학습하는지, 그리고 기존의 CTGAN 모델과 비교해서 성능이 어떻게 되는지 확인해보도록 하겠습니다.

 

Experiments

실험을 위해 Adult data 사용하며 Decision Tree Classifier 사용하여 F1-score 계산하였습니다. Adult data : 6개의 이산형 변수, 9개의 범주형 변수로 구성되었습니다.

Method  F1-score
CTGAN 0.5271
Proposed Method 0.5606

 

 

[코드 부분은 아래 게시글에서 확인하실 수 있으십니다. 링크 첨부합니다.]

 

 

 

위 표는 실제로 코드를 짜서 F1 score를 확인했습니다. 이때 c는 1로 두고 모델을 학습했는데, c는 원하는 개수로 설정할 수 있습니다.(c가 변수의 수보다 많지만 않으면 됨)

 

성능은 확실히 좋아진 것을 알 수 있었지만, InfoGAN에서는 이미지 데이터 생성이므로 c가 어떤 특징을 학습했는지 시각적으로 보여졌지만, Tabular data는 수치적으로 보이다 보니 c가 어떤 변수를 중점적으로 학습했는지는 확실하게 알 수 없었습니다. 이 부분이 조금 아쉬웠습니다.

 

Limitation

저희가 제안한 모델에는 성능적으로는 향상했다고 할 수 있지만, 왜 그렇게 향상이 됐는지 논리적으로 설명을 할 수 없었습니다. latent code인 c를 추가했지만, 이 c가 Adult data에서 어떤 변수를 중요하게 학습했는지 확인할 수 없었고, 과연 다양한 데이터를 생성했다? 라는 말도 납득시키지 못했습니다. 이미지 데이터는 얼굴 모양이 다른 데이터가 생성되었기 때문에 다양한 데이터를 생성했다고 할 수 있지만, Tabular data는 수치 데이터 이기 때문에 과연 변수의 값이 변했다고 다양한 데이터가 생성이 된게 맞는지? 의심해볼 필요가 있습니다.

 

논리적으로 보완할 수 있다면 모델의 성능은 향상되었기 때문에 어느정도 의미가 있다고 볼 수 있을 것 같습니다.

 

감사합니다.

 

참고문헌

  1. https://arxiv.org/pdf/1907.00503
  2. https://arxiv.org/abs/1606.03657

 

+ Recent posts