[ TGAN ] Modeling Tabular data using Conditional GAN - Review (2)

2019. 8. 25. 22:32관심있는 주제/GAN

728x90

https://data-newbie.tistory.com/249

 

Modeling Tabular data using Conditional GAN - Review(1)

여러 가지 GAN을 패키지화해서 내놓고 있다. 벌써 이렇게 정형화된 툴이 나올 수 있는 건지 의구심이 들긴 하지만 그래도 패키지화 했다는 게 충격이고 유용한 것 같다. torch로 구현이 되어있는데, 역시 새로운..

data-newbie.tistory.com

1편은 위 ↑

 

4. TGAN Model

preprocessing 방법과  TGAN을 소개

Notation 참고

4.1 Reversible Data Transformations

mixed type에 대처하기 위해서, 변수별로 다른 전처리를 진행한다. (Figure 1)

C_1 같은 경우에는 -> Cat_1으로 갈 경우 봉우리가 3개이기 때문에 B 값이 3개가 나오고

C_2 같은 경우에는 -> Cat_2으로 갈 경우 봉우리가 2개이기 때문에 B 값이 2개가 나온다.

여기서 mode를 각각 3개에서는 2개 / 2개에서는 1개의 sample mode를 한다. 

그다음에는 gumbel을 사용하는 것 같은데,

왠지 경우의 수가 2 x 1 x 3 x 2로 해서 gumbel size 가 12가 나오는 것 같다.

 

discrete 같은 경우에는 one hot

continuous 같은 경우에는  model-specific normalization(non-gaussian과 multimodal 분포를 대처하기 위해)

 

The mode-specific normalization

 

1. C_i의 분포의 모드의 수를 추정이 시작  모드 추정을 위해 Variational Gaussian Mixture(VGM) 사용 

  • VGM은 Gaussian Mixture의 mcomponent 확률 모델링 

2. 각각의 m_i 의 mode로부터 샘플링된 c_i, j의 PMF를 계산한다. 

3. k_i,j ~ Cat()을 샘플링하고 그리고 one-hot vector (b_i, j)로 전환한다.

4. c_i,ja_i, j처럼 normalize 해준다. 그때 대해서 [-1 ,1]로 clip 해준다. 

 4_theta는 gaussian 분포의 99% 다룬다. 

 

마지막으로 c_i, j를 표현하기 위해서 a_i, j와 b_i, j를 employ 한다.

4.2 Conditional Tabular GAN

일반적으로 GAN는 다변량 정규 분포에서 샘플링을 하여서 사용한다. 

그리고 Generator와 Discriminator Or Critic을

$z -> f(x) (G) / f(x) , f(g) (D)$

이러한 Generator의 학습 방법은 Category 변수에 대한 불균형(imbalance)을 고려하지 않는다.

> 만약 training data가 랜덤 하게 학습하는 동안 샘플링이 된다면, 사소한 Category 행들은 충분 표현되지 못할 것이다.

그러므로 Generator는 올바르게 학습이 안되고 편향되게 될 것이다.

 

이러한 문제는 우리가 일반 분류 문제(discriminative model)에서 겪고 있는 imbalance 한 상황과 일치한다.

균형을 맞출 칼럼이 한 개도 없고 실제 데이터 분포를 그대로 유지해야 하기 때문에 어려움이 가중된다.

 

만약 training data가 ReSampling 된다면 , Generator는 실제 데이터 분포로부터 다른 Resampled 된 분포를 배우게 된다. (편향 , 편향)

discrete 변수의 속성들로부터 모든 Category를 효율적으로 resample 하는 방법은 학습하는 동안만 공평하게 샘플링하는 것이다(균둥할 필요는 없고) 그리고 테스트 동안 실제 데이터 분포(not resampled)로 회복한다. 

 

위에 같이 공평하게 샘플링하게 하는 것을 달성하는 법을 Generator 가 주어진 Category를 맞추게 강요하는 것이다.

