假设我希望使用堆叠式自动编码器作为预训练步骤。
假设我的全自动编码器是 40-30-10-30-40。
我的步骤是:
- 使用输入和输出层中的原始 40 个特征数据集训练 40-30-40。
- 仅使用上述训练的编码器部分即40-30编码器,导出原始40特征的新30特征表示。 在
- 输入和输出层中使用新的 30 个特征数据集(在步骤 2 中派生)训练 30-10-30。 从步骤 1,40-30
- 中获取经过训练的编码器,并将其从步骤 3,30-10 馈入编码器,得到 40-30-10 编码器。
- 从步骤 4 中获取 40-30-10 编码器,并将其用作 NN 的输入。
a) 这是正确的吗?
b) 在训练 NN 时,我是否冻结 40-30-10 编码器中的权重,这与从原始 40 个特征数据集预生成 10 个特征表示并在新的 10 个特征表示数据集上进行训练相同。
附言。我已经有一个问题,询问我是否需要绑定编码器和解码器的权重
a) 这是正确的吗?
这是典型的方法之一。您也可以尝试直接拟合自动编码器,因为具有这么多层的"原始"自动编码器应该可以立即安装,作为替代方案,您可以考虑安装堆叠降噪自动编码器,这可能会从"堆叠"训练中受益更多。
b) 在训练 NN 时,我是否冻结 40-30-10 编码器中的权重,这与从原始 40 个特征数据集预生成 10 个特征表示并在新的 10 个特征表示数据集上进行训练相同。
当你训练整个神经网络时,你不会冻结任何东西。预训练只是优化过程的一种预处理 - 你展示了你的方法从哪里开始,但你不想限制实际监督学习的拟合过程。
不,您附言。我已经有一个问题,询问我是否需要绑定编码器和解码器的权重
不必绑重,尤其是无论如何您实际上都会扔掉解码器。对于一些更具概率性的模型来说,绑定权重很重要,以便使最小化过程成为可能(如RBM的情况),但对于自动编码器来说,没有意义。