自动编码器中的绑定权重

Tied weights in Autoencoder

我一直在研究自动编码器,一直在想是否要使用绑定权重。我打算将它们堆叠起来作为预训练步骤,然后使用它们的隐藏表示来提供神经网络。

使用不固定的权重看起来像:

f(x)=σ2(b2+W21(b1+W1*x))

使用固定权重看起来像:

f(x)=σ2(b2+W1T1(b1+W1*x))

从一个非常简单的角度来看,可以说绑定权重可以确保编码器部分在给定架构的情况下生成最佳表示,而如果权重是独立的,则解码器可以有效地采用非最佳表示并仍然对其进行解码?

我问是因为如果解码器是 "magic" 发生的地方并且我打算只使用编码器来驱动我的神经网络,那不会有问题。

具有绑定权重的自动编码器有一些重要的优点:

  1. 更容易学习。
  2. 在线性情况下,它等同于 PCA - 这可能会导致在几何上更合适的编码。
  3. 绑定权重是一种正则化。

但当然 - 它们并不完美:当您的数据来自高度非线性流形时,它们可能不是最佳的。根据您的数据大小,我会尝试这两种方法 - 使用固定权重而不是如果可能的话。

更新:

您还问过为什么来自具有紧权重的自动编码器的表示可能比没有的更好。当然,这种表示并非总是更好,但如果重建误差是合理的,那么编码层中的不同单元代表的东西可能被认为是垂直特征的生成器,这些特征解释了数据中的大部分方差(非常像 PCA)做)。这就是为什么这种表示在进一步的学习阶段可能非常有用。

主要优势是:

  1. 更少的参数所以更好的泛化(我们在下一层使用转置原始权重)与更多的参数导致过度拟合。