ReLU活性化関数とは
ReLU(Rectified Linear Unit/正規化線形ユニット)は、現在のディープラーニングやニューラルネットワークで最も広く使われている活性化関数のひとつです。定義は \(f(x) = \max(0,\ x)\)。つまり、入力が正の値ならそのまま出力し、負の値(および0)はすべて0に切り捨てます。このシンプルなルールによってネットワークに非線形性を取り入れつつ、計算コストは極めて軽く抑えられます。畳み込み層や全結合層の多くでReLUが採用されているのは、まさにこの手軽さが理由です。
この計算ツールの使い方
x の欄に任意の実数を入力すると、\(f(x) = \text{ReLU}(x)\) の値が表示されます。負の数・0・正の数のいずれも入力できます。x が0より大きいときは結果が x と等しくなり、x が0以下のときは0になります。あわせて、慣例的な導関数の値も表示します。正の入力では1、それ以外では0です。
計算式の解説
ReLU関数は区分的に定義されます。\(x > 0\) のとき \(f(x) = x\)、\(x \le 0\) のとき \(f(x) = 0\) です。定義域はすべての実数 \((-\infty,\ +\infty)\) で、値域は \([0,\ +\infty)\) となります。ReLUはどの点でも連続ですが、厳密には \(x = 0\) において導関数が定義できません。慣例としてこの点では0とされ、\(x \le 0\) で \(f'(x) = 0\)、\(x > 0\) で \(f'(x) = 1\) となります。割り算が含まれないため、注意すべき例外的なケースはありません。
計算例
\(x = -3.2\) の場合を考えます。-3.2 は負の数なので、$$f(x) = \max(0,\ -3.2) = 0$$ となります。一方、\(x = 7\) の場合は $$f(x) = \max(0,\ 7) = 7$$ です。初期値の \(x = 0.5\) では、$$f(x) = \max(0,\ 0.5) = 0.5$$ になります。
よくある質問
なぜReLUはこれほど普及しているのですか? シグモイド関数やtanh関数で大きな入力時に起こりやすい勾配消失問題を回避でき、しかも計算が0との比較だけで済むほど軽量だからです。
\(x = 0\) のときはどうなりますか? 関数の値は0で、導関数は慣例的に0として扱われます。
ReLU・シグモイド・ソフトマックスの違いは何ですか? シグモイドは値を \((0,\ 1)\) の範囲に押し込め、ソフトマックスはベクトル全体を確率分布に変換します。これに対してReLUは、単一の値を非負に整えるだけというシンプルな働きをします。