将自动编码器用于具有批量归一化的网络是否有意义?
Is there any sense to use autoencoder for network with batch normalization?
众所周知,DNN 的主要问题是学习时间长。
但是有一些方法可以加速学习:
- 批量归一化
=(x-AVG)/Variance
: https://arxiv.org/abs/1502.03167
Batch Normalization achieves the same accuracy with 14 times fewer
training steps
- ReLU
=max(x, 0)
- rectified linear unit (ReLU,LReLU,PReLU,RReLU): https://arxiv.org/abs/1505.00853
The advantage of using non-saturated activation function lies in two
aspects: The first is to solve the so called “exploding/vanishing
gradient”. The second is to accelerate the convergence speed.
或任何一个:(maxout, ReLU-family, tanh)
- 快速权重初始化(避免梯度消失或爆炸):https://arxiv.org/abs/1511.06856
Our initialization matches the current state-of-the-art unsupervised
or self-supervised pre-training methods on standard computer vision
tasks, such as image classification and object detection, while being
roughly three orders of magnitude faster.
或LSUV初始化(层序单位方差):https://arxiv.org/abs/1511.06422
但是如果我们使用所有步骤:(1) 批量归一化,(2) ReLU,(3) 快速权重初始化或 LSUV - 那么在深度训练的任何步骤中使用 autoencoder/autoassociator 是否有意义神经网络?
tl;博士
自动编码器可以看作是一种以智能方式初始化权重的替代方法。因此,您使用自动编码器 而不是 您描述的 "fast" 权重初始化算法。
更详细的解释
自动编码器和 RBM are/were 经常用于预训练深度神经网络。由于非常高维的参数 space,早期的深度神经网络几乎无法训练。一个简单的随机梯度下降算法收敛得非常慢,而且通常会陷入糟糕的局部最优。这个问题的一个解决方案是使用 RBMs (G. Hinton et al.) 或自动编码器 (Y. Bengio et al.) 来预以无人监督的方式训练网络。
这有两大优势:
- 您不需要大量带标签的训练数据。通常,有很多未标记的数据可用(想想:互联网上的图像),但标记它们是一项非常昂贵的任务。
- 你可以贪婪地逐层训练它们。这意味着,您训练第一个(一层)自动编码器。一旦你实现了良好的重建,你就可以在其上堆叠另一个自动编码器。您在不接触第一个自动编码器的情况下训练第二个自动编码器。这有助于保持较低的参数数量,从而使训练更简单、更快速。
训练 RBM 或自动编码器后,您可以在预训练网络之上放置一个输出层,并使用反向传播以监督方式训练 整个 网络。此步骤也称为微调。由于除输出层外的所有层都已经预训练好,所以权重不用改动太多,很快就能找到解决方案。
最后,回答你的问题
使用自动编码器有意义吗?如果你有很多很多带标签的训练数据,为什么还要费心呢?尽可能智能地初始化权重,然后让 GPU 运行几周。
但是,如果标记的训练数据很少,请收集大量未标记的数据并训练自动编码器。有了它,您就可以确保使用您拥有的几个标记示例实现快速收敛和良好的解决方案。
众所周知,DNN 的主要问题是学习时间长。
但是有一些方法可以加速学习:
- 批量归一化
=(x-AVG)/Variance
: https://arxiv.org/abs/1502.03167
Batch Normalization achieves the same accuracy with 14 times fewer training steps
- ReLU
=max(x, 0)
- rectified linear unit (ReLU,LReLU,PReLU,RReLU): https://arxiv.org/abs/1505.00853
The advantage of using non-saturated activation function lies in two aspects: The first is to solve the so called “exploding/vanishing gradient”. The second is to accelerate the convergence speed.
或任何一个:(maxout, ReLU-family, tanh)
- 快速权重初始化(避免梯度消失或爆炸):https://arxiv.org/abs/1511.06856
Our initialization matches the current state-of-the-art unsupervised or self-supervised pre-training methods on standard computer vision tasks, such as image classification and object detection, while being roughly three orders of magnitude faster.
或LSUV初始化(层序单位方差):https://arxiv.org/abs/1511.06422
但是如果我们使用所有步骤:(1) 批量归一化,(2) ReLU,(3) 快速权重初始化或 LSUV - 那么在深度训练的任何步骤中使用 autoencoder/autoassociator 是否有意义神经网络?
tl;博士
自动编码器可以看作是一种以智能方式初始化权重的替代方法。因此,您使用自动编码器 而不是 您描述的 "fast" 权重初始化算法。
更详细的解释
自动编码器和 RBM are/were 经常用于预训练深度神经网络。由于非常高维的参数 space,早期的深度神经网络几乎无法训练。一个简单的随机梯度下降算法收敛得非常慢,而且通常会陷入糟糕的局部最优。这个问题的一个解决方案是使用 RBMs (G. Hinton et al.) 或自动编码器 (Y. Bengio et al.) 来预以无人监督的方式训练网络。
这有两大优势:
- 您不需要大量带标签的训练数据。通常,有很多未标记的数据可用(想想:互联网上的图像),但标记它们是一项非常昂贵的任务。
- 你可以贪婪地逐层训练它们。这意味着,您训练第一个(一层)自动编码器。一旦你实现了良好的重建,你就可以在其上堆叠另一个自动编码器。您在不接触第一个自动编码器的情况下训练第二个自动编码器。这有助于保持较低的参数数量,从而使训练更简单、更快速。
训练 RBM 或自动编码器后,您可以在预训练网络之上放置一个输出层,并使用反向传播以监督方式训练 整个 网络。此步骤也称为微调。由于除输出层外的所有层都已经预训练好,所以权重不用改动太多,很快就能找到解决方案。
最后,回答你的问题
使用自动编码器有意义吗?如果你有很多很多带标签的训练数据,为什么还要费心呢?尽可能智能地初始化权重,然后让 GPU 运行几周。
但是,如果标记的训练数据很少,请收集大量未标记的数据并训练自动编码器。有了它,您就可以确保使用您拥有的几个标记示例实现快速收敛和良好的解决方案。