ニューラル ネットワークを Theano または Tensorflow でトレーニングすると、エポックごとに「損失」と呼ばれる変数が報告されます。
この変数をどのように解釈すればよいですか? 損失が大きいほど良いか悪いか、またはニューラル ネットワークの最終的なパフォーマンス (精度) にとって何を意味するのでしょうか?
ニューラル ネットワークを Theano または Tensorflow でトレーニングすると、エポックごとに「損失」と呼ばれる変数が報告されます。
この変数をどのように解釈すればよいですか? 損失が大きいほど良いか悪いか、またはニューラル ネットワークの最終的なパフォーマンス (精度) にとって何を意味するのでしょうか?
損失が低いほど、モデルは優れています (モデルがトレーニング データに過適合していない限り)。損失はトレーニングと検証で計算され、その相互運用性は、モデルがこれら 2 つのセットに対してどれだけうまく機能しているかです。精度とは異なり、損失はパーセンテージではありません。これは、トレーニング セットまたは検証セットの各例で発生したエラーの合計です。
ニューラル ネットワークの場合、損失は通常、分類と回帰の負の対数尤度と残差平方和です。当然のことながら、学習モデルの主な目的は、ニューラル ネットワークのバックプロパゲーションなどのさまざまな最適化手法を使用して重みベクトル値を変更することにより、モデルのパラメーターに関して損失関数の値を減らす (最小化する) ことです。
損失値は、最適化の各反復後に特定のモデルがどの程度うまく動作するか、またはうまく動作しないかを示します。理想的には、各反復または数回の反復後に損失が減少すると予想されます。
モデルの精度は、通常、モデル パラメーターが学習されて固定され、学習が行われていない後に決定されます。次に、テスト サンプルがモデルに供給され、真のターゲットと比較した後、モデルが犯したミス (0-1 損失) の数が記録されます。次に、誤分類の割合が計算されます。
たとえば、テスト サンプルの数が 1000 で、モデルがそれらの 952 を正しく分類する場合、モデルの精度は 95.2% です。
損失値を減らしながら、いくつかの微妙な点もあります。たとえば、モデルがトレーニング例を「記憶」し、テスト セットに対して一種の効果がなくなるオーバー フィッティングの問題に遭遇する可能性があります。オーバーフィッティングは、正則化を使用しない場合、非常に複雑なモデル (自由パラメーターの数W
が多い)、またはデータ ポイントの数N
が非常に少ない場合にも発生します。
これらは、通常、異なるフェーズで使用されるモデルのパフォーマンスを評価するための 2 つの異なるメトリックです。
損失は、モデルの「最適な」パラメーター値 (ニューラル ネットワークの重みなど) を見つけるために、トレーニング プロセスでよく使用されます。重みを更新することにより、トレーニングで最適化しようとするものです。
精度は、より応用的な観点からのものです。上記の最適化されたパラメーターを見つけたら、このメトリックを使用して、モデルの予測が実際のデータと比較してどの程度正確かを評価します。
おもちゃの分類例を使ってみましょう。体重と身長から性別を予測したい。3 つのデータがあります。次のとおりです:(0 は男性を表し、1 は女性を表します)
y1 = 0、x1_w = 50kg、x2_h = 160cm;
y2 = 0、x2_w = 60kg、x2_h = 170cm;
y3 = 1、x3_w = 55kg、x3_h = 175cm;
y = 1/(1+exp-(b1*x_w+b2*x_h)) である単純なロジスティック回帰モデルを使用します。
b1 と b2 はどのように求められますか? 最初に損失を定義し、最適化手法を使用して b1 と b2 を更新することにより、反復的に損失を最小化します。
この例では、このバイナリ分類問題の典型的な損失は次のようになります: (合計記号の前にマイナス記号を追加する必要があります)
b1 と b2 がどうあるべきかわかりません。b1 = 0.1 および b2 = -0.03 とランダムに推測してみましょう。それでは、今の私たちの損失は何ですか?
だから損失は
次に、学習アルゴリズム(勾配降下など)は、損失を減らすために b1 と b2 を更新する方法を見つけます。
b1=0.1 および b2=-0.03 が最終的な b1 および b2 (勾配降下からの出力) である場合、現在の精度は?
y_hat >= 0.5 の場合、予測が female(1) であると判断します。それ以外の場合は 0 になります。したがって、アルゴリズムは y1 = 1、y2 = 1、y3 = 1 を予測します。精度はどのくらいですか? y1 と y2 で間違った予測を行い、y3 で正しい予測を行います。したがって、精度は 1/3 = 33.33% です。
PS: Amir's answerでは、バックプロパゲーションは NN における最適化手法であると言われています。NNで重みの勾配を見つける方法として扱われると思います。NN の一般的な最適化方法は、GradientDescent と Adam です。
トレーニング/検証/テスト データ セットを明確にするために: トレーニング セットは、モデルの初期トレーニングを実行し、ニューラル ネットワークの重みを初期化するために使用されます。
検証セットは、ニューラル ネットワークのトレーニング後に使用されます。これは、ネットワークのハイパーパラメーターを調整し、それらの変更がモデルの予測精度にどのように影響するかを比較するために使用されます。トレーニング セットは、ニューラル ネットワークのゲートの重みを構築するために使用されると考えることができますが、検証セットを使用すると、ニューラル ネットワーク モデルのパラメーターまたはアーキテクチャを微調整できます。パラメータ/アーキテクチャの変更がネットワークの予測力にどのように影響するかを観察するために、これらの異なるパラメータ/アーキテクチャを同じデータとネットワークの重みに対して繰り返し比較できるので便利です。
次に、テスト セットは、トレーニング データ セットと検証データ セットを使用したトレーニングおよびパラメーター/アーキテクチャの選択の後、以前には見られなかったデータに対するトレーニング済みニューラル ネットワークの予測精度をテストするためにのみ使用されます。