ReLU関数とは

レルかんすうrectified linear unit略語 ReLU別名 ReLU、ランプ関数、正規化線形関数

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関数による改良、隠れ層と出力層での使い分けが問われます。

混同しやすい用語

用語意味
Leaky ReLU関数入力が正ならそのまま出力し、0以下なら0.01倍などの小さな傾きを掛けた値を出力する活性化関数

◯×チェック

  1. ReLU関数に3を入力すると3が出力され、−2を入力すると0が出力される。

    答えを見る

    答え ◯ 正しい

    f(x) = max(0, x)なので、正の入力はそのまま通り、0以下の入力は0になります。

  2. ReLU関数は、入力が正の範囲では微分が常に1になるため、層を重ねても勾配が小さくなりにくい。

    答えを見る

    答え ◯ 正しい

    微分が最大0.25のシグモイド関数とは違い、活性化関数の微分を掛け合わせる部分で勾配が縮みません。深いネットワークで使われる理由です。

  3. ReLU関数は指数関数の計算を含むため、シグモイド関数よりも計算に時間がかかる。

    答えを見る

    答え × 誤り

    指数関数を含むのはシグモイド関数やtanh関数です。ReLU関数は入力を0と比べるだけなので、計算が軽く済みます。

練習問題

ReLU関数の問題(9問)
  1. シグモイド関数と勾配消失
  2. 出力層の活性化関数の選択
  3. ReLU系関数とtanh関数の性質
  4. 回帰の出力層の活性化関数
  5. 勾配消失問題への対処
  6. 連鎖律による勾配の計算
  7. 全結合層の重みの初期化
  8. AlexNetの学習の工夫
  9. VGGの3×3畳み込みの積み重ね

AIで作成 人による確認:未 誤りを報告

出典と作成について

作成:ウカトレ編集部(AIで作成し、別のAIが一次資料と照合。手順は編集方針)

公開日: 最終更新日: 最終確認日:

対応シラバス:シラバス第1.4版 技術12

改訂履歴

表示設定

テーマ
文字の大きさ
問題演習