1行定義
ReLU関数とは、入力が0より大きければその値をそのまま出力し、0以下なら0を出力する活性化関数のことです。
くわしく
ReLU関数(Rectified Linear Unit)は、ニューラルネットワークの隠れ層で最もよく使われている活性化関数の1つです。式はf(x) = max(0, x)です。入力が正ならその値をそのまま通し、0以下なら0にします。グラフは、原点で折れ曲がった1本の折れ線になります。ランプ関数とも呼ばれます。
勾配消失に強い理由
誤差逆伝播法では、各層の活性化関数の微分(傾き)を掛け合わせながら、出力層から入力層へ勾配を伝えます。シグモイド関数の微分は最大でも0.25なので、層を重ねるほど勾配が小さくなります。これに対してReLU関数の微分は、入力が正の範囲では常に1です。活性化関数の部分で勾配が縮まないため、深いネットワークでも入力層に近い層まで学習が進みやすくなります。
計算が軽いことも利点です。入力を0と比べるだけなので、指数関数を使うシグモイド関数やtanh関数より速く計算できます。2010年前後の研究で深いネットワークでの有効性が示され、2012年のAlexNetでも採用されました。
弱点
入力が負の範囲では、出力も微分も0です。学習の途中で、あるユニットへの入力が常に負になると、そのユニットは0しか出力せず、重みも更新されなくなります。これは「dying ReLU」と呼ばれます。負の範囲にも0.01倍などの小さな傾きを持たせたLeaky ReLU関数は、この弱点を補う改良版です。なお、入力がちょうど0の点では微分できませんが、実装上は微分を0などと決めて扱います。
また、出力に上限がなく、確率として読める形にもなりません。そのため、分類の出力層ではシグモイド関数やソフトマックス関数を使い、ReLU関数は主に隠れ層で使います。
覚え方
「マイナスは切り捨て、プラスは素通し」と覚えます。
G検定での出題
出題のされ方
シグモイド関数やtanh関数と比べて勾配消失が起きにくい理由、負の入力で出力と勾配が0になる弱点とLeaky ReLU関数による改良、隠れ層と出力層での使い分けが問われます。
混同しやすい用語
| 用語 | 意味 |
|---|---|
| ReLU関数このページの用語 | 入力が0より大きければその値をそのまま出力し、0以下なら0を出力する活性化関数 |
| Leaky ReLU関数 | 入力が正ならそのまま出力し、0以下なら0.01倍などの小さな傾きを掛けた値を出力する活性化関数 |
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
ReLU関数に3を入力すると3が出力され、−2を入力すると0が出力される。
答えを見る
答え ◯ 正しい
f(x) = max(0, x)なので、正の入力はそのまま通り、0以下の入力は0になります。
-
ReLU関数は、入力が正の範囲では微分が常に1になるため、層を重ねても勾配が小さくなりにくい。
答えを見る
答え ◯ 正しい
微分が最大0.25のシグモイド関数とは違い、活性化関数の微分を掛け合わせる部分で勾配が縮みません。深いネットワークで使われる理由です。
-
ReLU関数は指数関数の計算を含むため、シグモイド関数よりも計算に時間がかかる。
答えを見る
答え × 誤り
指数関数を含むのはシグモイド関数やtanh関数です。ReLU関数は入力を0と比べるだけなので、計算が軽く済みます。
この用語の練習問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目12 活性化関数)
- Vinod Nair, Geoffrey E. Hinton, Rectified Linear Units Improve Restricted Boltzmann Machines, ICML 2010
- Xavier Glorot, Antoine Bordes, Yoshua Bengio, Deep Sparse Rectifier Neural Networks, AISTATS 2011, PMLR 15:315–323
- Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning, MIT Press (2016) (6.3 Hidden Units)