ReLU活性化関数とは
ReLU(Rectified Linear Unit、正規化線形ユニット)は、現代のニューラルネットワークで最も広く使われている活性化関数の一つです。定義は \(f(x) = \max(0, x)\) で、入力が正の値ならそのまま出力し、負の値ならすべて0を返します。このシンプルな区分線形のルールによって、ネットワークに非線形性を持たせながら、計算コストが非常に低く、微分も容易になるという利点があります。
この計算ツールの使い方
入力するのは3つの値です。xの初期値(計算を始める点)、増分(ステップ幅。1回ごとにxがどれだけ変化するか)、そして繰り返し回数(生成する点の数)です。ツールは各xの値に対してReLUを計算し、(x, f(x)) の完全なデータ表を作成したうえで、原点に折れ目を持つ「平坦から立ち上がる」特徴的な形状の折れ線グラフを描画します。
計算式の解説
ReLUは \(f(x) = \max(0, x)\) であり、「\(x > 0\) ならx、それ以外は0」と表すこともできます。xの掃引(スイープ)は
$$x_k = \text{startX} + k \times \text{stepX}, \quad k = 0, 1, \dots, \text{iterations} - 1$$というルールで生成されるため、最終的なxの値(endX)は \(\text{startX} + (\text{iterations} - 1) \times \text{stepX}\) となります。関数はすべての負の入力に対して0で平坦に張りつき、正の入力に対しては傾き1で一定の割合で立ち上がります。
計算例
初期値 \(\text{startX} = -5\)、ステップ \(\text{stepX} = 0.1\)、繰り返し回数 \(\text{iterations} = 101\) という既定値を使うと、xは \(-5\) から \(-5 + 100 \times 0.1 = +5\) まで、両端を含む101点にわたって変化します。\(x = -2.0\) のとき \(f = \max(0, -2.0) = 0\)、\(x = 0\) のとき \(f = 0\)、\(x = 0.1\) のとき \(f = 0.1\)、\(x = 2.5\) のとき \(f = 2.5\)、\(x = 5.0\) のとき \(f = 5.0\) となります。描画される曲線は負の範囲全体で0に張りつき、その後 \((5, 5)\) へと直線的に立ち上がります。
よくある質問(FAQ)
ReLUはx=0で微分可能ですか? いいえ。ReLUは \(x = 0\) に折れ目(角)があるため、その点では微分できません。導関数は \(x < 0\) で0、\(x > 0\) で1となり、慣例として \(x = 0\) での導関数は0とすることが多いです。
ステップ幅を負の値にできますか? できます。負のステップを指定すると、xは小さくなる方向に変化します。ステップが0の場合は、すべてのxが初期値と同じになり、定数だけが並ぶ意味のない列になります。
なぜReLUはこれほど人気なのですか? シグモイドやtanhで問題となる勾配消失を正の入力では回避でき、計算が非常に単純で、活性がスパース(疎)になりやすいという特性があります。これらが学習の高速化につながることが多いためです。