Generated 샘플 r로써 매칭 된 $i^{th}$ discrete column $D_{i*}$ 의 값이 $k*$라고 하자. 그때 Generator는 특정 칼럼의 특정 값에서 주어진 행들의 조건부 분포로 해석이 된다. $(r ~ P_g(  row | D_i* = k)$

이러한 이유로 이 논문에서는 우리는 이것을 Conditional Generator로가 명명한다. 

이 논문에서는 TGAN이라고 정의했다. 여 게이는 중요한 모듈 2개가 있다. (Generator / Critic)

GAN의 아키텍처에 에서 Conditional Generator를 통합하는 것은 몇 가지를 해결해야 한다.

1. 그것을 위해 인풋을 준비할 뿐만 아니라 조건을 위해 표현을 고안하는 것이 필요하다.

2. 생성된 행들로부터 주어진 조건을 보존하는 것이 필요하다.

3. Conditional Generator로부터 실제 데이테의 조건부 분포를 학습하는 것이 필요하다.

3가지 핵심 요소들 ( conditional vector , generator loss , training-by-sampling method)로 이루어진 해결책을 제시한다.

 

Conditional Vector

Condition(D_i* = k*)를 나타내는  조건부 백터를 소개한다.

reversible data transformation 후에 모던 discrete columns (D_1 ~ D_N_d)는 one-hot vectors $(d_1 ~ d_{N_d})$로 나타내 진다. i th one-hot vector는 $d_i = [d_i (k) ]$ for  $k = 1 ~ D_i $

$m_i = [m_i(k)]$라고 하자. $k = 1 ~ |D_i|$는 ith one-hot vector $d_i$로 연관된 i th mask vector이다. 

그러므로 이 조건은 세 가지 마스크 벡터들 관점으로 표현된다.

 

cond = m_1 (+)... (+) m_N_d처럼 cond vector를 정의한다. 

예를 들어 2개의 discrete columns D_1 = {1,2,3} D_2 = {1,2}이라고 하고 condtion (D_2 = 1)를 mask vectors m1 [0,0,0], m2 = [1,0] 그러므로 cond는 [0 , 0 , 0 , 1 ,0]

cond란 결국 여러 개의 discrete column을 one hot 한 뒤 concat 하는 vector가 된다.

 

Generator Loss 

학습하는 동안 conditional generator는 어떠한 one-hot vectors {d_1 , d_2 , ...d_N_d} 를 생상하는 것이 자유롭게 된다.

특히 cond vector의 형태로 주어진 조건(D_i* = k*)은 feed-forward pass에서 그 어떤 것도.어떤 d_i(k) =0 또는 d_i(k) = 1든지 간에 생성하는 것으로 방해하지 않는다.

ㅣ 

이 d_i = m_i를 생성하기 위한 Conditional Generator를 강요도록 제안하는 메커니즘은

그러므로 training을 진행할 때, Generator는 주어진 m_i을 d_i  정확한 복사하는 것을 배운다.

 

Training-by-Sampling

conditional generator로써 생성된 결과물은 학습된 조건부 분포(P_g( row | cond )) 와 실제 데이터로 만든 조건부 분포 P(row | cond) 사이에서 거리를 추정한 critic으로 평가된다. 

 

cond vector의 구축과 실제 training dat의 샘플링은 critic에서 거리를 추정할 수 있게 도와주도록 준수해야 한다.

2가지 가능성이 있다. 우리가 랜덤 하게 table에서 row를 선택하거나  아니면 조건부 칼럼으로 선택하는 방법이 있다.

 

또는 우리는 랜덤으로 칼럼과 값을 선택한다.  그리고 그 칼럼의 특정 값으로 테이블을 선택함으로써 행을 선택할 수 있다.

확실히 첫 번 째겠은 우리의 목표에서 봤을 때 적절하지 못하다. 왜냐하면 discrete 변수들로부터 샘플링된 것이 학습하는 동안 공평하게 샘플링이 됐다는  확신할 수 없기 때문이다. 

반면에 모든 discrete 변수들을 공평하게 고려한다면 그리고 하나의 변수를 랜덤 하게 선택한다면 그때 범위에서 모든 값을 고려할 수 있게 된다. 이러한 방법은 매우 적은 빈도의 category로부터 하나의 행을 극단적으로 oversampled 하는 것이 될 것이다. 이것 또한 적절한 방법이 아닐 것이다.

그래서 우리의 목적에 맞게 다음과 같은 방법을 제안한다.

 

1. 0으로 채워진 mask vectors m_i = [m_i [k]] for i = 1,..., N_d를 만든다. 그래서 ith mask vector를 ith columns에 대된다.  그리고 각각의 구성요소를 그 변수의 category와 연관된다.

 

2. 모든 N_d Discrete Columns에서 하나의 Discrete Column (D_i)를 랜덤 하게 선택한다. 

i*는 선택된 칼럼의 index라고 하자. 그때 예를 들면 Figure 2 에서 , 선택된 컬럼을 D_2이다 그러면 I* = 2 다

 

3. 2)에서 선택된 컬럼의 값들의 범위로 이루어진 Probability Mass Function(PMF)를 구성한다. D_I* 각각의 값을 Probability mass(확률 질량)은 그 변수의 빈도의 logarithm(log)이다.

