web-dev-qa-db-ja.com

Kerasの「メトリック」とは何ですか?

metricsが何であるかはまだ明確ではありません(以下のコードを参照)。彼らは何を正確に評価していますか?なぜmodelでそれらを定義する必要があるのですか? 1つのモデルに複数のメトリックを含めることができるのはなぜですか?そしてさらに重要なことは、このすべての背後にあるメカニズムは何ですか?科学的な参考文献も歓迎します。

model.compile(loss='mean_squared_error',
              optimizer='sgd',
              metrics=['mae', 'acc'])
16
DragonKnight

したがって、metricsとは何かを理解するには、loss関数とは何かを理解することから始めるのがよいでしょう。ニューラルネットワークのほとんどは、loss関数を減少させる反復プロセスにより、勾配法を使用して訓練されます。 lossは、2つの重要なプロパティを持つように設計されています-値が小さいほど、モデルはデータによりよく適合し、微分可能でなければなりません。これを知っているので、metricが何であるかを完全に定義できます。これは、例の予測値とグラウンドトゥルース値が与えられると、モデルの適合度のスカラー尺度を提供する関数です。したがって、loss関数はメトリックであることがわかりますが、逆は常に成り立つわけではありません。これらの違いを理解するために、metricsの使用法の最も一般的な例を見てみましょう。

  1. 微分不可能な関数を使用してネットワークのパフォーマンスを測定します:精度は微分不能(連続的でさえない)なので、ネットワークを直接最適化することはできません。それに。ただし、最も正確なモデルを選択するために使用できます。

  2. 最終的な損失がそれらのいくつかの組み合わせである場合、異なる損失関数の値を取得します:あなたの損失には、重みは0およびモデルの適合度を測定する用語とは異なります。この場合、エポック間でモデルの適合度がどのように変化するかを個別に追跡するために、metricsを使用できます。

  3. モデルを直接最適化したくない指標について追跡します:したがって-多次元回帰の問題を解決していると仮定しましょうほとんどがmseを心配していますが、同時に、ソリューションのcosine-distanceが時間とともにどのように変化しているかに関心があります。次に-metricsを使用するのが最善です。

上記の説明により、メトリックスとは何か、なぜ1つのモデルで複数のメトリックスを使用できるのかが明らかになることを願っています。それでは、kerasでの使用の仕組みについて少し説明しましょう。トレーニング中にそれらを計算する方法は2つあります。

  1. コンパイル時に定義されたmetricsの使用:これはあなたが直接尋ねたものです。この場合、kerasは、トレーニング中に計算するように定義した各メトリックに対して個別のテンソルを定義しています。これは通常、計算を高速化しますが、これには追加のコンパイルのコストと、メトリックがkeras.backend関数の観点から定義される必要があるという事実が伴います。

  2. keras.callbackの使用:計算するために Callbacks を使用できるのは素晴らしいメトリック。各コールバックにはmodelのデフォルト属性があるため、トレーニング中にmodel.predictまたはモデルパラメーターを使用してさまざまなメトリックを計算できます。さらに、エポック単位だけでなく、バ​​ッチ単位またはトレーニング単位でも計算できるようになります。これには、計算が遅くなり、ロジックが複雑になるという犠牲が伴います-独自にメトリックを定義する必要があるからです。

ここ 使用可能なメトリックのリストと、独自のメトリックの定義方法の例を見つけることができます。

25
Marcin Możejko

kerasメトリック ページの説明のように:

メトリックは、モデルのパフォーマンスを判断するために使用される関数です

メトリックは、トレーニングを終了し、過剰適合を回避するために、早期停止コールバックで頻繁に使用されます

4
Ioannis Nasios

参照: Keras Metrics Documentation

keras metricsのドキュメントページにあるように、metricはモデルのパフォーマンスを判断します。 metricsメソッドのcompile引数には、トレーニングおよびテスト段階でモデルが評価する必要のあるメトリックのリストが保持されます。次のような指標:

  • binary_accuracy

  • categorical_accuracy

  • sparse_categorical_accuracy

  • top_k_categorical_accuracyおよび

  • sparse_top_k_categorical_accuracy

モデルのコンパイル時にmetricsパラメーターで提供される利用可能なメトリック関数です。

メトリック関数もカスタマイズ可能です。複数のメトリックを評価する必要がある場合、dictionaryまたはlistの形式で渡されます。

メトリックを深く掘り下げるために参照する必要がある重要なリソースの1つを見つけることができます here

2

実装の観点から、損失とメトリックは実際にはKerasで同一の機能です。

Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow.keras as Keras
>>> print(Keras.losses.mean_squared_error == Keras.metrics.mean_squared_error)
True
>>> print(Keras.losses.poisson == Keras.metrics.poisson)
True
1
bers