深度自动编码器训练,小数据与大数据

时间:2016-06-16 08:21:11

标签: deep-learning autoencoder

我正在训练一个深度自动编码器(现在使用5层编码和5层解码,使用泄漏的ReLu)将数据的维数从大约2000个dims减少到2.我可以在10k数据上训练我的模型,结果是可以接受的 当我使用更大的数据(50k到1M)时会出现问题。使用相同的模型与相同的优化器和退出等不起作用,训练在几个时期后卡住。 我试图在优化器上进行一些超参数搜索(我正在使用adam),但我不确定这是否能解决问题。

我应该寻找其他更改/检查的内容吗?在这种情况下,批量大小是否重要?我应该通过微调优化器来解决问题吗? Shoul我玩辍学率? ...

非常感谢任何建议。

P.S。我正在使用Keras。这很方便。如果您不知道,请查看:http://keras.io/

2 个答案:

答案 0 :(得分:0)

在尝试找出问题原因时,我会遇到以下问题:

1)如果将中间层的大小从2更改为更大的值,会发生什么?它是否改善了在> 50k训练集上训练的模型的性能?

2)从1M数据集中随机选择10k培训示例和测试示例吗?

我的猜测是你的训练模型根本无法仅使用中间层中的2个维度来解压缩50K-1M数据。因此,模型更容易使其参数适合10k数据,中间层的激活在这种情况下更为明智,但对于> 50k的数据激活是随机噪声。

答案 1 :(得分:0)

经过一番调查后,我意识到我正在使用的图层配置在某种程度上不适合这个问题,这似乎导致了问题的至少部分。

我一直在使用图层序列进行编码和解码。选择的图层大小线性减小,例如:

输入:1764(dims)

hidden1:1176

hidden2:588

编码:2

hidden3:588

hidden4:1176

输出:1764(与输入相同)

然而,这似乎只是偶尔使用,并且它对超参数的选择很敏感。

我试图用指数级递减的图层大小(用于编码)和另一种解码方式替换它。所以: 1764,128,16,2,16,128,1764

现在在这种情况下,培训似乎更加健壮。我仍然需要进行超参数搜索以查看这个是否敏感,但是一些手动试验似乎表明它的稳健性。

如果我遇到其他一些有趣的观点,我会发布更新。