自动编码器如何展开瑞士卷?

机器算法验证 降维 自动编码器
2022-03-23 00:04:13

我正在尝试使用自动编码器展开瑞士卷(从 3D 到 2D),但它一直陷入局部最优:瑞士卷最终被压扁而不是展开。基本上,它并不比使用 PCA 更好。

如果我只有一个具有 2 个单元的隐藏层,则自动编码器只会将瑞士卷投影到 2D,从而将其压缩(如 PCA),而解码器无法恢复展开的版本。所以我尝试像这样堆叠 3 个隐藏层:

ouputs    (3 units)    \
  |                     | decoder
hidden 3  (5 units)     |
  |                    /
hidden 2  (2 units)    \
  |                     | encoder
hidden 1  (5 units)     |
  |                    /
inputs    (3D)

但是由于某种原因,这并没有更好的效果。由于我很确定可以手动设置权重以使其正常工作,我想这意味着训练陷入了局部最小值。

我试过绑重物(Wout=W1T, 和W3=W2T) 并添加2正则化,但无济于事。

知道我接下来应该尝试什么吗?

编辑

  • 我在所有隐藏层中使用 ELU 激活函数,在输出层中没有激活函数。
  • 我已经成功地使用相同的架构(具有更多神经元)来压缩 MNIST,因此它可以在更多维度上正常工作。
0个回答
没有发现任何回复~