💨
【ディープラーニング基礎⑩】活性化関数
はじめに
今回は活性化関数について説明します。ニューラルネットワークでは各ノードの入力を活性化関数により変換します。代表的な活性化関数について説明します。
活性化関数とは
活性化関数は、ニューラルネットワークにおいてノード(ニューロン)の出力を非線形に変換するための関数です。非線形変換を行うことで、ネットワークが複雑な関数を学習できるようになります。
活性化関数の条件
-
スケールが大幅に変わらない
入力のスケールを極端に歪めず、学習の安定性を保つ。 -
微分可能
誤差逆伝播法で微分を利用するため、滑らかな関数である必要がある。 -
非線形関数
モデルが線形変換では表現できない複雑な関数を学習するため。
具体例
1. ReLU関数(Rectified Linear Unit)
-
概要
入力値が0以下のときは0、0より大きい場合はそのまま出力する関数。シンプルかつ計算コストが低いため、広く利用されている。 -
定義
\text{ReLU}(x) = \max(0, x) -
特徴
- 計算が簡単で高速。
- 勾配消失問題を軽減する。
- 0以下の値が切り捨てられるため「死んだニューロン問題」が発生する場合がある。
-
派生例
-
LReLU(Leaky ReLU)
負の値を完全にゼロにするのではなく、小さな傾きを持たせたもの。\text{LReLU}(x) = \begin{cases} x & (x > 0) \\ \alpha x & (x \leq 0) \end{cases} (通常
は1以外で自分で決定する。)\alpha -
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 にスケールされるS字型の非線形関数。シグモイド関数に似ているが、出力が中心化されており、学習が安定しやすい。1 -
定義
\text{Tanh}(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} -
特徴
- 出力値は[-1,1]。
- 深層ネットワークでは勾配消失問題が発生しやすい。
- シグモイドと似ている。
-
シグモイドとの比較
- シグモイドの出力範囲は
、Tanhは[0, 1] 。[-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}} -
特徴
- 確率分布に使用されるため、出力は常に
の範囲に収まり、合計が1になる。[0, 1] - 主に分類問題の出力層で使用され、各クラスに属する確率を表現する。
- ソフトマックス関数はクロスエントロピー損失関数と組み合わせて使用されることが一般的。
- 確率分布に使用されるため、出力は常に
Discussion