我正在尝试使用自动编码器展开瑞士卷(从 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)
但是由于某种原因,这并没有更好的效果。由于我很确定可以手动设置权重以使其正常工作,我想这意味着训练陷入了局部最小值。
我试过绑重物(, 和) 并添加正则化,但无济于事。
知道我接下来应该尝试什么吗?
编辑
- 我在所有隐藏层中使用 ELU 激活函数,在输出层中没有激活函数。
- 我已经成功地使用相同的架构(具有更多神经元)来压缩 MNIST,因此它可以在更多维度上正常工作。