我用蟒蛇OpenCV模块实现了一个ANN(1个隐藏层,64个单位,学习率= 0.001,epsilon = 0.001,iters = 500)。训练误差〜3%,测试误差~12%
为了提高我的NN的累积/概括,我决定继续实施模型选择(#hidden单位和学习率)以获得超参数的准确值并绘制学习曲线以确定是否需要更多数据(目前有2.5k)。
在阅读了有关NN培训和模型选择的一些资料后,我对以下事项感到非常困惑 -
1)为了进行模型选择,我知道需要做以下事情 -
create set possibleHiddenUnits {4, 8, 16, 32, 64}
randomly select Tr & Va sets from the total set of Tr + Va with some split e.g. 80/20
foreach ele in possibleHiddenUnits
(*) compute weights for the NN using backpropagation and an iterative optimisation algorithm like Gradient Descent (where we provide the termination criteria in the form of number of iterations / epsilon)
compute Validation set error using these trained weights
select the number of hidden units which min Va set error
或者,我相信我们也可以使用k折交叉验证。
一个。你如何决定GD的迭代次数/ epsilon应该是多少?
湾从GD的x次迭代中进行1次迭代(其中整个训练集用于通过backprop计算成本和权重的梯度)构成一个“时代”?
2)来源(whats is the difference between train, validation and test set, in neural networks?和How to use k-fold cross validation in a neural network)提到NN的培训是按照以下方式进行的,因为它可以防止过度拟合
for each epoch
for each training data instance
propagate error through the network
adjust the weights
calculate the accuracy over training data
for each validation data instance
calculate the accuracy over the validation data
if the threshold validation accuracy is met
exit training
else
continue training
一个。我相信一旦模型选择完成,就应该执行这个方法。但是,我们如何在上述模型选择过程的步骤(*)中避免过度拟合模型?
湾我是否正确假设一个时期构成一次训练迭代,其中使用通过GD + backprop的整个Tr集计算权重并且GD涉及x(> 1)整个Tr集以计算权重?
另外,在1b和2b之外,这是正确的吗?
答案 0 :(得分:0)
这是一个更多的评论,但由于我不能发表评论,我在这里写。您是否尝试过l2正规化或丢失等其他方法?我不太了解模型选择,但是辍学有一个非常类似的效果,比如采用大量模型并对它们求平均值。 Normaly辍学应该做的伎俩,你不会有过度拟合的问题。