赞
踩
对表格数据中行的概率分布进行建模并生成真实的合成数据是一项非常重要的任务,有着许多挑战。本文设计了CTGAN,使用条件生成器解决挑战。为了帮助进行公平和彻底的比较建模这类数据的方法,本文设计了一个基准测试,包括7个模拟数据集和8个真实数据集,以及几个贝叶斯网络基线。CTGAN在大多数真实数据集上都优于贝叶斯方法,而其他深度学习方法则不然。
GAN在建模分布方面比其统计对应方法具有更大的灵活性。新的GAN方法的激增需要一个评估机制。
在使用模拟数据集和真实数据集对这些模型进行测试后,我们发现,表格数据建模对GAN提出了独特的挑战,导致它们在许多指标上无法达到基线方法,如合成生成数据的可能性适合度和机器学习效率。这些挑战包括:
当使用有基准测试的相同数据集时,CTGAN的性能明显优于贝叶斯网络基线和其他测试的GAN。如下图所示。

论文的贡献如下:
在过去的十年中,合成数据是通过将表格中的每一列视为随机变量,对联合多元概率分布进行建模,然后从该分布中进行采样而生成的。
这些模型受到分布类型和计算问题的限制,严重限制了合成数据的理想性。
由于在表示数据时提供的性能和灵活性,使用VAE和GANs及其众多扩展开发生成模型非常有吸引力。GANs还用于生成表格数据,尤其是医疗记录。例如
| 符号 | 说明 |
|---|---|
| T T T | 表格 |
| G G G | 数据生成器 |
| T s y n T_{syn} Tsyn | 生成表格 |
| { C 1 , … , C N c } \left\{C_{1}, \ldots, C_{N_{c}}\right\} {C1,…,CNc} | 表格 T T T中的 N c N_c Nc个连续列 |
| { D 1 , … , D N d } \left\{D_{1}, \ldots, D_{N_{d}}\right\} {D1,…,DNd} | 表格 T T T中的 N d N_d Nd个离散列 |
| P ( C 1 : N c , D 1 : N d ) \mathbb{P}\left(C_{1: N_{c}}, D_{1: N_{d}}\right) P(C1:Nc,D1:Nd) | 每一列都被认为是一个随机变量,这些随机变量遵循未知的联合分布 |
| r j = { c 1 , j , … , c N c , j , d 1 , j , … , d N d , j } , j ∈ { 1 , … , n } \mathbf{r}_{j}=\left\{c_{1, j}, \ldots, c_{N_{c}, j}, d_{1, j}, \ldots, d_{N_{d}, j}\right\}, j \in\{1, \ldots, n\} rj={c1,j,…,cNc,j,d1,j,…,dNd,j},j∈{1,…,n} | 每一行,即联合分布的一个观察结果 |
| T t r a i n T_{train} Ttrain | 从 T T T中分割出的训练集 |
| T t e s t T_{test} Ttest | 从 T T T中分割出的测试集 |
在 T t r a i n T_{train} Ttrain上训练 G G G后,通过使用 G G G独立采样rows来构建 T s y n T_{syn} Tsyn。本文沿着两个方向评估生成器的效能:
表格数据的几个独特特性对GAN模型的设计提出了挑战:
CTGAN是一种基于GAN的方法,用于对表格数据分布建模并从分布中采样。在CTGAN中发明了针对模式的归一化,以克服非高斯和多模式分布。设计了一个条件生成器通过采样进行训练,以处理不平衡的离散列。使用全连接网络和几种最新技术来训练高质量的模型。
| 符号 | 说明 |
|---|---|
| x 1 ⊕ x 2 ⊕ … x_{1} \oplus x_{2} \oplus \ldots x1⊕x2⊕… | 向量 x 1 , x 2 , … x_1,x_2,\ldots x1,x2,…串联 |
| g u m b e l τ ( x ) gumbel_{\tau}(x) gumbelτ(x) | 在向量 x x x上应用参数为 τ τ τ的Gumbel softmax |
| l e a k y γ ( x ) leaky_{\gamma}(x) leakyγ(x) | 在向量 x x x上应用leaky率为 γ \gamma γ的leaky ReLU激活函数 |
| F C u → v ( x ) \mathrm{FC}_{u \rightarrow v}(x) FCu→v(x) | 对 u u u维输入应用线性变换以获得 v v v维输出 |
同时也使用了tanh、ReLU、softmax,BN用于进行批量归一化,dropout用于进行丢弃。
离散值可以自然地表示为独热向量,但表示有着任意分布的连续值是非常重要的。以前的模型使用最小-最大归一化将连续值归一化为[−1, 1]。 在CTGAN中设计了一种针对模式的归一化方法来处理具有复杂分布的列。
下图展示对一个连续列使用针对模式的归一化方法。