4. k*를 위 PMF에 따라서 랜덤 하게 선택된 값이라고 하자. 예를 들어 Figure 2에서 D_2의 범위는 2가지 값을 가진다.

그리고 첫 번째는 것은 선택된 것이다 그래서 K* = 1이다.

 

5. i*th mask에서 k*th 구성요소를 1로 설정해라 (m_i*(k*) = 1)

6. vector cond (m1 (+)... (+) m_N_d)를 계산해라

예를 들어 Figure 2에서 마스크 m1 = [0,0,0] , m2 = [1,0] 그러므로 cond = [0,0,0,1,0]이다

 

(이해 x)

저자는 각각의 Pac에서 training data로부터 10개의 샘플들을 가져오는  PacGAN 프레임워크(2018)를 사용했다.

framework에서 training algorithm은 완벽히 Algorithm 1으로 설명된다. 

그것은 많은 condition vectors cond를 생성함으로써 시작한다. 표본 다변량 정규 분포로 샘플링된 것에서 그려진다.

( Algorithm 1 line 1-3)

fake rows의 배치를 생성하기 위해 conditional generator에서 fed-forward 한다. ( Algorithm 1 line 4)

PacGAN에서 인풋은 twofold다. 하나는 cond vector에 따라서 학습하는 tabular data를 샘플링하는 것에서 오고,

다른 하나는 conditional generator에서의 결과물이다. 

2개 모두 preprocessed(전처리가) 된다. ( Algorithm 1 critic에서 feed-forward 하기 전에 line 7-8 )

( Algorithm 1 line 9) Lc loss를 얻기 위해서, ( Algorithm 1 line 10-12)에서 저자들은 critic에서 gradient penalty를 계산한다. 

 

사용한 Parameter 정보

  • Adam
    • beta_1 : 0.9
    • beta_2 : 0.5
    • learning rate :  0.0002

Conditional Generator의 파라미터들을 업데이트하기 위해서, conditional generator critic 둘 다 feed-forward를 반복할 필요가 있다. 

 

 

 

Generate Synthetic data for different purpose

test 중 사용자는 조건부 TGAN에 임의의 MVN 벡터 z(다른 GAN과 마찬가지로)와 discrete columns과 값 범위에 따라 적절히 구성된 Cond Vector를 제공해야 한다.

사용자는 discrete columns의 구체적인 값의 행들을 생성하기 위해 cond를 구성할 수 있다.

예를 들어, D_2 = 1이라는 몇몇의 칼럼을 생성한다. 

예로 i*는 균등하게 샘플링된다.  그리고 m_i는 D_i의 mar

 

 

ginal distribution을 따른다. 그래서 생성된 데이터는 실제 데이터가 잘 드러나도록 기대된다.

 

 

 

5. Benchmarking synthetic data generation algorithms

tabular data를 모델링하는 많은 딥러닝 방법이 있다.

저자는 모든 방법과 그 대응 논문이 동일한 데이터셋을 채택하지 않았고 유사한 측정기준에 따라 평가되지 않았다는 점에 주목한다.

이 사실은 비교를 어렵게 만들었고 표식 데이터를 모델링할 때 제시된 본질적인 도전들을 통해 각 방법의 약점과 장점을 식별하는 것을 허용하지 않았다.

그래서 이러한 문제를 다루기 위해 benckmark를 개발했다고 한다.

 

5.1

 

 

 

 

728x90