正規化線形関数

正規化線形関数（せいきかせんけいかんすう、英: Rectified linear functionあるいは単にrectifierとも）は、引数の正の部分として定義される活性化関数であり、次のように表される。 f ( x ) = x + = max ( 0 , x ) {\displaystyle f(x)=x^{+}=\max(0,x)} 上式において、 x {\displaystyle x} はニューロンへの入力である。これはランプ関数（傾斜路関数）としても知られ、電気工学における半波整流回路と類似している。この活性化関数は、2000年にHahnloseらによって強い生物学的動機と数学的正当化を持って、動的ネットワークへ最初に導入された。2011年以前に広く使われていた活性化関数、例えばロジスティックシグモイド（これは確率論から発想を得ている。ロジスティック回帰を参照。）およびそのより実践的な機能的に同等な関数である双曲線正接関数と比較して、より深いネットワークのより良い訓練を可能にすることが2011年に初めて実証された。正規化線形関数は、2018年現在、ディープニューラルネットワークのための最も人気のある活性化関数である。 正規化線形関数を利用したユニットは正規化線形ユニット（rectified linear unit、ReLU）とも呼ばれる。 正規化線形ユニットはディープニューラルネットワークを用いたコンピュータビジョンや音声認識に応用されている。 正規化線形関数に対する平滑化近似が解析関数 f ( x ) = log ⁡ ( 1 + e x ) , {\displaystyle f(x)=\log(1+e^{x}),} であり、ソフトプラス（softplus）関数またはSmoothReLU関数と呼ばれる。ソフトプラスの導関数はロジスティック関数 f ′ ( x ) = e x 1 + e x = 1 1 + e − x {\displaystyle f'(x)={\frac {e^{x}}{1+e^{x}}}={\frac {1}{1+e^{-x}}}} である。ロジスティック関数は、正規化線形関数の導関数であるヘヴィサイドの階段関数の平滑化近似である。 単変数ソフトプラスの多変数一般化は、第一独立変数をゼロとしたLogSumExp関数（英語版） L S E 0 + ( x 1 , . . . , x n ) := L S E ( 0 , x 1 , . . . , x n ) = log ⁡ ( 1 + e x 1 + ⋯ + e x n ) . {\displaystyle LSE_{0}^{+}(x_{1},...,x_{n}):=LSE(0,x_{1},...,x_{n})=\log \left(1+e^{x_{1}}+\cdots +e^{x_{n}}\right).} である。LogSumExp関数自身は L S E ( x 1 , … , x n ) = log ⁡ ( e x 1 + ⋯ + e x n ) , {\displaystyle \mathrm {LSE} (x_{1},\dots ,x_{n})=\log \left(e^{x_{1}}+\cdots +e^{x_{n}}\right),} であり、その勾配はソフトマックス関数である。第一独立変数がゼロのソフトマックスは、ロジスティック関数の多変数一般化である。LogSumExpとソフトマックスはどちらも機械学習に用いられる。 正規化線形ユニットはガウス雑音を含むように拡張できる。これはnoisy（雑音のある）ReLUと呼ばれ、以下の式を与える。 f ( x ) = max ( 0 , x + Y ) {\displaystyle f(x)=\max(0,x+Y)} , with Y ∼ N ( 0 , σ ( x ) ) {\displaystyle Y\sim {\mathcal {N}}(0,\sigma (x))} Noisy ReLUはコンピュータビジョン問題のための制限ボルツマンマシン（英語版）において使用され、ある程度の成功を挙げている。 漏洩（リーキー、Leaky）ReLUは、ユニットがアクティブでない時に小さな正の勾配を許容する。 f ( x ) = { x if  x > 0 0.01 x otherwise {\displaystyle f(x)={\begin{cases}x&{\mbox{if }}x>0\\0.01x&{\mbox{otherwise}}\end{cases}}} パラメトリックReLU (PReLU) はさらにこの着想を発展させ、漏れの係数を他のニューラルネットワークのパラメータと同時に学習する。 f ( x ) = { x if  x > 0 a x otherwise {\displaystyle f(x)={\begin{cases}x&{\mbox{if }}x>0\\ax&{\mbox{otherwise}}\end{cases}}} a ≤ 1 {\displaystyle a\leq 1} について、これは f ( x ) = max ( x , a x ) {\displaystyle f(x)=\max(x,ax)} と等価であり、ゆえに「マックスアウト」ネットワークとの関連があることに留意すべきである。 指数関数的線形ユニット（Exponential linear unit）は、学習を高速化するため、平均活性化をゼロに近づけようと試みる。ReLUよりも高い分類制度を得ることができると示されている。 f ( x ) = { x if  x > 0 a ( e x − 1 ) otherwise {\displaystyle f(x)={\begin{cases}x&{\mbox{if }}x>0\\a(e^{x}-1)&{\mbox{otherwise}}\end{cases}}} a {\displaystyle a} はチューニングされるハイパーパラメータ（英語版）、 a ≥ 0 {\displaystyle a\geq 0} は定数である。 Swish関数、もしくはシグモイド重み付き線形ユニット (Sigmoid-weighted linear unit) はReLUに類似した曲線を描くが、その曲線は連続的であり無限階微分可能である。ReLU及び先述した派生形よりも高い分類精度を得ることができると示されている。 f ( x ) = x ∗ σ ( x ) {\displaystyle f(x)=x*\sigma (x)} なお、ここでは σ ( x ) {\displaystyle \sigma (x)} は以下の数式によって定義される標準シグモイド関数を表す。 σ ( x ) = 1 1 + e − x {\displaystyle \sigma (x)={\tfrac {1}{1+e^{-x}}}} Funnel Activation、もしくはFReLUはコンピュータビジョンに特化した活性化関数であり、二次元の画像に対して適応することを前提として設計されたものである。性質上、Funnel Activationを一つの値を入力とする関数として表すことはできないが、記述の都合上以下の数式で表される。 f ( x ) = max ( x , T ( x ) ) {\displaystyle f(x)=\max(x,\mathbb {T} (x))} なお、 T ( x ) {\displaystyle \mathbb {T} (x)} は他のニューラルネットワークのパラメータと同時に学習されるDepthwise 畳み込みモジュールである。 生物学的妥当性 tanhの反対称性と比較して、片側。 疎な活性化 例えば、無作為に初期化されたネットワークでは、隠れユニットの約50%のみが活性化される（ゼロでない出力を持つ）。 より良い勾配伝搬 両方向に飽和するシグモイド活性化関数と比較して、勾配消失問題が少ない。 効率的計算 比較、加算、乗算のみ。 スケールによって影響を受けない max ( 0 , a x ) = a max ( 0 , x ) f o r a ≥ 0 {\displaystyle \max(0,ax)=a\max(0,x)\quad \mathrm {for} \;a\geq 0} 。 正規化線形関数は、複数のコンピュータビジョン課題を学習するために教師ありで訓練されたニューラル抽象ピラミッド (Neural Abstraction Pyramid) において特異的興奮と非特異的抑制を分離するために用いられた。2011年、非線形関数としての正規化線形関数の使用は、教師なし事前学習を必要とせずに教師ありディープニューラルネットワークの訓練を可能にすることが示されている。正規化線形ユニットは、シグモイド関数または類似の活性化関数と比較して、大きく複雑なデータセット上のディープニューラル構造のより速く、効率的な訓練を可能にする。 原点において微分不可能 しかしながら、その点以外ではどこでも微分可能であり、入力が0の点を埋めるために0または1の値を任意に選ぶことができる。 原点を中心としていない 有界でない Dying ReLU問題 ReLUニューロンは、実質的に全ての入力に対して不活性となる状態に入り込むことがあり得る。この状態において、勾配はこのニューロンを通って逆方向に流れないため、このニューロンは永久に不活性な状態で動かなくなり、「死」んでしまう。これは勾配消失問題の一種である。ある場合において、ネットワーク中の多くのニューロンが死状態で動かなることがありえて、これはモデル容量を著しく低下させる。この問題は高過ぎる学習率が設定されている時に典型的に起こる。代わりに、x = 0の左側に小さな正の勾配を割り当てるリーキーReLUを用いることによって問題を緩和することができる。