MCPで接続 →

計算を入力してください

任意の実数(負の数・0・正の数のいずれも可)。

公式

広告

結果

f(x) = ReLU(x)
0.5
無次元
入力 x 0.5
f(x) = max(0, x) 0.5
導関数 f'(x) 1

ReLU活性化関数とは

ReLU(Rectified Linear Unit/正規化線形ユニット)は、現在のディープラーニングやニューラルネットワークで最も広く使われている活性化関数のひとつです。定義は \(f(x) = \max(0,\ x)\)。つまり、入力が正の値ならそのまま出力し、負の値(および0)はすべて0に切り捨てます。このシンプルなルールによってネットワークに非線形性を取り入れつつ、計算コストは極めて軽く抑えられます。畳み込み層や全結合層の多くでReLUが採用されているのは、まさにこの手軽さが理由です。

ReLU関数のグラフ。xが負のときは0で平坦、xが正のときは線形に増加
ReLU関数は負の入力に対して0を、正の入力に対しては入力そのものを出力します。

この計算ツールの使い方

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は、単一の値を非負に整えるだけというシンプルな働きをします。

最終更新: