我用h2o
构建了一个简单的深度学习回归模型(下图)。该模型预测R iris数据集中的萼片长度。我注意到随着时间的推移,模型精度(r ^ 2)增加(图1)。
通过增加时代数量,我是否会以有害的方式过度拟合模型,还是以有益的方式提高模型的准确度?
library(datasets)
library(h2o)
df <- iris
df.hex <- as.h2o(df)
model <- h2o.deeplearning(x = 2:5, y = 1, df.hex,
hidden = c(200, 200, 200, 200, 200),
epochs = 5,
variable_importances=T)
perf_dl <- h2o.performance(model)
rsq_dl <- h2o.r2(perf_dl)
图1
# Note this code plots the data from the deep learning runs in the previous code
library(ggplot2)
df <- data.frame(epochs = c(5, 10, 100, 300, 500, 1000, 2000, 3000, 5000), rsq = c(0.77, 0.70, 0.57, 0.75, 0.87, 0.92, 0.97, 0.96, 0.98))
p <- ggplot(df, aes(epochs, rsq))
p + geom_point(aes(size = 7)) + stat_smooth(method = "lm", formula = y ~ x + I(x^2), size = 1)
答案 0 :(得分:1)
在这种情况下通常显示的典型图像是
请注意,最佳位置(图像中的50个时期)取决于网络,问题和数据。确定何时停止是一个尚未解决的问题,但提早停止是一种流行的选择。
来源:我尚未发表,但已完成硕士论文。由于我大学的官僚主义原因,它现在不公开。
答案 1 :(得分:1)
梯度下降是一种优化过程,它以迭代方式更新神经网络中的权重。如果我们将网络训练几个时期,则会导致数据拟合不足。这意味着神经网络无法捕获数据的潜在趋势。 现在,随着我们增加纪元的数量,它将达到最佳状态,我们将在训练集上获得最大的准确性。在此阶段之后,如果我们继续增加时期数,将导致数据过度拟合。也就是说,训练集的准确性提高了,而验证集的准确性降低了。这意味着网络无法反映数据的真实性,因为它也捕获了数据中的噪声。
因此,答案是我们无法预先说出训练神经网络的时期数,以使其发挥最佳性能。这是一个需要调整的高压计。我们只能使用一些启发式方法并修复一些时期来训练神经网络,同时监视训练和验证集的准确性。
因此,在结论中,用于训练神经网络的时期数因一个问题而异,因为它与数据集和所使用网络的复杂性高度相关。它是神经网络训练过程中需要调整的超参数之一。