GANs for tabular data - 리뷰

2020. 3. 29. 22:39관심있는 주제/GAN

기존에 있었던 논문을 정리한 미디엄 글이다.

 2개 정도 소개하는 글이다. 사실 다 한 번씩 본 것이지만, 정리하는 차원에서 다시 보기로 했다.
사실 관심 있는 사람도 만나서 반갑기도 하다.


TGAN: Synthesizing Tabular Data using Generative Adversarial Networks arXiv:1811.11264v1

TGAN 저자는 GAN으로 생성할 때 이러한 문제점들이 있다고 한다.

  • the various data types (int, decimals, categories, time, text)
  • different shapes of distribution ( multi-modal, long tail, Non-Gaussian…)
  • sparse one-hot-encoded vectors and highly imbalanced categorical columns.

위의 있는 문제는 역시 나도 고민하고 있고, 2번에 대해서는 아직 고려해서 모델링을 하지 못했다.

table $T$에 있는 연속형 변수 $n_c$와 범주형 변수 $n_d$를 포함하고 있다고 하자.
각각의 열은 $C$ vector이고, 이 변수들은 우리가 모르는 결합 분포 $P$로 있다고 하자.
각각의 열은 $P$ 로부터 독립적으로 샘플링될 것이다. 
$M$은 생성 모델로 $M$은 $P$와 유사한 새로운 생성 테이블 $T_{synth}$를 생성한다. 
$T_{synth}$로 학습된 머신 러닝은 실제 테스트 테이블 $T_{test}와 유사한 정확도를 가질 것이다.
(사실 이러한 관점은 model-agnostic 한 방법론인 것 같아서 불안의 소지가 있긴 하다.)

Preprocessing numerical variables

저자는 효율적인 연속형 변수를 생성하기 위해 $tanh$ 활성화 함수를 사용한다.
그러나 multimodal 같은 경우가 있을 경우 생성하는 것을 실패하게 된다는 것을 저자도 알고 있었다.
그래서 그들은 가우시안 혼합 모형(GMM) m=5로 하여 훈련시켜서, 연속형 변수를 군집화 했다고 한다.

최종적으로 GMM는 $V$를 얻기 위해 $C$를 정규화한다고 한다. 게다가, 그들은 각각의 $m$ 정규 분포에서 $C$가 나올 확률을 벡터 $U$로 계산한다.

Preprocessing categorical variables.

일반적으로 낮은 cardinality로 인해, 소프트 맥스를 사용해서 직접 생성하였다. 
그러나 범주형 변수를 이진 변수에 대한 노이즈를 사용하여 원 핫 인코딩 표현으로 바꿀 필요가 있다고 있다고 한다.
여기서 이진 변수에 대한 노이즈가 먼지는 다음과 같다.

전처리 후에, 그들은 그들은 $n_c$ + $n_d$ 열이 있는 $T$를 $V, U, D$ 벡터로 변환한다.
이 벡터는 GAN에서 Generator의 출력 값 및 Discriminator의 입력값으로 사용한다.

“GAN does not have access to GMM parameters like $\sigma$ and $\gamma$”


Generator

연속형 변수를 2단계로 나눠서 생성한다.

  1. 위에 보이는 그림처럼 일단 상수 $V$를 생성한다.
  2. tanh를 적용하여 cluster vector $U$ 를 생성한다. 

범주형 변수는 소프트 맥스로 모든 가능한 레이블에 대해서 확률 분포를 생성한다.
attention mechanism을 사용하여 원하는 행 LSTM을 생성한다.
각 단계에서 LSTM에 대한 입력은 Random variable $z$, 가중 Context 벡터(이전의 숨겨진 벡터와 임베딩 벡터)이다.

Discriminator

BatchNorm과 LeakyRelu를 사용한 MLP가 사용된다. 첫번째 레이어는 LSTM의 feature vector와 함께 minibatch의 다양성을 가진 $(V,U,D)$로 결합한 vector로 사용되어진다. 
손실 함수는 총 명목 로그 손실 함수와 함께 입력 변수의 KL divergence를 사용했다.


이제는 CTGAN을 설명


 

