본문 바로가기

ML & AI/Paper Review

[ML/Tabular] CTGAN, Modeling Tabular Data using Conditional GAN Review

 

NeurIPS 2019 에 발표된
"Modeling Tabular Data using Conditional GAN Review" 라는 논문에 대해 Review 를 하고자 한다.

 



해당 논문은 Discrete Column (범주형 데이터) 와 Continuous Column (연속형 데이터) 들이 섞여 있는
Tabular data 를 재현하는 데 존재하는 어려움과 이를 극복하는 방법에 대해 이야기 하고 있다.

본 논문에서 말하는 두 Columns 의 문제점은 다음과 같다.

1. Discrete Column (= Categorical Column) : 뷸균형한 데이터 분포
ex) 예방접종 유무를 나타내는 Column 의 경우에, Yes 는 10% 이고 No 는 90% 인 경우

2. Cotinuous Column : multi-modal non-Gaussian values
즉, 그 Column 의 Data 의 분포가 복잡한 형태를 띄고 있는 경우가 많음 

 


 

이를 더 세부적으로 서술하면
Tabular Data 의 특성에 의해 Generative Models (특히, GAN 기반 모델) 을 이용해 Tabular Synthetic Data (재현 데이터) 를 생성하는데 있어 다음과 같은 문제를 가진다.

 

  1. Mixed Data Types : 실제 Tabular Data 는 Discrete 와 Continuous 한 Column 을 함께 가지고 있다.

  2. Non-Gaussian Distributions : 이미지 같은 경우엔 보통 Gaussian 틱한 분포를 가지기 때문에, min-max normalization 을 통해 -1~1 사이로 normalize 가 가능하고, 따라서 tanh 와 같은 activate function 을 마지막 레이어에 추가해서 값을 이 범위 안으로 출력해도 된다. 하지만, Tabular Continuous Column 같은 경우는 Non-Gaussial 분포를 가지는 경우도 많기 때문에, min-max transformation 을 사용했다가는 vanishing gradient problem 을 이야기하게 된다.

  3. Multimodal Distributions : 실제 Continuous Column 은 uni-modal 한 분포가 아닌 multi-modal 한 분포를 가지는 경우도 있다. GAN 기반의 모델들은 이런 다량의 modes 들을 가진 molti-modal 한 분포를 잘 모델링하지 못하는 경우가 있다.

  4. Learning from sparse one-hot-encoded vectors : training data 들에서 categorical columns 은 one-hot vector 로 표현되는데, GAN 기반의 모델들은 categorical columns 들을 softmax 함수를 이용해 어떤 category 가 선택될 확률값을 출력하게 된다. discriminator 입장에서는 0,0,1,0,0 과 같이 distribution 의 sparseness 를 보면서 real 로 판별하도록 학습이 될텐데 이는 generaotor 의 생성 방식과의 동기화가 맞지 않는다.  즉, 이렇게 되면 단순한 판별자는 실제 데이터와 가짜 데이터를 분별할 때 전체적인 실제성을 고려하는 것이 아니라 분포의 희소성만 확인하여 구분할 수 있는 문제가 발생한다.

  5. Highly imbalanced categorical columns : 앞서 설명한 것 처럼 실제 데이터에는 categorical columns 들이 imbalance 된 즉, 데이터의 분포가 확연하게 균형잡히지 않은 경우들이 많다. 이런 경우는 GAN model 가 minor class 에 대한 충분한 학습이 이뤄지지 않도록 한다.

 


본 논문에서 제안하는 솔루션은 다음과 같다.

 

  • mode-specific normalization : non-Gaussian & multimodal distribution 문제 해결 (contiunous columns)
  • conditional generator & training-by-sampling : imbalanced 문제 해결 (discrite columns)

Mode-Specific Normalization

 

data 를 잘 표현하는 것이 모델에 성능에 굉장히 중요한데, discrete values 같은 경우는 one-hot vector 로 나타내지만, continuous vlaue 같은 경우는 어떠한 임의적인 distribution 으로 나타낼 수 있어야 한다.

CTGAN 이전 논문들은 이를 min-max normalization 이라는 간단한 방식으로 [-1,1] 의 범위로 값을 normalize 했다.  CTGAN 에서는 이를 mode-specific normalization 을 해서, 각 column 마다 따르는 distribution 을 여러 Gaussian mixture 로 표현해서 normalize 하였다. 이로, 좀더 complicated 한 분포를 다룰 수 있게 하였다.

 

mode-specific normalization [1]

위 figure1 이 그 예시이다. 한 column 의 training data 들을 이용해서 위 왼쪽 그림처럼 Variational Gaussian Mixture (VGM) 를 생성한다. 그래서, 각 value 들은 VGM 에서 선택된 mode 를 표시하는 one-hot encoding 과 그에 대한 scalar 값으로 바뀐다.