CTGAN的方法中,每列都是独立处理。每个值都被表示为一个指定模式的独热向量和一个指定模式内值的标量。一共包含三步:
那么一行数据的表示为
r
j
=
α
1
,
j
⊕
β
1
,
j
⊕
…
⊕
α
N
c
,
j
⊕
β
N
c
,
j
⊕
d
1
,
j
⊕
…
⊕
d
N
d
,
j
\mathbf{r}_{j}=\alpha_{1, j} \oplus \beta_{1, j} \oplus \ldots \oplus \alpha_{N_{c}, j} \oplus \beta_{N_{c}, j} \oplus \mathbf{d}_{1, j} \oplus \ldots \oplus \mathbf{d}_{N_{d}, j}
rj=α1,j⊕β1,j⊕…⊕αNc,j⊕βNc,j⊕d1,j⊕…⊕dNd,j
其中
d
i
,
j
d_{i,j}
di,j为离散值的独热编码表示。
传统上,GAN 中的生成器被输入一个从标准多元正态分布 (MVN)变量中采样的向量。 通过与鉴别器或批评者神经网络一起训练,最终获得将标准 MVN 映射到数据的确定性变换。 这种训练生成器的方法没有考虑分类列中的不平衡。
如果对训练数据进行随机抽样,则属于次要的行类别将无法充分表示,因此可能无法正确训练生成器。
如果对训练数据进行重采样,生成器学习与训练数据不同的重采样分布真实数据分布。
目标是以一种方式有效地重采样,即在训练过程中有规律地(但不必均匀地)采样离散属性中的所有类别,并在测试过程中恢复(未重采样的)真实数据分布。让
k
∗
k^*
k∗为来自第
i
∗
i^*
i∗个离散列
D
i
∗
D_{i^∗}
Di∗的值,这个值必须与生成的样本
r
^
\hat{r}
r^ 匹配,那么生成器可以被解释为给定的特定列特定值 行的条件分布,即
r
^
∼
P
G
(
r
o
w
∣
D
i
∗
=
k
∗
)
\hat{\mathbf{r}} \sim \mathbb{P}_{\mathcal{G}}\left(\mathrm{row} \mid D_{i *}=k^{*}\right)
r^∼PG(row∣Di∗=k∗)。 因此,在本文中,我们将其命名为条件生成器,在此基础上构建的GAN称为条件GAN。
将条件生成器集成到GAN的体系结构中需要处理以下问题:
文章提出了一个由三个关键元素组成的解决方案,即:条件向量、生成器损失和采样训练法。
条件向量:引入变量
c
o
n
d
cond
cond作为指定条件
(
D
i
∗
=
k
∗
)
(D_{i^*} = k^*)
(Di∗=k∗)的方式。
第
i
i
i个独热向量为
d
i
=
[
d
i
(
k
)
]
\mathbf{d}_{i}=\left[\mathbf{d}_{i}^{(k)}\right]
di=[di(k)], for
k
=
1
,
…
,
∣
D
i
∣
k=1, \ldots,\left|D_{i}\right|
k=1,…,∣Di∣。让
m
i
=
[
m
i
(
k
)
]
\mathbf{m}_{i}=\left[\mathbf{m}_{i}^{(k)}\right]
mi=[mi(k)], for
k
=
1
,
…
,
∣
D
i
∣
k=1, \ldots,\left|D_{i}\right|
k=1,…,∣Di∣为独热向量的第
i
i
i个掩码向量。因此条件可用掩码向量表示为
m
i
(
k
)
=
{
1
if
i
=
i
∗
and
k
=
k
∗
0
otherwise
\mathbf{m}_{i}^{(k)}=
将向量
c
o
n
d
cond
cond定义为
c
o
n
d
=
m
1
⊕
…
⊕
m
N
d
cond =\mathbf{m}_{1} \oplus \ldots \oplus \mathbf{m}_{N_{d}}
cond=m1⊕…⊕mNd。例如,对于两个离散列,
D
1
=
1
,
2
,
3
D_1={1,2,3}
D1=1,2,3和
D
2
=
1
,
2
D_2={1,2}
D2=1,2,条件
(
D
2
=
1
)
(D_2=1)
(D2=1)由掩码向量
m
1
=
[
0
,
0
,
0
]
m_1=[0,0,0]
m1=[0,0,0]和
m
2
=
[
1
,
0
]
m_2=[1,0]
m2=[1,0]表示;所以
c
o
n
d
=
[
0
,
0
,
0
,
1
,
0
]
cond=[0,0,0,1,0]
cond=[0,0,0,1,0]。
生成器损失:在训练期间,条件生成器可以自由地生成任意独热离散向量集合
{
d
^
1
,
…
,
d
^
N
d
}
\left\{\hat{\mathbf{d}}_{1}, \ldots, \hat{\mathbf{d}}_{N_{d}}\right\}
{d^1,…,d^Nd}。特别是,给定
c
o
n
d
cond
cond向量形式的条件
(
D
i
∗
=
k
∗
)
(D_{i^∗} = k^∗)
(Di∗=k∗),再产生
d
^
i
∗
(
k
)
=
{
1
if and
k
≠
k
∗
0
otherwise
\mathbf{\hat{d}}_{i^*}^{(k)}=
为了强制条件生成器生成
d
^
i
∗
=
m
i
∗
\mathbf{\hat{d}}_{i^*} = \mathbf{m}_{i^*}
d^i∗=mi∗,通过增加
d
^
i
∗
\mathbf{\hat{d}}_{i^*}
d^i∗和
m
i
∗
\mathbf{m}_{i^*}
mi∗之间的交叉熵,对批处理的所有实例求平均来惩罚损失。
采样训练法:条件产生器产生的输出必须由鉴别器评估,鉴别器估计学习到的条件分布 P G ( \mathbb{P}_{\mathcal{G}}\left(\right. PG( row ∣ D i ∗ = k ∗ ) \left.\mid D_{i *}=k^{*}\right) ∣Di∗=k∗)和实际数据上的条件分布 P ( \mathbb{P}\left(\right. P( row ∣ D i ∗ = k ∗ ) \left.\mid D_{i *}=k^{*}\right) ∣Di∗=k∗)之间的距离。真实训练数据的采样和条件向量的构造应符合帮助鉴别器估计距离的要求。适当地采样 c o n d cond cond向量和训练数据可以帮助模型均匀地探索离散列中所有可能的值。出于以上目的,建议采取以下步骤:

由于一行中的列没有局部结构,所以在生成器和鉴别器中使用全连接网络来捕获列之间所有可能的关联。
具体来说,在生成器和鉴别器中都使用两个全连接的隐藏层。
在生成器中使用批处理归一化和Relu激活函数。
在两个隐藏层之后,使用混合激活函数生成合成的行表示。
标量值
α
i
\alpha_i
αi由
t
a
n
h
tanh
tanh生成,而模式指示符
β
i
\beta_i
βi和离散值
d
i
\mathbf{d}_i
di由
g
u
m
b
e
l
gumbel
gumbel
s
o
f
t
m
a
x
softmax
softmax生成。
在鉴别器中,我们在每个隐藏层上使用 l e a k y leaky leaky r e l u relu relu函数和 d r o p o u t dropout dropout。
条件生成器被正式描述为:
{
h
0
=
z
⊕
cond
h
1
=
h
0
⊕
ReLU
(
B
N
(
F
C
∣
cond
∣
+
∣
z
∣
→
256
(
h
0
)
)
)
h
2
=
h
1
⊕
ReLU
(
B
N
(
F
C
∣
cond
∣
+
∣
z
∣
+
256
→
256
(
h
1
)
)
)
α
^
i
=
tanh
(
F
C
∣
cond
∣
+
∣
z
∣
+
512
→
1
(
h
2
)
)
1
≤
i
≤
N
c
β
^
i
=
gumbel
0.2
(
F
C
∣
cond
∣
+
∣
z
∣
+
512
→
m
i
(
h
2
)
)
1
≤
i
≤
N
c
d
^
i
=
gumbel
0.2
(
F
C
∣
cond
∣
+
∣
z
∣
+
512
→
∣
D
i
∣
(
h
2
)
)
1
≤
i
≤
N
d
本文使用PacGAN框架,每个pac中有10个样本,以防止模式崩溃。鉴别器(pac大小为10)
C
(
r
1
,
…
,
r
10
,
c
o
n
d
1
,
…
,
c
o
n
d
10
)
C(r_1,…,r_{10},cond_1,…,cond_{10})
C(r1,…,r10,cond1,…,cond10)的体系结构可以正式描述为
{
h
0
=
r
1
⊕
…
⊕
r
10
⊕
cond
1
⊕
…
⊕
cond
10
h
1
=
drop
(
l
eaky
0.2
(
F
C
10
∣
r
∣
+
10
∣
cond
∣
→
256
(
h
0
)
)
)
h
2
=
drop
(
l
eaky
0.2
(
F
C
256
→
256
(
h
1
)
)
)
C
(
⋅
)
=
F
C
256
→
1
(
h
2
)
\left\{
本文使用带梯度惩罚的WGAN损失来训练模型,Adam优化器,学习率为
2
×
1
0
−
4
2\times10^{−4}
2×10−4。
变分自动编码器是另一种神经网络生成模型。通过使用相同的预处理和修改损失函数,我们使VAE适应表格数据。我们称之为TVAE模型。
在TVAE中,我们使用两个神经网络来建模
p
θ
(
r
j
∣
z
j
)
p_θ(r_j | z_j)
pθ(rj∣zj)和
q
φ
(
z
j
∣
r
j
)
q_φ(z_j | r_ j)
qφ(zj∣rj),并使用证据下限
(
E
L
B
O
)
(ELBO)
(ELBO)损失对它们进行训练。
网络
p
θ
(
r
j
∣
z
j
)
p_θ(r_j | z_j)
pθ(rj∣zj)的设计需要以不同的方式进行,以便能够准确地建模概率。具体设计是神经网络输出
2
N
c
+
N
d
2N_c+N_d
2Nc+Nd个变量的联合分布,对应于
2
N
c
+
N
d
2N_c+N_d
2Nc+Nd个变量
r
j
r_j
rj。我们假设
α
i
,
j
α_{i,j}
αi,j服从具有不同均值和方差的高斯分布。所有的
β
i
,
j
β_{i,j}
βi,j和
d
i
,
j
d_{i,j}
di,j都遵循一个分类的PMF。
{
h
1
=
ReLU
(
F
C
128
→
128
(
z
j
)
)
h
2
=
ReLU
(
F
C
128
→
128
(
h
1
)
)
1
≤
i
≤
N
c
α
ˉ
i
,
j
=
tanh
(
F
C
128
→
1
(
h
2
)
)
1
≤
i
≤
N
c
α
^
i
,
j
∼
N
(
α
ˉ
i
,
j
,
δ
i
)
1
≤
i
≤
N
c
β
^
i
,
j
∼
softmax
(
F
C
128
→
m
i
(
h
2
)
)
1
≤
i
≤
N
d
d
^
i
,
j
∼
softmax
(
F
C
128
→
∣
D
i
∣
(
h
2
)
)
p
θ
(
r
j
∣
z
j
)
=
∏
i
=
1
N
c
P
(
α
^
i
,
j
=
α
i
,
j
)
∏
i
=
1
N
c
P
(
β
^
i
,
j
=
β
i
,
j
)
∏
i
=
1
N
d
P
(
α
^
i
,
j
=
α
i
,
j
)
\left\{
α
^
i
,
j
,
β
^
i
,
j
,
d
^
i
,
j
\hat{α}_{i,j},\hat{β}_{i,j},\hat{d}_{i,j}
α^i,j,β^i,j,d^i,j是随机变量。
p
θ
(
r
j
∣
z
j
)
p_θ(r_j|z_j)
pθ(rj∣zj)是这些变量的联合分布。在
p
θ
(
r
j
∣
z
j
)
p_θ(r_j|z_j)
pθ(rj∣zj)中,权重矩阵和
δ
i
δ_i
δi是网络中的参数。这些参数使用梯度下降法进行训练。
对
q
ϕ
(
z
j
∣
r
j
)
q_{\phi}\left(z_{j} \mid \mathbf{r}_{j}\right)
qϕ(zj∣rj)的建模与条件VAE相似。
{
h
1
=
ReLU
(
F
C
∣
r
j
∣
→
128
(
r
j
)
)
h
2
=
ReLU
(
F
C
128
→
128
(
h
1
)
)
μ
=
F
C
128
→
128
(
h
2
)
σ
=
exp
(
1
2
F
C
128
→
128
(
h
2
)
)
q
ϕ
(
z
j
∣
r
j
)
∼
N
(
μ
,
σ
I
)
\left\{
TVAE使用Adam进行培训,学习率为1e-3。
表格数据建模有多种深度学习方法。但所有方法及其相应的论文既没有使用相同的数据集,也没有在类似的指标下进行评估。这一事实使得比较方法具有挑战性,并且无法识别每种方法相对于表格数据建模时提出的内在挑战的弱点和优势。为了解决这个问题,我们开发了一套全面的基准测试套件。
在基准测试套件中有由贝叶斯网络(CLBN、PrivBN)和当前用于合成数据生成的深度学习方法(MedGAN、VeeGAN、TableGAN)组成的基线。我们将TVAE和CTGAN与这些基线进行比较。
基准测试包含7个模拟数据集和8个真实数据集。
模拟数据集:
真实数据集:

模拟数据的概率分布已知,可以通过似然适应度度量(Likelihood fitness metric)来评估生成的合成数据。
真实数据集,有一个机器学习任务,我们通过机器学习效率(Machine learning efficacy)评估合成数据生成方法。
使用基准框架评估了CLBN、PrivBN、MedGAN、VeeGAN、TableGAN、CTGAN和TVAE。
对每个模型进行了batch_size=500的培训。
每个模型都经过300个epoch的训练。
每个epoch包含
N
b
a
t
c
h
_
s
i
z
e
\frac{N}{batch\_size}
batch_sizeN个步骤,其中N是训练集的行数。我们假设,对于任何数据集,除了
L
s
y
n
L_{syn}
Lsyn之外的任何指标,
T
t
r
a
i
n
T_{train}
Ttrain都能实现最佳性能。因此,我们提出了输出
T
t
r
a
i
n
T_{train}
Ttrain的Identity方法。基准测试结果如下图所示:

对于高斯混合的模拟数据,CLBN和PrivBN因为在使用贝叶斯网络建模之前必须对连续的数值数据进行离散化会受到影响。MedGAN、VeeGAN和TableGAN由于模式崩溃会受到影响。但通过特定于模式的规范化,CTGAN模型在这些二维连续数据集上表现良好。
在贝叶斯网络的模拟数据上,CLBN和PrivBN具有天然优势。与MedGAN和TableGAN相比,CTGAN实现了略好的性能。TableGAN在这些数据集上运行良好,尽管它将离散列视为连续值。其中一个可能的原因是,在模拟数据中,大多数变量的类别少于4个,因此转换不会造成严重问题。
在真实数据集上,TVAE和CTGAN的表现优于CLBN和PrivBN,而其他GAN模型的效果不如贝叶斯网络。对于大规模真实数据集,学习高质量的贝叶斯网络是困难的。因此,基于CLBN和PrivBN合成数据训练的模型比基于真实数据训练的模型差36.1%和51.8%。
TVAE在某些情况下优于CTGAN,但GAN确实有几个有利的属性,这并不意味着我们应该总是使用VAE而不是GaN来建模表。GANs中的生成器在整个培训过程中无法访问真实数据,可以让CTGAN比TVAE更容易实现差异隐私。
我们做了一项消融实验,以了解模型中每个组件的有用性。消融实验结果如下。

针对模式的归一化。在CTGAN中使用变分高斯混合模型(VGM)对连续列进行归一化。我们将其与
(1)GMM5:具有5个模式的高斯混合模型。
(2)GMM10:具有10个模式的高斯混合模型.
(3)最小-最大:最小-最大归一化到
[
−
1
,
1
]
[−1, 1]
[−1,1]。
使用GMM会略微降低性能,而最小-最大规格化的性能最差。
条件生成器和抽样训练:我们依次删除这两个组件,
(1)
w
/
o
S
w/o S
w/oS.:我们首先在训练中禁用采样训练,但生成器仍然得到一个条件向量,其损失函数仍然具有交叉熵项。条件向量从训练数据频率而不是对数频率中采样。
(2)
w
/
o
C
w/o C
w/oC:进一步删除生成器中的条件向量的结果表明,采样训练和条件生成器对于不平衡数据集都至关重要。尤其是在高度不平衡的数据集(如
c
r
e
d
i
t
credit
credit)上,消除抽样训练导致F1指标为0%。
网络架构:本文中使用WGANGP+PacGAN。将其与三种替代品进行比较,仅WGANGP、仅原始GAN损失和原始GAN+PacGAN。我们观察到,WGANP比原始GAN更适合于合成数据任务,而PacGAN有助于原始GAN的损失,但对WGANP不那么重要。
本文试图找到一个灵活和稳健的模型来学习具有复杂分布的列的分布。作者观察到现有的深度生成模型中没有一个能比将连续值离散和贪婪学习的贝叶斯网络更好。于是展示了使这项任务独特的几个特性,并提出了CTGAN模型。
从经验上看,CTGAN模型可以比贝叶斯网络更好地学习分布。针对模式归一化可以将任意范围和分布的连续值转换为适合神经网络的有界向量表示。条件生成器和采样训练可以克服训练数据不平衡的问题。此外,作者认为条件生成器可以帮助生成具有特定离散值的数据,这些离散值可用于数据扩充。
未来的工作是从理论上证明为什么GANs可以处理离散和连续数据的分布。

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。