kersas中epoch,batch,loss,val_loss用法説明


1、epoch
Keras公式文書では、「簡単に言えば、epochsとは、訓練中のデータが「輪」に何回接続されるかということです。
(1)意味:
訓練の過程で、完全なデータセットが神経ネットワークを通過し、一度戻ったとき、このプロセスは「epoch」と呼ばれ、ネットワークは各epochが終了すると、モデルの学習進捗に関するデバッグ情報を報告します。
(2)なぜ複数のepochを訓練しますか?つまりデータは「輪」に何回も
ニューラルネットワークにおける完全なデータセットの転送は一回では足りません。限られたデータセット(バッチ勾配が低下した場合)には、反復プロセスを使用して、重みを更新したり、あるいは、一つのepochを使用するのは足りません。完全なデータセットを同じ神経ネットワークで何回も伝達する必要があります。神経ネットワークにおける重みの更新回数も増加し,モデルは欠損フィットから過当フィットになった。
2、batch
(1)kers公式文書での説明:
深さ学習の最適化アルゴリズムは,はっきり言えば勾配降下である。各パラメータの更新には2つの方法があります。
最初に,全データセットを巡回して一次損失関数を計算し,その後関数を計算して各パラメータの勾配を更新した。この方法は、パラメータを更新するたびに、データセット内のすべてのサンプルを見て、計算量が多く、計算速度が遅く、オンライン学習をサポートしていません。
もう一つは、データを見るたびに損失関数を求めて勾配更新パラメータを求めます。これをランダム勾配降下といいます。stochastic gradient descent。この方法は速度が速いですが、収束性能があまり良くないです。一番いいところの近くにゆらゆら揺れるかもしれません。hitが一番いいところに来ないです。二回のパラメータの更新もお互いに相殺されます。ターゲット関数の振動が激しいです。
2つの方法の欠点を克服するために、現在一般的に採用されているのは折衷手段であり、mini-batch gradient decent、小バッチの勾配が下がり、この方法はデータをいくつかのバッチに分けて、バッチごとにパラメータを更新します。一方、バッチのサンプル数はデータセット全体に比べてかなり小さいので、計算量もあまり大きくないです。
(2)batch_size:
Kerasでのパラメータ更新はバッチごとに行われます。つまり、データをいくつかのグループに分けてbatchと言います。バッチごとにパラメータを更新します。このように、一つのグループのデータは今回の勾配の方向を共同で決定しました。いくつかのデータに含まれるサンプルの数はbatchuといいます。size
3、iteration
データをいくつかのbatchに分けて、神経ネットワークを一度に通過しない場合、iterationはbatchで、一つのepochを完成する必要がある回数、つまりnumber of batch(batch sizeと区別します)、一回のepochでnumber ofです。  batch=iteration=トレーニングサンプル総数  / batch size
例えば、2000個のトレーニングサンプルがあるデータセットに対して、2000個のサンプルを500個の大きさのbatchに分割すると、一つのepochを完成するには4つのiterationが必要です。
4、batch sizeとepochの選択
(1)トレーニングネットワークプロセスにおいて、1つのbatchのサンプルサイズ、すなわちbatch sizeとepochの個数は共に、更新重みに影響する周波数によってネットワーク学習データの速度を定義する。
固定されたepochに対して:
(a)合理的な範囲において、batch sizeが大きくなるにつれて、一回のepochを完走するために必要な代数が減少し、同じデータ量の処理速度がさらに速くなり、確定された下降方向が正確になるほど、トレーニングの震動が小さくなる。
(b)batch sizeが大きすぎると、一回のepochを完走するために必要な代数が減少し、同じ精度を達成するために、かかる時間が大幅に増加し、パラメータの修正も緩やかになり、batch sizeがある程度増大し、その確定した下降方向はほとんど変化しなくなりました。
固定のbatch sizeに対して:
(a)適切な範囲において、epochの増加に伴い、トレーニングセットとテストセットの誤差が減少傾向にあり、モデルのトレーニングが効果的である。
(b)epochの継続的な増加に伴い、トレーニングセットの誤差は減少し、テストセットの誤差は上昇傾向にあり、モデルのオーバーフィットトレーニングセットはテストセットの性能によくない。
(2)実験実験、実験+経験によって適切なbatch sizeとepochを選ぶ
トレーニングスクリーンショット:

ネットワークの重み付けパラメータWは、batch sizeごとに更新され、インタフェースに表示されるloss値は、iteration batch sizeトレーニング後のloss値の重み付け合計値である。val_lossはEpochを一回走り終えた後、一回の検証セットで計算した値です。
-------トレーニングまとめ----------
train lossはずっと下がって、test lossは絶えず下がって、ネットが依然として勉強していると説明します。一番いいです
train lossはずっと下がり続けています。test lossは変わらない傾向にあります。ネットワークの過当フィットを説明します。(max poolまたは正規化)
train lossは不変になり、test lossは絶えず下がり、データセットの100%に問題があると説明します。datasetを検査します
train lossは不変になり、test lossは不変になり、学習がボトルネックに出会うということを説明し、小学校の学習率或いはロット数を減らす必要がある。学習率を減らす)
train lossは絶えず上昇して、test lossは絶えず上昇して、ネットワークの構造の設計が適当でないことを説明して、訓練の超パラメーターは設定しますか?データ集はきれいに洗うなどの問題を通ります。最悪の場合)
以上のこのkersの中でepoch、batch、loss、val_loss用法説明は小編が皆さんに提供した内容を全部共有しました。参考にしていただければと思います。よろしくお願いします。