2

假设我希望使用堆叠自动编码器作为预训练步骤。

假设我的完整自动编码器是 40-30-10-30-40。

我的步骤是:

  1. 使用输入和输出层中的原始 40 个特征数据集训练 40-30-40。
  2. 仅使用上述训练好的编码器部分即 40-30 编码器,推导出原始 40 个特征的新的 30 个特征表示。
  3. 在输入和输出层中使用新的 30 个特征数据集(在步骤 2 中导出)训练 30-10-30。
  4. 从步骤 1,40-30 中获取经过训练的编码器,并将其从步骤 3,30-10 输入编码器,得到 40-30-10 编码器。
  5. 从步骤 4 中取出 40-30-10 编码器并将其用作 NN 的输入。

a) 这是正确的吗?

b) 我在训练 NN 时是否冻结 40-30-10 编码器中的权重,这与从原始 40 个特征数据集预生成 10 个特征表示并在新的 10 个特征表示数据集上进行训练相同。

PS。我已经有一个问题问我是否需要绑定编码器和解码器的权重

4

1 回答 1

2

a) 这是正确的吗?

这是典型的方法之一。您也可以尝试直接拟合自动编码器,因为应该可以立即拟合具有这么多层的“原始”自动编码器,作为替代方案,您可以考虑改为拟合堆叠去噪自动编码器,这可能会从“堆叠”训练中受益更多。

b) 我在训练 NN 时是否冻结 40-30-10 编码器中的权重,这与从原始 40 个特征数据集预生成 10 个特征表示并在新的 10 个特征表示数据集上进行训练相同。

当你训练整个神经网络时,你不会冻结任何东西。预训练只是优化过程的一种预处理——你展示你的方法从哪里开始,但你不想限制实际监督学习的拟合过程。

PS。我已经有一个问题问我是否需要绑定编码器和解码器的权重

不,您不必捆绑权重,尤其是无论如何您实际上都扔掉了解码器。为了使最小化过程成为可能(例如在 RBM 的情况下),绑定权重对于一些更多概率模型很重要,但对于自动编码器来说没有意义。

于 2016-04-27T23:46:02.853 回答