就参数数量而言,自动编码器和神经网络过拟合?

数据挖掘 机器学习 神经网络 数据挖掘 深度学习 算法
2022-02-19 18:42:33

我有11002 个班级的序列。其中400来自一个class 1700来自class 2我使用了一个隐藏层的2神经元自动编码器来捕获我的特征。我的初始特征是每个序列的三元组。因此,对于每个序列,我都有6860三元组。结果,我的大多数输入向量都是稀疏向量。

现在,如果我计算这个网络的参数,我有

6860 * 2 = 13720 paramters (1st layer)
2 * 6860 = 13720 parameters (2nd layer)
-----------------------------------------
           27440 parameters (in total)

现在,与我的数据点数量相比,参数太多了。因此,我使用了0.98, onlayer 1->hidden layer的dropout 值,hidden layer->output layer它决定13720 * 0.02 = 274了每一层的参数数量和总548参数。

现在,经过训练,我在我的500序列测试数据上尝试了编码器,并提取了二维数据的隐藏层。然后我在另一个 5 个神经元的单隐藏层神经网络上使用该数据进行分类。我的结果非常好,因为90%我的测试数据准确度与训练数据准确度差不多。

我的问题是我的自动编码器是否过度拟合?我是否通过使用另一个神经网络过度拟合?我担心我的数据点数量少。我使用 dropout 是否合理?

我担心我计算的参数数量错误,并且即使在使用 Dropout 之后,我的网络参数也多于数据样本的数量。我的计算看起来正确吗?

1个回答

额外的 drop out 层不会减少参数。在每个样本之后独立应用 Dropout。这样做是为了限制过度拟合。所以你仍然有相同的参数。

从超过 6000 个维度到只有 2 个似乎有点太多了。但很难看到。您可以运行 PCA 分析并将其用作隐藏神经元数量的起点,例如获取占数据变化 75% 的维度并从那里开始。还可以尝试第二层并添加某种形式的正则化。