Modeling Tabular Data using Conditional GAN (CTGAN) arXiv:1907.00503v2 [4]

CTGAN에서 정형 데이터 생성 시 문제점은 다음과 같다고 한다.

이전에 설명한 TGAN의 주요 개선 사항은 비가우시안 분포와 다중 모드의 분포 문제를 극복하기 위해 모드별로 정규화를 적용하는 것이라고 한다. 불균형한 이상현 컬럼에 대한 문제를 샘플링으로써 훈련하는 조건부 생성기를 쓴다. 

TGAN과 굉장히 유사하지만, 그들은 다른 문제들을 풀었다. 

  • $Likelihood of fitness$ $T_{syn}$은 T_{train}의 동일 결합 분포를 따른다고 한다.
  • $Machine learning efficacy$ 변수로써, 다른 변수들을 사용하여 하나의 컬럼을 예측하는 모델을 훈련시킬 때, $T_{syn}$에서 학습한 모델이 $T_{test}$에서 학습한 모델과 유사한 성능을 달성할 수 있는지?

Preprocessing

  • 이산형 변수
    • TGAN과 마찬가지 이산형 컬럼에 대한 전처리는 동일하게 한다.
  • 연속형 변수
    • VGM(변분 가우시안 혼합 모형)을 사용한다.
    • 그것으로 먼저 모드 m의 수를 추정한 다음 가우시안 혼합으로 적합시킨다.
    • TGAN에서와 같이 거의 초기 벡터 $C$를 정규화한 후에, 각각의 Mode에서 정규화한다.
      • Mode는 one-hot vector로 표현된다.  $\alpha([0,0,...,1,0])$, $alpha$는 $C$의 정규화된 값이다.

그림을 해석해보고자 하면, 일단 VGM으로 $\gamma_1, \gamma_2, \gamma_3$을 추정한다. 그다음에 각각의 모드에 대한 확률 값을 계산한다. 그리고 Mode를 샘플링하고, 값을 정규화한다. 

그 결과, 첫 번째 행을 one-hot discrete column과 연속 변수의 결합으로 표현한다.

$d_{i, j}$는 이산형 값의 one-hot 표현한 것이다.

Training

최종 해결책은 the conditional vector, the generator loss, and the training-by-sampling method 등 세 가지 핵심 요소로 구성된다.

Conditional vector

모든 이산형 컬럼들의 one-hot vectors로 결합되어 표시하지만, 선택된 한 범주의 설계서와 함께 표시한다. 
예를 들어 2개의 이산형 컬럼들 $D_1={1,2,3}$와 $D_2={1,2}$ 조건부($D_2$=1)은 mask vectors로 표현된다.
$m_1=[0,0,0]$ 와 $m_2=[1,0]$ cond는 다음과 같다 $comd=[0,0,0,1,0]$

Generator loss

학습하는 동안 조건부 생성기는 one-hot 이산 벡터들을 자유롭게 생성할 수 있다. 그러나 생성기는 조건부 생성기에서 $d_i$(이산형 원핫 컬럼을 생성된)=$m_i$(mask vector)는 배치의 모든 것을 걸쳐서 평균이 교차 엔트로피를 추가함으로써 손실을 부가할 수 있다. 

Training-by-sampling

"특정적으로, 개별 속성의 모든 범주를 교육 과정 중에 고르게 샘플링하여, 결과적으로 시험 중 실제 데이터 분포를 얻는 것을 목표로 한다." 다른 말로 하자면, 조건부 생성기로써 생성된 결과는 비평가로서 평가되고, 학습된 조건부 분포 $P_G(row|cond)$와 실제 조건부 분포 $P(row|cond)$사이에서 거리를 계산한다. 
"실제 train 자료의 샘플링과 조건부 벡터의 구축은 비평가들이 거리를 추정하는데 도움이 될 것이다."
조건부 벡터와 훈련 데이터를 적절하게 샘플링하면 모델이 이산 컬럼에서 모든 가능한 값을 균등하게 탐색할 수 있다.


