ニューラルネットワークのトピックとそれらを効率的にトレーニングする方法を掘り下げているときに、古典的な滑らかなシグモイドの代わりに、正規化線形ユニット(ReLU)などの非常に単純な活性化関数を使用する方法に出会いました。 ReLU関数はオリジンで微分可能ではありません。したがって、私の理解によれば、多変数微積分の連鎖律は滑らかな関数のみを参照するため、バックプロパゲーションアルゴリズム(BPA)はReLUを使用したニューラルネットワークのトレーニングには適していません。しかし、私が読んだReLUの使用に関する論文は、この問題に対処していません。 ReLUは非常に効果的であり、予期しない動作を引き起こさずに、事実上どこでも使用されているようです。誰かが、バックプロパゲーションアルゴリズムを介してReLUをトレーニングできる理由を説明できますか?
ReLUのような関数でバックプロパゲーションがどのように可能であるかを理解するには、バックプロパゲーションアルゴリズムをうまく機能させる導関数の最も重要なプロパティを理解する必要があります。このプロパティは次のとおりです。
f(x) ~ f(x0) + f'(x0)(x - x0)
x0
を現時点でのパラメーターの実際の値として扱うと、パラメーターを少し変更したときにコスト関数がどのように動作するかを知ることができます(コスト関数の値とその導関数を知る)。これは、バックプロパゲーションで最も重要なことです。
コスト関数の計算はコスト計算にとって非常に重要であるため、上記の特性を満たすにはコスト関数が必要になります。 ReLUが0
の小さな近傍を除いて、どこでもこのプロパティを満たしていることを確認するのは簡単です。そして、これがReLUの唯一の問題です。0
の近くではこのプロパティを使用できないという事実です。
これを克服するには、0
のReLU導関数の値を1
または0
のいずれかに選択できます。一方、ほとんどの研究者は、ReLUの計算中に0
に近づくことは比較的まれであるという事実のために、この問題を深刻なものとして扱っていません。
上記のことから(もちろん)、純粋な数学的観点から、バックプロパゲーションアルゴリズムでReLUを使用することは妥当ではありません。一方、実際には、通常、0.
の周りにこの奇妙な動作があることには何の違いもありません。