💨

【ディープラーニング基礎⑩】活性化関数

2024/12/26に公開

はじめに

今回は活性化関数について説明します。ニューラルネットワークでは各ノードの入力を活性化関数により変換します。代表的な活性化関数について説明します。

活性化関数とは

活性化関数は、ニューラルネットワークにおいてノード(ニューロン)の出力を非線形に変換するための関数です。非線形変換を行うことで、ネットワークが複雑な関数を学習できるようになります。

活性化関数の条件

  1. スケールが大幅に変わらない
    入力のスケールを極端に歪めず、学習の安定性を保つ。
  2. 微分可能
    誤差逆伝播法で微分を利用するため、滑らかな関数である必要がある。
  3. 非線形関数
    モデルが線形変換では表現できない複雑な関数を学習するため。

具体例

1. ReLU関数(Rectified Linear Unit)

  • 概要
    入力値が0以下のときは0、0より大きい場合はそのまま出力する関数。シンプルかつ計算コストが低いため、広く利用されている。

  • 定義

    \text{ReLU}(x) = \max(0, x)
  • 特徴

    • 計算が簡単で高速。
    • 勾配消失問題を軽減する。
    • 0以下の値が切り捨てられるため「死んだニューロン問題」が発生する場合がある。
  • 派生例

    1. LReLU(Leaky ReLU)
      負の値を完全にゼロにするのではなく、小さな傾きを持たせたもの。

      \text{LReLU}(x) = \begin{cases} x & (x > 0) \\ \alpha x & (x \leq 0) \end{cases}

      (通常 \alpha は1以外で自分で決定する。)

    2. PReLU(Parametric ReLU)
      傾き \alpha を学習可能なパラメータとして扱う。

2. シグモイド関数

  • 概要
    入力を0から1の間に圧縮するS字型の非線形関数。確率的な出力や分類問題でよく使用される。

  • 定義

    \text{Sigmoid}(x) = \frac{1}{1 + e^{-x}}
  • 特徴

    • ニューロンの出力を確率的な意味で解釈可能。
    • 微分値が常に1より小さいため、勾配消失問題が発生しやすい。(x = 0.5 のとき、微分値は最大で 0.25)
    • 出力値が[0,1]なので、ニューロンの出力を確率的な意味で解釈可能。
    • 主に出力層で利用される。

3. Tanh関数(双曲線正接関数)

  • 概要
    出力が -1 から 1 にスケールされるS字型の非線形関数。シグモイド関数に似ているが、出力が中心化されており、学習が安定しやすい。

  • 定義

    \text{Tanh}(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}
  • 特徴

    • 出力値は[-1,1]。
    • 深層ネットワークでは勾配消失問題が発生しやすい。
    • シグモイドと似ている。
  • シグモイドとの比較

    • シグモイドの出力範囲は [0, 1]、Tanhは [-1, 1]
    • 出力の中心が0に近いため、Tanhの方が勾配消失が少し軽減される。
  • Hard Tanh
    Tanhの近似的な関数で計算コストを下げるために使用。線形的に制約された形状を持つ。

    \text{HardTanh}(x) = \begin{cases} 1 & (x > 1) \\ x & (-1 \leq x \leq 1) \\ -1 & (x < -1) \end{cases}

4. ソフトマックス関数

  • 概要
    複数のクラスに対する確率分布を生成するための関数。各クラスのスコアを指数関数化し、その合計で割ることで、確率的な出力を得る。

  • 定義

    \text{Softmax}(x_i) = \frac{e^{x_i}}{\sum_{j} e^{x_j}}
  • 特徴

    • 確率分布に使用されるため、出力は常に [0, 1] の範囲に収まり、合計が1になる。
    • 主に分類問題の出力層で使用され、各クラスに属する確率を表現する。
    • ソフトマックス関数はクロスエントロピー損失関数と組み合わせて使用されることが一般的。

Discussion