Data augmentation in feature space
Abstract
本文,作者采用了一种简单的,与领域无关的方法进行数据增强。作者所做的改变是将数据增强的操作该到了特征空间中,而不是在输入的图像空间中。
Introduction
带标签数据是深度神经网络发展起来的一个关键因素, 但是有标签数据的获取往往是需要大量的人力劳动的。通常,我们利用已有标签数据生产新的数据是十分常用的一种解决技术。但是,使用这种数据增强的方法往往需要专家来确保生成的数据是正确的。
在本工作中,我们不是通过特定领域的转换来考虑增强,而是通过在现有的例子之间进行扰动、插值或外推来考虑增强。我们将在特征空间进行数据增强,因为“Better mixing via deep representations ”和“Deep directed generative autoencoders”指出,高维重建的特征会相对的扩大可以接受的数据点体积,同时缩减了不能接受的数据的范围。
因此,当沿着流形遍历时,与输入空间相比,它更有可能在特征空间中遇到真实的样本。而无监督重建模型都可以提供一个方便使用的特征空间,比如VAE,GAN,GSNs等。
Related works
-
Data augmentation
增强网络的鲁棒性
不同的数据集所适用的增强方法也不一样
-
Sequence-to-sequence
最近被用来实现各种各样的先进的结果序列学习任务,包括图像字幕,视频字幕,语音识别,机器翻译,文本解析和会话建模。
Seq2seq也可以利用sequence autoencoders(SA)来生成特征并重建输入,作者就是利用该方法进行特征空间的生成的。
Model
作者提出的方法是首先学习一个数据重现模型,然后在重新的特征空间里进行数据增强。他们认为,在特征空间,流形是展开状态,所以对特征进行数据增强比对数据本身进行数据增强更有可解释性。
作者利用SA方法获得特征空间。
Sequence Autoencoder
-
编码器 encoder
将输入映射为低维特征
-
解码器 decoder
将特征重建为输入
作者使用两层LSTM作为编码器和解码器。编码器在最后一个时间步中的隐藏状态,称为上下文向量,用于在第一个时间步中对解码器的隐藏状态进行种子化。作者与SA以及“Semi-supervised sequence learning”的最大不同就是解码器对上下文向量的运用方法:作者的解码器在每一个时间段都使用了下下文向量,而其他方法只在第一个时间段使用了。
others:
y
0
=
f
(
s
0
,
c
)
y
t
=
f
(
s
t
−
1
,
y
t
−
1
)
y_0=f(s_0,c)\\ y_t=f(s_{t-1},y_{t-1})
y0=f(s0,c)yt=f(st−1,yt−1)
author:
y
0
=
f
(
s
0
,
c
)
y
t
=
f
(
s
t
−
1
,
y
t
−
1
,
c
)
y_0=f(s_0,c)\\ y_t=f(s_{t-1},y_{t-1},c)
y0=f(s0,c)yt=f(st−1,yt−1,c)
c
c
c 就是上下文向量。
Augmentation in feature space
为了扩大一个数据集,每个例子都通过编码器被投影到特征空间,提取结果上下文向量,然后在特征空间中进行数据增强(比如添加噪声)。在本文中,作者通过添加一个均值为零,标准差由所有数据的上下文向量计算得到的高斯噪声来实现数据增强。
c
i
′
=
c
i
+
γ
X
,
X
∼
N
{
0
,
σ
i
2
}
c'_{i}=c_{i}+\gamma X, X\sim N\{0,\sigma^{2}_{i}\}
ci′=ci+γX,X∼N{0,σi2}
另一种方法是通过数据的领域来生成新数据(interpolation)
c
′
=
(
c
k
−
c
j
)
λ
+
c
j
c'=(c_k-c_j)\lambda + c_j
c′=(ck−cj)λ+cj
其中
c
k
c_k
ck和
c
j
c_j
cj是邻居,
λ
∈
{
0
,
1
}
\lambda\in\{0,1\}
λ∈{0,1}
(extrapolation)
c
′
=
(
c
k
−
c
j
)
λ
+
c
j
c'=(c_k-c_j)\lambda + c_j
c′=(ck−cj)λ+cj
λ
∈
{
0
,
∞
}
\lambda\in\{0,\infty\}
λ∈{0,∞}
Experiments
对于所有采用插值或外推方法生成新样本的分类实验,除非另有说明,作者都采用以下步骤:
- 在特征空间内找到原始特征的十个最近邻
- 使用插值或者外推法对每一个近邻和原始特征进行数据增强