위 그림의 예시로 설명하면, 한 column 에 대한 VGM 이 위 그림처럼 3가지 모드 $(\eta 1 , \eta 2, \eta 3)$ 로 표현되었을 때,

한 column $C{i,j}$를 normalize 하는 경우

$C{i,j}$ 에 대한 각 mode 의 확률밀도는 $ \rho 1,\rho 2,\rho 3$ 로 나타낼 수 있다. 여기서 한 가지 mode 를 sampling 하면 되는 데 figure1 의 경우 가장 밀도가 높은 $ \rho 3 $ 이 선택 되었다. 따라서 3번째 mode를 뜻하는 one-hot encoding 으로 [0,0,1] 로 나타내고 그 mode 맞는 scalar 값으로 변형 시키면 다음과 같이 표현된다.

$$\beta {i,j} = [0,0,1] , \alpha {i,j} = \frac{C{i,j}-\eta {3}}{4\phi {3}}$$

따라서, $C{i,j} => [0,0,1, \frac{C{i,j}-\eta {3}}{4\phi {3}}]$ 로 normalize 된다.

 

즉, 한 column 의 min 값과 max 값을 -1 과 1로 단순히 normalize 하는 것이 아닌,

한 column 의 distribution 을 여러개의 mode 로 나눠서 각 mode 별로 따로 normlize 하는 방식을 통해
한 column 에서 나타나는 multi-modal 한 distribution 에 대한 것도 GAN 이 학습할 수 있도록 하였다.

 


Conditional Generator & Training-by-sampling

 

이제, discrete column 의 imbalance 문제이다. GAN 모델에서 generator 는 Discriminator (or Critic) 와 상호작용하면서 ramdom 하게 생성되는 ratent vector (z) 를 실데이터의 distribution 에 맞게 매핑(mapping) 되도록 훈련된다. 

자, 여기서 training data 를 random 하게 sample 해서 선택하는 경우에 minor category (즉 비율이 적은 category) 에 대한 train data 양은 적을테니 충분하게 학습되지 못할 것이다. 


그래서, generator 를 conditional 하게 만들고, condition 으로 discrete columns 에서 한개의 discrte column 의 특정 category 가 활성화 되게 해준다. (Conditional GAN)
그렇게 해서, data sampling 을 잘 구현 하면 원래의 discrete column 의 distribution 을 잘 따르면서, 각 discrete column 들을 골구로 학습할 수 있게 된다.

conditional generator [1]

예로 위 Figure 2 를 예시로 설명하면, 전체 데이터 중에서 Discrete Columns 이 $D{1} = {1,2,3} , D{2} = {1,2} $ 일 때,
이 둘중에서 한가지 column 을 random 하게 선택한다. 위 그림에서는 $D{2}$ 가 선택되었다.
이후에 $D{2}$  의 분포에 따라 PMF (=Probability Mass Function) 를 설정하고 이 PMF 에 따라 특정 category 선택한다.

위 예시에선 첫번째 category (=1) 이 선택되었다.
따라서, 이에 대한 condition vector 를 표현하면 [0,0,0,1,0] 이 된다. 

 

여기서 conditional generator 를 수행하기 위한 Generator loss 가 추가된다. generator 가 생성한 $D{i}$ 값이 condition vector $C{i}$ 와 같도록 cross-entropy loss 를 넣어주면 된다. 

아래가 그 cross-entropy loss 를 batch 별로 계산하는 코드이다.

generator 에 생성된 fake_x 인 data 에서 특정 discrete column 과 condition vector c 의 매칭되는 부분에서 나타내는 category 값과의 cross_entropy 를 재고, 이를 최종적으로 batch 별로 loss 를 평균 내는 것이다.

 

 

 

 


 

ablation study [1]

 

본 논문에서 제안한 방법들의 효과를 확인하기 위해 ablation study 의 table 3 을 보면 된다.

일단 Mode-specific Normalization 의 경우, VGM 이 아닌 GMM 을 쓴 경우와 보통의 경우에 많이 쓰이던 MinMax normalization 을 쓴 경우를 비교해 보았다. GMM 은 performance 가 살짝 10% 이내로 줄어들었고, MinMax 의 경우는 약 26% 로 performance 가 줄어듦을 확인할 수 있다. 


w/o S 는 training-by-sampling 만을 제거한 경우인데, 여기서 condition vector 는 log frequency 가 아닌 training data frequency 자체를 사용해서 sample 을 했는데, 그랬더니 17.8% 의 성능이 줄어들었다.

w/o C 는 아예 conditional generator 가 아닌 그냥 generator 를 사용한 경우인데, 이 경우는 36.5% 의 성능이 줄어들어 확연한 차이를 나타냈다.

 

위 실험을 통해 mode-specific normalization 과 conditional generator & training-by-sampling 의 효과들을 각각 확인할 수 있었다. 

 

 


Referenece

 

[1] Modeling Tabular Data using Conditional GAN

[2] https://github.com/sdv-dev/CTGAN

 

 

 

 

반응형