Python OpenCVモジュールでANN(64単位の1つの隠れ層、学習率= 0.001、ε= 0.001、iters = 500)を実装しました。トレインエラー〜3%、テストエラー〜12%早期停止とモデル選択のテストと検証セットの使用を理解する
私のNNの達成度/一般化を改善するために、モデル選択(#隠し単位と学習率)を実施して、より多くのデータが必要かどうかを判断するための学習曲線をプロットする(現在は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倍交差検証を使用することもできます。
a。どのようにGDの反復数/イプシロン数を決定するのですか?
b。 GDのx反復のうち1回の繰り返し(バックグラウンドによるコストウェイトの勾配を計算するためにトレーニングセット全体が使用される)は、「エポック」を構成するか?
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)は、オーバーフィッティング
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
防止としてNNのためのトレーニングは、次の方法で行われることを言及しています。モデル選択が完了したら、このメソッドを実行する必要があります。しかし、上記のモデル選定プロセスのステップ(*)で、モデルのオーバーフィットを避けるにはどうすればよいですか?
b。私は、あるエポックがGD +バックプロップを使ってTrセット全体を使ってウェイトを計算し、GDがウェイトを計算するためにTrセット全体をx(> 1)するという1回の反復を構成すると仮定していますか?
また、1bと2bは正しいですか?