機械学習の活性化関数

ニューラルネットワークでよく利用される活性化関数の一覧

関数名 グラフ 数式 特徴 主な用途
シグモイド関数 $\sigma(x) = \frac{1}{1 + e^{-x}}$ 出力を0から1の間に押し込めるS字カーブを描きます。確率として解釈しやすく、古くから使われてきました。 二値分類の出力層、確率の出力。
ReLU関数 $f(x) = \max(0, x)$ 計算が非常に高速で、勾配消失問題を起きにくくしたことで深層学習の発展を加速させました。現在の標準的な選択肢です。 深層学習モデルの中間層
Leaky ReLU関数 $f(x) = \begin{cases} x & \text{if } x \ge 0 \\ 0.01x & \text{if } x < 0 \end{cases}$ ReLUの派生版。入力が負でもわずかな勾配を持つため、ニューロンが完全に「死んでしまう」のを防ぎます。 ReLUで学習がうまくいかない場合の代替案
ソフトマックス関数 $\sigma(\mathbf{z})_j = \frac{e^{z_j}}{\sum_{k=1}^{K} e^{z_k}}$ 複数の出力の合計が1になるように正規化します。これにより、出力をカテゴリごとの「確率分布」として表現できます。(グラフは入力の一つを変化させた時の出力確率) 多クラス分類の出力層
Softplus関数 $f(x) = \ln(1 + e^x)$ ReLUを滑らかにしたような関数。全体で微分可能であり、出力が常に正になるという性質を持つ。 ReLUの代替、出力が必ず正の値を取るようにしたい場合
Swish関数 $f(x) = x \cdot \sigma(x)$ Googleが提案した関数。ReLUのように非線形でありながら、負の値も許容する滑らかな曲線を描き、多くの場合でReLUより高い性能を示します。 深層学習モデルの中間層(特に画像認識)
GELU関数 $f(x) \approx 0.5x(1 + \tanh(\sqrt{\frac{2}{\pi}}(x + 0.044715x^3)))$ 確率的なアプローチを取り入れた関数で、入力の大きさに応じて活性化するかどうかを滑らかに決定します。自然言語処理で絶大な成果を上げています。 Transformerベースのモデル(Gemini、GPTなど)の中間層