ニューラルネットワーク:使用するコスト関数?
主にニューラルネットワークを使用した実験にTensorFlowを使用しています。かなりの実験(XOR-Problem、MNIST、いくつかのリグレッションなど)を行っていますが、全体的に初心者と見なされる可能性があるため、特定の問題に対して「正しい」コスト関数を選択するのに苦労しています。 TensorFlowに来る前に、PythonとNumPyを使用して、完全に接続されたMLPとリカレントネットワークをいくつかコーディングしましたが、ほとんどの場合、単純な2乗誤差と単純な勾配不足で十分な問題がありました。 ただし、TensorFlowはカスタムコスト関数を作成するだけでなく、かなり多くのコスト関数を提供するので、ニューラルネットワークのコスト関数専用のチュートリアルがあるかどうか知りたいのですが?(私はすでに公式のTensorFlowチュートリアルの半分のように実行しましたが、特定のコスト関数または学習者が特定の問題に使用される理由を実際には説明していません-少なくとも初心者には) いくつか例を挙げます: cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(y_output, y_train)) 1つのベクトルの合計が1になるように、両方の入力にsoftmax関数を適用すると思いますが、ロジットとのクロスエントロピーは正確には何ですか?私はそれが値を合計し、クロスエントロピーを計算すると思った...だからメトリック測定?!出力を正規化し、合計して二乗誤差を取ると、これは非常に同じではないでしょうか?さらに、なぜこれがMNISTなどに使用されるのですか(またはさらに難しい問題)?私は10または多分1000のクラスのように分類したい場合は、に関する情報破棄完全に値を合計しません。これは、実際の出力はクラスでしたの? cost = tf.nn.l2_loss(vector) これは何のため?l2の損失はほぼ二乗誤差であると考えましたが、TensorFlowのAPIは、入力が1つのテンソルに過ぎないことを示しています。まったく考えがつかないのですか?! 加えて、クロスエントロピーについてこれをかなり頻繁に見ました: cross_entropy = -tf.reduce_sum(y_train * tf.log(y_output)) ...しかし、なぜこれが使用されるのですか?数学的にクロスエントロピーの損失ではありません: -1/n * sum(y_train * log(y_output) + (1 - y_train) * log(1 - y_output)) (1 - y_train) * log(1 - y_output)ほとんどのTensorFlowの例の一部はどこにありますか?不足していませんか? 回答:この質問は非常に開かれていることは知っていますが、すべての問題/コスト関数が詳細にリストされている10ページほどになるとは思いません。どのコスト関数を使用するかについての簡単な要約(一般的にもTensorFlowでも、私にとっては重要ではありません)と、このトピックに関する説明が必要です。および/または初心者向けのソース;)