記事ディレクトリ
1. 背景
ニューラル ネットワークのトレーニング プロセスでは、コンパイル ステップの 3 つのパラメーター、損失、メトリクス、オプティマイザーを常に選択する必要があります。では、それらは何を意味するのでしょうか?
損失関数 (損失関数): ネットワークがトレーニング データのパフォーマンスを測定する方法、つまりネットワークが正しい方向にどのように進んでいるかを測定します。
オプティマイザー: トレーニング データと損失関数に基づいてネットワークを更新するメカニズム。
トレーニングおよびテスト中に監視する必要があるメトリクス。
2、損失
何かを制御するには、まずそれを観察できる必要があります。ニューラル ネットワークの出力を制御するには、その出力が期待値からどの程度離れているかを測定できる必要があります。これは、目的関数とも呼ばれるニューラル ネットワーク損失関数のタスクです。
損失関数の入力は、ネットワークの予測値と実際のターゲット値 (つまり、ネットワークに出力させたい結果) であり、この例に対するネットワークの影響を測定するための距離値を計算します。
3、メトリクス
トレーニングおよびテスト中に監視する必要がある指標
# 分类任务中使用
metrics=['accuracy'])
# 回归任务中使用
metrics=['mae'])
metrics=['mse'])
4. コントラスト
損失 | メトリック |
---|---|
ネットワーク最適化の目標です。重み W を更新する最適化操作に参加する必要がある | これは、ネットワークのパフォーマンスを評価するための「指標」としてのみ使用され、アルゴリズムの効果を理解するのに便利で直感的であり、最適化プロセスには関与しません。 |
トレーニング中に必須 | トレーニングはなくても行うことができます |
5. Loss と Metrics の定義が両方とも mse の場合、表示が異なるのはなぜですか?
注意深い学生は、損失とメトリクスの両方が mse として定義されている場合、値の表示が異なることに気づくでしょう。そこで気になるのは、損失とメトリクスは同じ計算方法であるのに、なぜ異なるのかということです。
実際、この小さな違いの理由は、モデルの評価 (メトリクスの結果) が、モデルがバッチをトレーニングした後のバッチの評価であるためです。表示される損失は、トレーニング プロセス中にサンプルのこのバッチによって生成された損失の平均値です。
一言で言えば、モデルはバッチ トレーニング プロセス中に変更されます。損失の結果は各サンプルの動的損失の平均値ですが、メトリクスはバッチの終了後にこのバッチのデータを評価した結果です。
6、オプティマイザー
深層学習の基本的な手法は、この距離値をフィードバック信号として使用して重み値を微調整し、現在の例に対応する損失値を削減することです (次の図を参照)。この調整は、深層学習のコア アルゴリズムである、いわゆるバックプロパゲーション アルゴリズムを実装するオプティマイザーによって行われます。
7. 参考資料
「【Keras著者の代表作】Pythonディープラーニング」