ReLUを使用するニューラルネットワークでバックプロパゲーションを作成することについてです。以前の私のプロジェクトでは、Sigmoidアクティベーション機能を使用していたネットワークでそれを行いましたが、ReLUには派生物がないため、今は少し混乱しています。
これが image で、weight5が合計エラーにどのように寄与するかについて説明しています。この例では、シグモイド関数を使用すると、out/net = a *(1-a)になります。
バックプロパゲーションを機能させるには、「a *(1-a)」の代わりに何を書けばよいですか?
reLUには派生物がないためです。
いいえ、ReLUには派生物があります。私はあなたがReLU関数f(x)=max(0,x)
を使用していると想定しました。つまり、_x<=0
_の場合はf(x)=0
、それ以外の場合はf(x)=x
になります。最初のケースでは、_x<0
_なので、xに関するf(x)の導関数は、結果f'(x)=0
になります。2番目のケースでは、 f'(x)=1
を計算します。
Relu導関数は、np.heavisideステップ関数で実装できます。 np.heaviside(x、1)。 2番目のパラメーターは、x = 0の場合の戻り値を定義するため、1はx = 0の場合に1を意味します。