2017-02-06 11 views
3

正確に損失とは何ですか?私はtensorflowのim2txtサンプルを訓練することだし、それは損失を出力

INFO:tensorflow:global step 2174: loss = 3.6930 (15.83 sec/step) 
INFO:tensorflow:global step 2175: loss = 3.6651 (15.52 sec/step) 
INFO:tensorflow:global step 2176: loss = 3.5733 (18.25 sec/step) 
INFO:tensorflow:global step 2177: loss = 3.1979 (18.87 sec/step) 
INFO:tensorflow:global step 2178: loss = 2.9362 (15.99 sec/step) 
INFO:tensorflow:global step 2179: loss = 3.6375 (15.65 sec/step) 

損失とは何ですか?正しく実行するAIの確率とはどのような関係がありますか(数式はありますか)? ususally許容損失ですか?

答えて

2

から:https://github.com/tensorflow/models/blob/master/im2txt/im2txt/show_and_tell_model.py

losses = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=targets, 
                  logits=logits) 
    batch_loss = tf.div(tf.reduce_sum(tf.multiply(losses, weights)), 
         tf.reduce_sum(weights), 
         name="batch_loss") 

softmax(あなたはドキュメントの正確な定義を検索することができます)基本的に導き出せる空想MAX関数です。これは、最大のアクティベーションのために高い値を持つようになるでしょう。それは複数の高い活性化を持つことができ、これは間違ったものすべてに対してペナルティを受けることになります。

ロスは、モデルで最適化したいものです。

これはまったく同じ損失の類似モデルをたくさん訓練していない限り、通常はあまり意味がありません。通常、損失グラフを見てモデルがいつ進行を止めたかを確認し、トレーニングをやめることができます。また、他のモデルでは、損失を増やしたいと思うかもしれない損失に他のものを追加したいと考えています(入力平均の重みを1.0にするなど)。モデルが悪いです。

モデルが良いか悪いかを把握したい場合は、気になるもののメトリックを追加します。明らかなことは精度/リコール/精度です。既に使用できる定義済みのメトリックがあります(streaming_accuracy)。あるいは、メトリックを計算してサマリーとして追加することもできますが、それはevalデータセットからは利用できません。

もう一つの選択肢は明らかに悪い(定数またはランダム)モデルをセットアップし、そのモデルの損失をあなたが得ているものと比較することです。

1

損失は、最適化アルゴリズムが最小化しようとするターゲット関数です。

一般に、損失関数をモデルの悪さの尺度にしたいと考えています。しかし、最適化アルゴリズムではうまくいくためには少数の数学的特性が必要なので、精度とリコールのような通常のものを選択することはできません(モデルパラメータに関して微分可能な連続関数が必要です)。

分類タスクでは、softmaxが一般的な選択です。 argmaxのスムーズで正常に動作するバージョンです。これは、最も高いネットワークアクティベーションを持つクラスを選択するために使用されます。回帰では、通常mean squared errorが正常に機能します。

関連する問題