0

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

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

非常感谢任何建议。

ps 我正在使用 Keras。非常方便。如果您对此不了解,请查看: http: //keras.io/

4

2 回答 2

0

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

1)如果将中间层的大小从 2 更改为更大的值会怎样?它是否提高了在 >50k 训练集上训练的模型的性能?

2) 10k 个训练样例和测试样例是从 1M 数据集中随机选择的吗?

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

于 2016-06-16T10:07:22.420 回答
0

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

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

输入:1764(暗淡)

隐藏1:1176

隐藏2:588

编码:2

隐藏3:588

隐藏4:1176

输出:1764(与输入相同)

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

我试图用呈指数下降的层大小(用于编码)和另一种解码方式来代替它。所以:1764、128、16、2、16、128、1764

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

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

于 2016-06-16T12:30:58.367 回答