ディープラーニングの学習
G検定の活性化関数
G検定のシラバスには、活性化関数として、シグモイド関数、tanh関数、ReLU関数、ソフトマックス関数が並んでいます。覚えるのは、出力の範囲と、隠れ層と出力層のどちらに置くかです。
このページは、同じ入力を3つの関数に通した計算と、ソフトマックスの計算で、違いを数字で確かめます。
この記事の目次
公式情報の確認
試験日、料金、申込条件、試験方式など変動する情報は、公式情報を最終確認してください。 当サイトの一次情報確認日: 2026-10-02。
試験の出題範囲・実施要項は変動するため、受験前に公式情報を確認してください。
結論
- シグモイド = 1/(1+exp(−x))、出力は0〜1
- tanh = 出力は−1〜1で、入力0のとき0
- ReLU = max(x, 0)、負の入力は0、正の入力はそのまま
- ソフトマックス = exp(x)/Σexp(x)、出力は0〜1で合計が1
- 隠れ層はReLU、出力層は課題に合わせる(2クラスはシグモイド、3クラス以上はソフトマックス)
活性化関数が必要な理由
ニューラルネットワークの各層は、入力に重みを掛けて足し合わせる線形変換です。線形変換を何枚重ねても、全体は1つの線形変換と同じ表現力しか持ちません。Kerasは、何も変えずに入力を返す「linear」を、恒等関数の活性化として用意しています。
各層の出力に非線形の関数を通すから、層を重ねると複雑な形を表せます。微分が小さくなって学習が進まなくなる現象は勾配消失問題のページで、層の数と掛け算で計算しています。用語は活性化関数の用語集にあります。
同じ入力での出力の比較
Kerasの定義式に、入力−2、0、1、2を代入した結果です。
| 入力x | シグモイド | tanh | ReLU |
|---|---|---|---|
| −2 | 約0.119 | 約−0.964 | 0 |
| 0 | 0.5 | 0 | 0 |
| 1 | 約0.731 | 約0.762 | 1 |
| 2 | 約0.881 | 約0.964 | 2 |
シグモイドは常に0〜1、tanhは−1〜1、ReLUは0以上で上限がありません。入力0のときの出力(0.5、0、0)も、選択肢を絞るときの手がかりになります。Kerasは、シグモイドの入力が−5より小さいと出力は0に近く、5より大きいと1に近いとも述べています。 2つの関数の違いだけを詳しく見るなら、シグモイドとReLUの違いのページもあります。
ソフトマックスの計算
Kerasは、ソフトマックスを、値のベクトルを確率分布に変換する関数と説明しています。出力は0〜1で合計が1、各要素はexp(x)を全要素のexpの和で割った値です。3クラスの出力が(2, 1, 0)のとき、expの和は7.389+2.718+1≒11.107です。
| クラスの値 | expをとる | 確率 |
|---|---|---|
| 2 | e²≒7.389 | 7.389÷11.107≒0.665 |
| 1 | e¹≒2.718 | 2.718÷11.107≒0.245 |
| 0 | e⁰=1 | 1÷11.107≒0.090 |
3つの確率を足すと約1になり、値が大きいクラスほど確率が大きくなります。Kerasは、シグモイドは2要素のソフトマックスで2番目の要素を0とみなしたものと同じとも説明しています。2つの比較はソフトマックスとシグモイドの違いのページに、用語はソフトマックス関数の用語集にあります。
置く場所の対応表
活性化関数は、層の場所で選びます。次の表はこのページでの整理で、一般的な使い分けです。
| 置く場所 | 使う関数 | 理由 |
|---|---|---|
| 隠れ層 | ReLU(または改良版のLeaky ReLU) | 計算が単純で、正の入力では微分が1 |
| 出力層(2クラス分類) | シグモイド | 出力が0〜1で、確率として読める |
| 出力層(3クラス以上の分類) | ソフトマックス | 全クラスの合計が1の確率分布になる |
| 出力層(回帰) | 恒等関数(活性化なし) | 出力を0〜1などの範囲に押し込まない |
確率として読みたい出力層はシグモイドかソフトマックス、途中の層はReLU、と覚えます。ReLUの負の側に傾きを持たせたLeaky ReLUは、Kerasでは傾きの既定値が0.2です。
間違えやすい点
取り違えを、このページの例で4つ挙げます。
- tanhの出力を0〜1とする: 入力−2の出力は約−0.964で、負の値になります。
- ReLUの出力に上限があるとする: 入力2なら2、入力100なら100で、上限はありません。
- ソフトマックスの合計を1より大きいとする: (2,1,0)の確率の合計は約1です。
- シグモイドとソフトマックスを同じ場面で使う: 2クラスは1つの確率、3クラス以上は全クラスの確率分布が必要です。
「確率の合計が1」はソフトマックス、「負の値も出る」はtanhと、語から関数を引けるようにします。
問題文から読み取る
問題文の言い回しから、関数を選べます。このページの整理から導いた読み方で、出題を予想するものではありません。
- 「出力が0から1の間で、2値分類の確率に使う」とあれば、シグモイド
- 「出力が−1から1で、0を中心とする」とあれば、tanh
- 「max(x, 0)」「負の入力で0」とあれば、ReLU
- 「多クラス分類の出力層で、合計が1の確率にする」とあれば、ソフトマックス
- 「層を重ねても線形のままになるのを避ける」とあれば、非線形の活性化関数の役割
G検定の学習に使う書籍(Amazon)
試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。
よくある質問
活性化関数がないと、ニューラルネットワークはどうなりますか?
層を何枚重ねても、全体が1つの線形変換と同じになります。線形変換を重ねても線形変換のままだからです(この説明は、定義からのこのページでの整理です)。活性化関数の非線形性があるから、層を重ねる意味が出ます。
シグモイドとソフトマックスは、どう違いますか?
Kerasの公式ドキュメントは、シグモイドを「2要素のソフトマックスで、2番目の要素を0とみなしたもの」と説明しています。シグモイドは1つの値を0〜1にし、ソフトマックスはベクトル全体を、合計が1の確率分布にします。
ReLUは負の入力で出力が0になりますが、問題はないのですか?
負の入力では出力も微分も0になり、その入力に対しては重みの更新が止まります。Kerasは、負の側に傾きを持たせるLeaky ReLU(既定の傾き0.2)も提供しています。傾きを与えて、負の入力でも出力を0にしない工夫です。
tanhはシグモイドと何が違いますか?
出力範囲です。Kerasの定義式 tanh(x)=(exp(x)−exp(−x))/(exp(x)+exp(−x)) から、出力は−1〜1で、入力0のとき0になります。シグモイドは0〜1で、入力0のとき0.5です。
