web-dev-qa-db-ja.com

標準のKerasモデルの出力はどういう意味ですか? Kerasのエポックと損失とは何ですか?

Kerasを使用して最初のモデルを作成したばかりで、これが出力です。 Keras人工ニューラルネットワークを構築した後に得られる標準出力のように見えます。ドキュメンテーションを見ても、エポックとは何か、出力に出力される損失とは何かを完全には理解していません。

エポックとケラスの損失は何ですか?

(おそらく非常に基本的な質問であることは知っていますが、答えをオンラインで見つけることができなかったようです。答えがドキュメントから収集するのが本当に難しい場合は、他の人が同じ質問を持っていると思い、ここに投稿することにしました)

Epoch 1/20
1213/1213 [==============================] - 0s - loss: 0.1760     
Epoch 2/20
1213/1213 [==============================] - 0s - loss: 0.1840     
Epoch 3/20
1213/1213 [==============================] - 0s - loss: 0.1816     
Epoch 4/20
1213/1213 [==============================] - 0s - loss: 0.1915     
Epoch 5/20
1213/1213 [==============================] - 0s - loss: 0.1928     
Epoch 6/20
1213/1213 [==============================] - 0s - loss: 0.1964     
Epoch 7/20
1213/1213 [==============================] - 0s - loss: 0.1948     
Epoch 8/20
1213/1213 [==============================] - 0s - loss: 0.1971     
Epoch 9/20
1213/1213 [==============================] - 0s - loss: 0.1899     
Epoch 10/20
1213/1213 [==============================] - 0s - loss: 0.1957     
Epoch 11/20
1213/1213 [==============================] - 0s - loss: 0.1923     
Epoch 12/20
1213/1213 [==============================] - 0s - loss: 0.1910     
Epoch 13/20
1213/1213 [==============================] - 0s - loss: 0.2104     
Epoch 14/20
1213/1213 [==============================] - 0s - loss: 0.1976     
Epoch 15/20
1213/1213 [==============================] - 0s - loss: 0.1979     
Epoch 16/20
1213/1213 [==============================] - 0s - loss: 0.2036     
Epoch 17/20
1213/1213 [==============================] - 0s - loss: 0.2019     
Epoch 18/20
1213/1213 [==============================] - 0s - loss: 0.1978     
Epoch 19/20
1213/1213 [==============================] - 0s - loss: 0.1954     
Epoch 20/20
1213/1213 [==============================] - 0s - loss: 0.1949
39
pr338

より具体的に質問に答えるために、エポックと損失の定義を以下に示します。

Epoch:すべてのtrainingデータに対するフルパス。

たとえば、上記のビューでは、1213個の観測値があります。エポックは、1213のすべての観測値のトレーニングパスを終了すると終了します。

Loss:モデルのトレーニング中に最小化を試みるスカラー値。損失が少ないほど、予測は真のラベルに近づきます。

これは通常、David Maustが上記で述べたように平均二乗誤差(MSE)、またはケラスでよく言われる Categorical Cross Entropy


Kerasモデルでフィットを実行することで期待できるのは、n個のエポックでの損失の減少です。あなたの損失は実際に増加しているため、トレーニングの実行はかなり異常です。このは、学習率が大きすぎるためである可能性があり、最適化をオーバーシュートする原因となります。

Jaycodeが述べたように、これは機械学習の一般的なユースケースであるため、目に見えないデータに対するモデルのパフォーマンスを確認する必要があります。

そのため、コンパイルメソッドには、次のようなメトリックのリストを含める必要があります。

model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])

また、次のようなfitメソッド中の検証でモデルを実行します。

model.fit(data, labels, validation_split=0.2)

説明することはもっとたくさんありますが、うまくいけば、これで開始できます。

36
Lucas Ramadan

1つのエポックは、モデルがネットワーク内のすべてのノードを介してデータを実行し、最適な損失値に達するように重みを更新する準備ができたときに終了します。つまり、小さいほど良いです。あなたの場合、より高いエポックでより高い損失スコアがあるので、モデルは最初のエポックでより良いようです。

モデルが適切な相互検証方法を使用してテストされていないため、つまり、トレーニングデータに対してのみ評価されているため、実際にはまだはっきりとは分からないため、「そう」と言いました。

モデルを改善する方法:

  • Kerasモデルでクロス検証を使用して、モデルが実際にどのように実行されるかを確認します。これまでに見たことのない新しいデータを予測するとき、それはうまく一般化されますか?
  • 学習率、ニューラルネットワークモデルの構造、隠れユニット/レイヤーの数、init、オプティマイザー、およびモデルで使用されるアクティベーターパラメーターを無数に調整します。

SklearnのGridSearchCVとKerasを組み合わせることで、このプロセスを自動化できます。

10
jaycode