如何使用堆叠自动编码器进行预训练



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

假设我的全自动编码器是 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
  5. 中获取经过训练的编码器,并将其从步骤 3,30-10 馈入编码器,得到 40-30-10 编码器。
  6. 从步骤 4 中获取 40-30-10 编码器,并将其用作 NN 的输入。

a) 这是正确的吗?

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

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

a) 这是正确的吗?

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

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

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

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

不,您

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

相关内容

  • 没有找到相关文章

最新更新