我有一个非常简单的ANN使用Tensorflow和AdamOptimizer来解决回归问题,现在我正在调整所有超参数.
现在,我看到了许多不同的超参数,我必须调整:
我有两个问题:
1)你看到我可能忘记的任何其他超参数吗?
2)目前,我的调音非常"手动",我不确定我是不是以正确的方式做所有事情.是否有特殊的顺序来调整参数?例如学习率首先,然后批量大小,然后......我不确定所有这些参数是否独立 - 事实上,我很确定其中一些参数不是.哪些明显独立,哪些明显不独立?我们应该把它们调在一起吗?是否有任何纸张或文章谈论正确调整特殊订单中的所有参数?
编辑:这是我得到的不同初始学习率,批量大小和正则化参数的图表.紫色曲线对我来说是完全奇怪的...因为成本随着其他方式慢慢下降,但它却以较低的准确率陷入困境.该模型是否可能陷入局部最小值?
对于学习率,我使用了衰变:LR(t)= LRI/sqrt(epoch)
谢谢你的帮助 !保罗
我正在研究一个带有 2 个标签的分类问题:0 和 1。我的训练数据集是一个非常不平衡的数据集(考虑到我的问题,测试集也是如此)。
不平衡数据集的比例为 1000:4,标签“0”出现的次数比标签“1”多 250 倍。但是,我有很多训练样本:大约 2300 万。所以我应该为标签“1”获得大约 100 000 个样本。
考虑到我有大量的训练样本,我没有考虑 SVM。我还阅读了关于随机森林的 SMOTE。但是,我想知道 NN 是否可以有效地处理这种具有大型数据集的不平衡数据集?
另外,当我使用 Tensorflow 来设计模型时,我应该/可以调整哪些特性来处理这种不平衡的情况?
谢谢你的帮助 !保罗
更新 :
考虑到答案的数量,而且它们非常相似,我将在这里全部回答,作为一个共同的答案。
1)我在这个周末尝试了第一个选项,增加了正面标签的成本。实际上,由于不平衡的比例较小(例如另一个数据集上的 1/10),这似乎有助于获得更好的结果,或者至少可以“偏向”精确率/召回率分数比例。但是,对于我的情况,它似乎对字母数字非常敏感。alpha = 250,这是不平衡数据集的比例,我的精度为 0.006,召回分数为 0.83,但模型预测的 1 太多了,它应该是 - 标签 '1' 的大约 0.50 .. . 当 alpha = 100 时,模型只预测“0”。我想我将不得不为这个 alpha 参数做一些“调整”:/我也会从 TF 中查看这个函数,因为我现在是手动完成的:tf.nn.weighted_cross_entropy_with_logitsthat
2)我会尝试去平衡数据集,但我担心这样做会丢失很多信息,因为我有数百万个样本,但只有大约 10 万个正样本。
3)使用较小的批量似乎确实是一个好主意。我会试试看 !
我目前正在尝试使用神经网络进行回归预测。
但是,我不知道处理此问题的最佳方法是什么,因为我读到有两种不同的方法可以对NN进行回归预测。
1)一些网站/文章建议添加一个线性的最后一层。 http://deeplearning4j.org/linear-regression.html
我认为我的最后一层看起来像:
layer1 = tanh(layer0*weight1 + bias1)
layer2 = identity(layer1*weight2+bias2)
Run Code Online (Sandbox Code Playgroud)
我还注意到,使用此解决方案时,通常会得到一个预测,该预测是批处理预测的平均值。当我将tanh或Sigmoid用作倒数第二层时就是这种情况。
2)其他一些网站/文章建议将输出缩放到[-1,1]或[0,1]范围,并使用tanh或S型作为最后一层。
这两种解决方案可以接受吗?应该选择哪一个?
谢谢保罗