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

时间:2016-04-27 14:34:30

标签: machine-learning neural-network autoencoder

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

假设我的全自动编码器是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的输入。
  6. a)这是对的吗?

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

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

1 个答案:

答案 0 :(得分:2)

  

a)这是对的吗?

这是典型的方法之一。您也可以尝试直接调整自动编码器,因为" raw"具有许多层的自动编码器应该可以立即适合,作为替代方案,您可以考虑使用堆叠去噪自动编码器,这可能会从“堆叠”#34;训练。

  

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

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

  

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

不,你不需要加权,特别是你实际上扔掉了你的解码器。为了使最小化过程成为可能(例如在RBM的情况下),将权重绑定对于一些更概率的模型是重要的,但对于自动编码器,没有必要。