G検定(ジェネラリスト検定)
しぐもいどかんすう
シグモイド関数
Sigmoid Function
シグモイド関数は、ニューラルネットワークの活性化関数として使われてきた関数で、Goodfellowらの教科書ではシグモイド関数を表す記号で表記され、入力が0のとき出力は1/2になります。入力の絶対値が大きい範囲では出力がほとんど変わらなくなる飽和という性質を持ち、勾配を使った学習を難しくするため、フィードフォワードネットワークの隠れ層で使うことは現在では勧められていません。
詳しい説明
シグモイド関数の式と出力の範囲
シグモイド関数は、ニューラルネットワークの各ユニットが受け取った値 を変換して出力を決める活性化関数の一つです。イアン・グッドフェロー(Ian Goodfellow)、ヨシュア・ベンジオ(Yoshua Bengio)、アーロン・クールヴィル(Aaron Courville)による教科書『Deep Learning』(2016年)の第6章では、シグモイド関数を使う活性化関数を と書き、 であることを示しています。
教科書の該当箇所は具体的な式を書いていませんが、数学で一般に使われる定義は次の式です。
ここで は自然対数の底で、およそ2.718です。 はどんな に対しても正の値になるので、分母は常に1より大きくなります。そのため出力は0より大きく1より小さい範囲に収まります。
数値を入れて確かめる
架空の入力値をいくつか入れて、式の動きを見ます。小数第5位を四捨五入しています。
入力が0のときは なので、 になります。教科書が示す と同じ値です。
入力が2のときは がおよそ0.1353なので、 でおよそ0.8808になります。
入力がのときは がおよそ7.3891なので、 でおよそ0.1192になります。
入力2と入力の出力を足すと、0.8808と0.1192で合計1になります。入力0で出力0.5を通り、正の側では1へ、負の側では0へ近づくS字の形をしていることが、この3つの値から読み取れます。
飽和とは何が起きている状態か
入力をもう少し大きくすると、出力の伸び方が変わります。
入力を0から1へ1だけ増やすと、出力は0.5からおよそ0.7311へ、およそ0.2311増えます。
入力を5から6へ同じく1だけ増やすと、出力はおよそ0.9933からおよそ0.9975へ、およそ0.0042しか増えません。入力がのときの出力もおよそ0.0067で、0にほとんど張り付いています。
このように入力の絶対値が大きい範囲で、入力を動かしても出力がほとんど変わらなくなる状態を飽和と呼びます。グッドフェローらの教科書は、シグモイド関数が定義域の大部分で飽和すると述べています。
飽和が学習にもたらす問題
ニューラルネットワークの学習では、出力の誤差を小さくする方向を勾配で求め、その方向へ重みを少しずつ動かします。入力を変えても出力がほとんど変わらない範囲では、勾配も非常に小さくなります。前の節の例でいえば、入力5付近で重みを動かしても出力は0.0042程度しか変わらないため、どちらへ重みを動かせばよいかという手がかりがほとんど得られません。
教科書は、シグモイド関数のこの広い範囲での飽和が勾配ベースの学習を非常に難しくすると述べ、そのためフィードフォワードネットワークの隠れ層で使うことは現在では勧められないとしています。
tanh関数・ReLU関数との関係
同じ教科書は、シグモイド関数に近い活性化関数としてtanh関数(双曲線正接関数)を挙げ、両者に という関係があることを示しています。入力0を当てはめると、 から となります。シグモイド関数の出力は入力0で0.5ですが、tanh関数の出力は入力0で0になる点が違います。tanh関数もシグモイド関数と同じ系統の関数として飽和の問題を持ちますが、教科書はシグモイド系の関数を使わざるを得ない場合にはtanh関数の方がシグモイド関数より良い性能を示すことが多いとしています。
隠れ層の活性化関数として教科書が既定の推奨に挙げているのは、ReLU関数(Rectified Linear Unit、整流線形関数)です。ReLU関数は と定義され、入力が正の範囲では入力をそのまま出力します。入力が5でも6でも出力はそれぞれ5と6で、入力が1増えれば出力も1増えるので、シグモイド関数のように正の側で出力が頭打ちになることはありません。
このページで確かめていないこと
グッドフェローらの教科書で確認したのは、隠れ層での使い方についての記述です。出力層でシグモイド関数がどう使われるかは、このページの根拠にした範囲では確かめていないため書いていません。
試験で問われること
G検定
- シグモイド関数は活性化関数の一つで、出力が0より大きく1より小さい範囲に収まり、入力0のとき出力は1/2になることを押さえます。
- 入力の絶対値が大きい範囲では出力がほとんど変わらなくなる飽和が起き、勾配が小さくなって勾配ベースの学習が難しくなる理由を説明できるようにします。
- 飽和の問題から、フィードフォワードネットワークの隠れ層ではシグモイド関数が勧められず、既定の推奨はReLU関数であるという関係を整理します。
- tanh関数とは の関係にあり、入力0での出力がシグモイド関数は0.5、tanh関数は0になるという違いを区別します。
最終更新日: 2026/09/23