2017-07-21 8 views
0

私は、畳み込みニューラルネットワークを自分でプログラマブルにしようとすることで、ニューラルネットワークをよりよく理解しようとしています。CNNのエラー関数とReLu

これまでは、max-poolingを使用せず、単純なReLuの有効化を使用することで、かなり簡単にするつもりです。私はこの設定の欠点を認識していますが、その点が世界で最高の画像検出器を作っているわけではありません。

ここで、エラー計算の詳細を理解し、それを戻し、新しい重みを計算するために使用された起動関数とどのように相互作用するのか把握していません。

私はこの文書(A Beginner's Guide To Understand CNN)を読んでいますが、それは私には分かりません。エラーを計算するための公式は、すでに私を混乱させる。

enter image description here

この合計機能は、[スタート点と終了点を定義していないので、私は基本的にそれを読むことができません。たぶんあなたは私に正しいものを提供することができますか?

その後、著者は単に「その値」で変数Lを想定して(私は彼がE_totalを意味と仮定?)して、新しい重みを定義する方法については、例を示します:

enter image description here

Wは特定の層の重みです。

これは、私がいつも起動機能(私の場合はReLu)が新しい体重の計算方法の役割を果たしたという印象の下に立っているので、私はこのことを混乱させます。また、これは単にすべてのレイヤーにエラーを使用することを意味するようです。エラー値は次の層に何らかの形で伝播するのではなく、以前のもので計算したものに依存しますか?

多分これはすべて不完全で、あなたは私の場合に私を助ける方向に向けることができます。

ありがとうございます。

+0

ニューラルネットワークまたはその他の機械学習アルゴリズムに関する理論的な質問は、スタックオーバーフローのトピックではありません。 [Cross Validated](https://stats.stackexchange.com)の質問を探して、おそらく特定の問題を抱えて質問することを検討してください。 –

答えて

0

エラーはバックプロパゲーションしませんが、グラディエントです。アクティベーション機能は、前記体重が前記活性化の前または後であるかどうか、および前記体重が接続されているかどうかに応じて、新しい体重をcaculatingする役割を果たす。 wが非線形性レイヤfの後にある場合、グラデーションdL/dwfに依存しません。しかし、wfの前にある場合は、接続されている場合、dL/dwfに依存します。例えば、wが完全に接続されたレイヤのウェイトベクトルであり、fがこのレイヤの直後にあるとします。次に、

dL/dw=(dL/df)*df/dw //notations might change according to the shape 
        //of the tensors/matrices/vectors you chose, but 
        //this is just the chain rule 

コスト関数は正しいです。多くの人がこの非形式的なスタイルでこれらの数式を書いて、あなたがそのアイデアを得ることができるようにしますが、それを自分のテンソルの形に適応させることができます。ちなみに、この種のMSE機能は、連続したラベルスペースに適しています。あなたは画像の分類にsoftmaxまたはsvm lossを使用したいかもしれません(私はそれに戻ってきます)。とにかく、この関数の正しい形式を要求したので、ここに例を示します。ある種のベクトル場(表面法線のような)を予測するニューラルネットワークがあるとします。 2次元ピクセルx_iがあり、そのピクセルに対して3dベクトルv_iを予測すると仮定します。さて、あなたの訓練データでは、x_iはすでにグランド真理3dベクトル(i。eラベル)、y_iと呼びます次に、あなたの費用関数は、(すべてのデータサンプルの私が実行インデックス)となります。

sum_i{(y_i-v_i)^t (y_i-vi)}=sum_i{||y_i-v_i||^2} 

しかし、私が言ったようにラベルが連続空間を形成している場合、このコスト関数の動作(ここでは、R^3)。これは、回帰問題とも呼ばれます。

(画像)分類に興味がある場合の例です。私はソフトマックスロスでそれを説明します、他の損失の直感は多かれ少なかれ類似しています。 nクラスがあり、トレーニングセットでは、各データポイントx_iについて、正しいクラスを示すラベルc_iがあるとします。さて、あなたのニューラルネットワークは、それぞれの可能なラベルのスコアを生成する必要があります。これについては、s_1,..,s_nを参照してください。トレーニングサンプルの正しいクラスのスコアx_is_{c_i}としましょう。今、softmax関数を使用すると、直感はスコアを確率分布に変換し、正しいクラスの確率を最大にすることです。それは我々がどこiすべてのトレーニングサンプル上で動作し、すべてのクラスラベルのj=1,..n

sum_i { exp(s_{c_i})/sum_j(exp(s_j))} 

機能をmaximse、です。

最後に、あなたが読んでいるガイドが良い出発点だとは思わない。私は代わりにthis優れたコース(本質的にはアンドリューカルパシーの部品)をお勧めします。

関連する問題