relu 活性化関数に導関数が含まれていないという事実は、どのような影響がありますか?
Numpy で ReLU 関数を実装する方法relu を最大 (0 , 行列ベクトル要素) として実装します。
これは、勾配降下法では relu 関数の微分をとらないということですか?
アップデート :
RELU を使用したニューラル ネットワークのバックプロパゲーションから
このテキストは理解に役立ちます :
ReLU 関数は次のように定義されます。 x > 0 の場合、出力は x、つまり f(x) = max(0,x) です。
したがって、導関数 f '(x) については、実際には次のようになります。
x < 0 の場合、出力は 0 です。x > 0 の場合、出力は 1 です。
導関数 f '(0) は定義されていません。したがって、通常は 0 に設定するか、アクティベーション関数を小さな e の場合は f(x) = max(e,x) に変更します。
一般的に: ReLU は、整流器活性化機能を使用するユニットです。つまり、他の隠れ層とまったく同じように機能しますが、tanh(x)、sigmoid(x)、または使用するアクティベーションを除いて、代わりに f(x) = max(0,x) を使用します。
シグモイド アクティベーションを使用して動作する多層ネットワークのコードを記述した場合、文字通り 1 行の変更になります。順伝播または逆伝播については、アルゴリズムの変更はありません。単純なモデルがまだ機能していない場合は、戻って最初から始めてください。それ以外の場合、あなたの質問は実際には ReLU に関するものではなく、NN 全体の実装に関するものです。
しかし、ニューラル ネットワークのコスト関数は通常、活性化関数の導関数を使用するため、これにはまだ混乱が残ります。