TGAN과는 달리, 여기서는 LSTM을 사용하지 않는다. 그리고 WGAN loss에 있는 Gradient Penalty로 훈련된다.

Also, they propose a model based on Variational autoencoder (VAE), but it out of the scope of this article.

성능 측정 방법은 다음과 같다.

CTGAN과 TVAE는 기존 방법론들을 뛰어넘는 것을 알 수 있었다고 한다. 

For GM Sim. and BN Sim.,  we report the average of each metric


Applying CTGAN to generating data for increasing train (semi-supervised)

저자의 개인 생각이라고 한다. 개인적으로 GAN의 결과물을 활용하여 semi-supervised 나 data augumentation을 생각하는 나로서는 관심이 가는 부분이라 읽게 되었다.

$T_{train}$와 $T_{test}$를 가지고 있다고 하자. $T_{train}$의 크기는 작고, 그래서 다른 데이터 분포를 가지고 있을 것이다. 

첫 번째로는 다음과 같다.

1. 실제 참값 레이블과 $T_{train}$으로 CTGAN을 학습시킨다.
2. 추가적인 데이터 $T_{synth}$ 를 생성한다.
3.4 두 번째로는 $T_{test}$ (target 1)와 연계된 $T_{train}$와 $T_{synth}$(target 0)를 결합하여 adversarial 방법에서 boosting으로 훈련한다.
5.6 목표는 $T_{test}$와 같이 더 많은 행을 포함하기 위해서 adversarial boosting으로 새롭게 훈련된 $T_{test}$와 같이 열을 얻는 것이다. 기존 참값 레이블은 adversarial training을 위해 사용되지 않았다. 결과적으로 저자는 $T_{test}$에 대한 행별로 정렬된 $T_{train}$와 $T_{synth}$의 상한 행을 취한다 (??)

마침내 새로운 부스팅 $T_{test}$에 결과적으로 확인이 된다.

음 사실 적어놓은 것은 먼 말인지 모르겠다. 그림에서 이해를 하자면, CTGAN으로 학습시킨다. 그래서 3번에서 음 먼가 기존 거랑 생성된 target0랑 실제 target1을 결합하여 adversarial training으로 훈련한다. 이제 2개를 해서 뭔가를 하면 6번에서 새로운 데이터를 얻게 된다는?... 3,4,5과 핵심인 것 같은데 이해가 잘 안 간다.
나중에 참고하기

https://github.com/Diyago/GAN-for-tabular-data

 

Diyago/GAN-for-tabular-data

We well know GANs for success in the realistic image generation. However, they can be applied in tabular data generation. We will review and examine some recent papers about tabular GANs in action....

github.com

 

 

음? 큰 차이는 없어 보인다..ㄷㄷㄷㄷ

결론적으로 다시 TGAN과 CTGAN을 상기시키는 계기가 되었고, TGAN에서는 정형데이터에 LSTM을 쓴 것과 GMM을 만들어서 한다는 것이 인상적이고, CTGNA에서는 VGM을 사용해서 모드를 추정하는 것이 흥미롭다. 그리고 2개다 메트릭 평가 방식에 대해서는 어떻게 보면 당연한 평가 방법이지만, 모델 자체 성능이 좋지 않을 때도 과연 저 방법론이 적절한지에 대해서는 의문이다(특히 오버피팅된 네트워크에 대해서 저것을 했을 때 결국 생성되는 것은 Train 에 맞는 데이터가 생성된 의미로 결국에는 실제 Test에는 쓸모 없다는 것이 될수도 있기 때문이다.)

이제 다시 용기를 가지고 코드를 열심히 파서, 습득을 해야겠다. 
같이 파실 분은 댓글 달아주세요~~

  •  

 

https://github.com/sdv-dev/CTGAN

 

sdv-dev/CTGAN

Conditional GAN for Tabular Data. Contribute to sdv-dev/CTGAN development by creating an account on GitHub.

github.com

https://towardsdatascience.com/review-of-gans-for-tabular-data-a30a2199342

 

Review of GANs for tabular data

GANs are well-known for realistic image generation, but they can be also used in tabular data generation. Check it out in action

towardsdatascience.com

 

728x90