1行定義
シグモイド関数とは、どんな実数の入力も0から1の間の値に変換する、なめらかなS字形の関数のことです。
くわしく
シグモイド関数は、入力を0から1の間の値に押し込める関数です。ニューラルネットワークでは、標準シグモイド関数(ロジスティック関数)σ(x) = 1 / (1 + e^(−x))を指すのが普通です。入力が0のとき0.5を出力し、入力が大きくなるほど1に、小さくなるほど0に近づきます。
使われる場面
出力が0から1に収まるので、確率として読めます。そのため、2値分類の出力層でよく使われます。たとえば「このメールが迷惑メールである確率は0.92」のように出力し、0.5以上なら迷惑メールと判定します。ロジスティック回帰も同じ関数を使います。1枚の画像に複数のタグを付ける判定のように、クラスごとに独立して「当てはまるかどうか」を出す場合も、各出力にシグモイド関数を使います。
LSTMのゲートでも使われます。0から1の値を「情報をどれだけ通すかの割合」として使うためです。
隠れ層で使われなくなった理由
かつては隠れ層の活性化関数の定番でした。しかし、微分σ(x)(1 − σ(x))は入力が0のときに最大の0.25で、入力の絶対値が大きくなるとほぼ0になります(飽和)。誤差逆伝播法では、この小さな値が層の数だけ掛け合わされます。そのため、入力層に近い層ほど勾配が小さくなります。これが勾配消失問題です。出力が常に正で、0を中心としないことも、学習を遅くする原因の1つとされます。
現在の隠れ層ではReLU関数が主流です。出力を−1から1にしたtanh関数も、0を中心とする点でシグモイド関数より学習しやすいとされます。
ソフトマックス関数との違い
シグモイド関数は、1つの値を独立に変換します。ソフトマックス関数は、複数の値をまとめて変換し、合計が1になるようにします。複数のクラスから1つだけを選ぶ多クラス分類では、ソフトマックス関数を使います。
覚え方
「どんな値もS字で0〜1に収める」と覚えます。
G検定での出題
出題のされ方
出力が0から1になる性質と2値分類の出力層での使い方、微分の最大値が0.25であることと勾配消失問題の関係、ReLU関数・tanh関数・ソフトマックス関数との違いが問われます。
混同しやすい用語
| 用語 | 意味 |
|---|---|
| シグモイド関数このページの用語 | どんな実数の入力も0から1の間の値に変換する、なめらかなS字形の関数 |
| ソフトマックス関数 | 複数の数値をそれぞれ0から1の間の値に変換し、その合計がちょうど1になるようにする関数 |
| tanh関数 | 入力を−1から1の範囲の値に変換する、原点を中心に対称なS字形の活性化関数 |
違いを表で比べる
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
シグモイド関数に0を入力すると、0.5が出力される。
答えを見る
答え ◯ 正しい
1 / (1 + e^0) = 1 / 2です。グラフは点(0, 0.5)を中心に点対称なS字になります。
-
シグモイド関数は、入力が大きくなるほど出力も上限なく大きくなる。
答えを見る
答え × 誤り
出力は1に近づくだけで、1を超えません。出力に上限がないのはReLU関数です。
-
LSTMのゲートでは、情報をどれだけ通すかを0から1の割合で表すために、シグモイド関数が使われる。
答えを見る
答え ◯ 正しい
入力ゲート・忘却ゲート・出力ゲートは、シグモイド関数の出力を情報に掛けて、通す量を調整します。