web-dev-qa-db-ja.com

機械学習モデルのための「損失」と「正確さ」の解釈方法

私がTheanoまたはTensorflowで私のニューラルネットワークを訓練したとき、それらはEpochごとに "loss"と呼ばれる変数を報告するでしょう。

どうやってこの変数を解釈すればいいの?損失が大きいほど、良くも悪くも、それが私のニューラルネットワークの最終的な性能(正確さ)に何を意味するのでしょうか?

142
mamatv

損失が小さいほど、 は良いモデルになります(モデルがトレーニングデータに過剰に適合していない限り)。損失は​​ training および validation で計算され、その相互作用はモデルがこれら2つのセットに対してどれだけうまく機能しているかです。精度とは異なり、損失はパーセントではありません。これは、トレーニングまたは検証セット内の各例に対して行われたエラーの合計です。

ニューラルネットワークの場合、損失は通常、分類と回帰のそれぞれに対して、 負の対数尤度 および 残差平方和 となります。そして、当然のことながら、学習モデルの主な目的は、ニューラルネットワークでのバックプロパゲーションなど、さまざまな最適化手法を使用して重みベクトル値を変更することによって、モデルのパラメータに対する損失関数の値を減らす(最小化)ことです。

損失値は、最適化を繰り返すたびに、特定のモデルがどの程度うまくまたは不十分に動作するかを示します。理想的には、各反復または複数回の反復後の損失の減少が予想されます。

モデルの精度は通常、モデルパラメータが学習されて固定され、学習が行われていない後に決定されます。次に、テストサンプルをモデルに入力し、実際のターゲットと比較した後に、モデルで発生したミスの数(ゼロから1の損失)を記録します。次に誤分類の割合が計算されます。

たとえば、テストサンプルの数が1000で、モデルがそれらのうち952を正しく分類している場合、モデルの精度は95.2%です。

enter image description here

損失額を減らす一方で、いくつかの微妙な点もあります。たとえば、モデルが学習例を「記憶」してテストセットには無効になってしまうという、 over-fitting の問題に遭遇するかもしれません。 正則化 を使用していない、非常に複雑なモデルを使用している(自由パラメータWの数が多い)、またはデータポイントの数Nが非常に少ない場合にも、過剰適合が発生します。

209
Amir

これらは、通常異なるフェーズで使用されているモデルのパフォーマンスを評価するための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を見つけますか?最初に損失を定義し、b 1とb 2を更新することによって反復的に損失を最小化する最適化方法を使用します。

この例では、このバイナリ分類問題の一般的な損失は次のようになります。(マイナス記号を合計記号の前に追加する必要があります)

B1とb2がどうなるべきかわからない。ランダムな推測で、b 1 = 0.1、b 2 = -0.03とします。それでは今私たちの損失は何ですか?

y1_hat = 1 /(1 + exp { - (0.1 * 50-0.03 * 160)))= 0.549834 = 0.55

y2_hat = 1 /(1 + exp { - (0.1×60−0.03×170)))= 0.7109495 = 0.71

y3_hat = 1 /(1 + exp { - (0.1 * 55-0.03 * 175)))= 0.5621765 = 0.56

したがって、損失は(-log(1-0.55)+ -log(1-0.71) - log(0.56))= 2.6162です。

それからあなたはアルゴリズム(例えば勾配降下)を学ぶことは損失を減らすためにb1とb2を更新する方法を見つけるでしょう。

B1 = 0.1かつb2 = -0.03が最後のb1およびb2(勾配降下からの出力)であるとしたら、今の精度はどうなりますか?

Y_hat> = 0.5であれば、予測は女性であると判断します(1)。それ以外の場合は0になります。したがって、我々のアルゴリズムはy 1 = 1、y 2 = 1、y 3 = 1と予測します。 y1とy2について間違った予測をし、y3について正しい予測をします。だから今私たちの精度は1/3 = 33.33%

PS: Amirの答え では、逆伝搬はNNの最適化方法であると言われています。 NNで重みの勾配を見つける方法として扱われると思います。 NNの一般的な最適化方法はGradientDescentとAdamです。

13
Math Novice

@Aadnanトレーニング/検証/テストデータセットを明確にするために、トレーニングセットはモデルの初期トレーニングを実行し、ニューラルネットワークの重みを初期化するために使用されます。

検証セットは、ニューラルネットワークが訓練された後に使用される。これは、ネットワークのハイパーパラメータを調整し、それらに対する変更がモデルの予測精度に与える影響を比較するために使用されます。トレーニングセットはニューラルネットワークのゲート重みを構築するために使用されると考えることができるのに対して、検証セットはニューラルネットワークモデルのパラメータまたはアーキテクチャの微調整を可能にする。パラメータ/アーキテクチャの変更がネットワークの予測力にどのように影響するかを観察するために、同じデータとネットワークの重みに対してこれらの異なるパラメータ/アーキテクチャを繰り返し比較できるので便利です。

そして、訓練および検証/訓練データセットを用いたパラメータ/アーキテクチャ選択の後に、以前には見られなかったデータに対して訓練されたニューラルネットワークの予測精度をテストするためにのみテストセットが使用される。

4
Jon