トレーニング中のval_lossとlossの間のKerasの違い


17

Kerasでのトレーニングval_losslossトレーニング中の違いは何ですか?

例えば

Epoch 1/20
1000/1000 [==============================] - 1s - loss: 0.1760, val_loss: 0.2032  

検証時に読んだいくつかのサイトでは、ドロップアウトが機能していませんでした。


ドロップアウトについて読んだことは、おそらくドロップアウトが使用されている(つまり使用されてdropoutいないNone)場合、ドロップアウトはトレーニング中にのみ適用される(つまり、検証中にドロップアウトが適用されない)ということです。そのため、検証損失(val_loss)とトレーニング損失(loss)の違いの1つは、ドロップアウトを使用する場合、検証損失がトレーニング損失よりも低くなる可能性があることです(通常、ドロップアウトを使用しない場合は予想されません)。
Psi

回答:


15

val_lossは交差検定データのコスト関数の値であり、損失はトレーニングデータのコスト関数の値です。検証データでは、ドロップアウトを使用するニューロンはランダムなニューロンをドロップしません。その理由は、トレーニング中に、過剰適合を避けるためにノイズを追加するためにドロップアウトを使用するためです。相互検証の計算中、トレーニング段階ではなく、リコール段階にあります。ネットワークのすべての機能を使用します。

私たちの親愛なる友人の一人のおかげで、ここからの有用な内容を引用して説明します。

validation_split:0から1の間で浮動します。検証データとして使用されるトレーニングデータの割合。モデルはトレーニングデータのこの部分を分離し、トレーニングを行わず、各エポックの終わりにこのデータの損失とモデルメトリックを評価します。検証データは、シャッフルする前に、提供されたxおよび yデータの最後のサンプルから選択されます。

validation_data:各エポックの終わりに損失とモデルメトリックを評価するタプル(x_val、y_val)またはタプル(x_val、y_val、val_sample_weights)。モデルはこのデータでトレーニングされません。これはvalidation_splitをオーバーライドします。

ご覧のように

fit(self, x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None)

fitで使用されるmethodにKerasはvalidation_splitという名前のパラメーターがあり、各エポック後に作成されるモデルの評価に使用されるデータの割合を指定します。このデータ量を使用してモデルを評価した後、val_lossverboseをに設定した場合に報告されます1。さらに、ドキュメントで明確に指定されているように、validation_dataまたはのいずれかを使用できますvalidation_split。交差検定データは、モデルがデータに適合しているかどうかを調査するために使用されます。これは、モデルに一般化機能があるかどうかを理解できることです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.