Machine learning 关于堆叠去噪自动编码器中下一层的查询

Machine learning 关于堆叠去噪自动编码器中下一层的查询,machine-learning,computer-vision,neural-network,Machine Learning,Computer Vision,Neural Network,所以我正在训练一个叠加去噪自动编码器,每个自动编码器有3层。我的目标是通过使用堆叠去噪自动编码器进行图像分类 我用于创建图像片段的方法: 将整个图像分割为8x8块 将块大小调整为1x64 随机选择块(例如:mod 7或其他)并插入到训练矩阵中 培训自动编码器的步骤: 培训矩阵维度:[10000x64](即维度64的10000个培训样本) 三层体系:[64->32->64] 用高斯噪声破坏每个训练样本 使用输入:[损坏的输入],输出:[未损坏的数据]训练神经网络,然后使用BACKPROP

所以我正在训练一个叠加去噪自动编码器,每个自动编码器有3层。我的目标是通过使用堆叠去噪自动编码器进行图像分类

我用于创建图像片段的方法:

  • 将整个图像分割为8x8块
  • 将块大小调整为1x64
  • 随机选择块(例如:mod 7或其他)并插入到训练矩阵中
培训自动编码器的步骤:

  • 培训矩阵维度:[10000x64](即维度64的10000个培训样本)
  • 三层体系:[64->32->64]
  • 用高斯噪声破坏每个训练样本
  • 使用输入:[损坏的输入],输出:[未损坏的数据]训练神经网络,然后使用BACKPROP
对于下一个DAE,我是否使用最后一层(即第2层->第3层)的权重来训练下一层?或者我必须通过网络运行另一个样本,然后使用它来训练下一层?如果我们使用第2层->第3层的权重,我们不是只有一个样本集来训练下一个自动编码器吗?如果是这种情况,那么权重是否只是随机生成的权重矩阵初始值

堆叠DAE层后的最后步骤:

  • 通过受监督的层(如SVM)运行最终DAE层

如果这听起来像一个无关紧要的问题,很抱歉。

我对堆叠去噪自动编码器的解释是,您训练第一个自动编码器(即64->32->64)使用backprogogation和无噪声输入作为输出,就像典型的神经网络一样,然后将数据通过第一层推送到32维空间中,并运行相同的过程(即32->16->32),然后从那里继续前进。然后可以在上面添加另一层。您还可以对网络进行某种微调,因为您也可以形成64->32->16->32->64网络并微调参数,但这可能不是必需的

完成这些步骤后,您将在64维空间中输入数据,并将其通过64->32->16->分类器。如果你想使用一个神经网络作为你的分类器,那么你可以在那之后继续使用更多的层,然后一开始就运行backprop,从而获得更好的结果。堆叠去噪自动编码器的原始工作是(PDF)


另一方面,如果您正在考虑使用支持向量机,我相信这被称为学习内核,但我没有这方面的参考。

我对叠加去噪自动编码器的解释是您训练第一个自动编码器(即64->32->64)使用backprogogation和无噪声输入作为输出,就像典型的神经网络一样,然后将数据通过第一层推送到32维空间中,并运行相同的过程(即32->16->32),然后从那里继续前进。然后可以在上面添加另一层。您还可以对网络进行某种微调,因为您也可以形成64->32->16->32->64网络并微调参数,但这可能不是必需的

完成这些步骤后,您将在64维空间中输入数据,并将其通过64->32->16->分类器。如果你想使用一个神经网络作为你的分类器,那么你可以在那之后继续使用更多的层,然后一开始就运行backprop,从而获得更好的结果。堆叠去噪自动编码器的原始工作是(PDF)


另一方面,如果您正在考虑使用支持向量机,我认为这被称为学习内核,但我没有这方面的参考资料。

感谢您的回复,我非常感谢。只是想澄清一下:在第一次训练之后,然后&BACKPROP,你把你的重量乘以你的训练集,把它带到较低的维度(即,取SIGMOID{[10000x64]*[64x32]}),然后用它来训练下一层?这与直接使用64->32->16->32->64的大型神经网络并使用输入:损坏的噪声和输出:未损坏的噪声对其进行训练不同吗?正确。堆叠去噪自动编码器的整体思想是贪婪的分层训练。通过一次训练一层,你会得到比一次训练整个网络更好的结果。神经网络非常容易受到局部最优解的影响,因此,在该大小的网络中随机初始化权重会得到较差的结果。这是一个出色的答案,也是堆叠去噪自动编码器的快速短文教程。感谢您的回复,我真的非常感谢。只是想澄清一下:在第一次训练之后,然后&BACKPROP,你把你的重量乘以你的训练集,把它带到较低的维度(即,取SIGMOID{[10000x64]*[64x32]}),然后用它来训练下一层?这与直接使用64->32->16->32->64的大型神经网络并使用输入:损坏的噪声和输出:未损坏的噪声对其进行训练不同吗?正确。堆叠去噪自动编码器的整体思想是贪婪的分层训练。通过一次训练一层,你会得到比一次训练整个网络更好的结果。神经网络非常容易受到局部最优解的影响,因此,在该大小的网络中随机初始化权重会得到较差的结果。这是一个出色的答案,也是堆叠去噪自动编码器的快速短文教程。