活性化関数は、ニューラルネットワークに非線形性を与える部品です。これがないと、層をいくら深くしても意味がなくなります。
こんにちは、zawato(@zawato7)です!
本記事はディープラーニング入門ロードマップの第10回です。
- 活性化関数がなければ深い層に意味がなくなる理由
- 中間層でシグモイド関数からReLUへ主役が移った背景
- 出力層は回帰・二値分類・多クラス分類で使う関数が変わること
活性化関数がないと、何層重ねても1層と同じ
活性化関数の最大の役割は、ネットワークに非線形性を持ち込むことです。ニューロンは入力に重みをかけて足し合わせ、バイアスを足します。これは直線的(線形)な計算で、線形な処理をいくつつなげても、結果は1本の線形な処理にまとまってしまいます。
拡大コピーを何度繰り返しても「まとめて何倍にしたか」の1回分で表せるのと同じです。つまり活性化関数がなければ、10層のネットワークも1層と同じ表現力しか持てません。
そこで層と層の間に非線形な変換を挟みます。中間層の活性化関数に求められる条件は非線形であることと微分可能であることの2つです。
中間層の活性化関数|ステップ関数からReLUへ
中間層の活性化関数は、シグモイド関数からReLUへと主役が交代してきました。もっとも古いのがステップ関数で、閾値を超えたら1、超えなければ0を返します。神経の発火を模した形ですが、段差の部分が微分できず、多層の学習には使えませんでした。
そこで登場したのが、ステップ関数をなめらかにしたシグモイド関数で、出力は0〜1に収まります。似たものにtanh(ハイパボリックタンジェント)があり、こちらは-1〜1に変換します。どちらもかつては中間層の定番でした。
現在の主流はReLU(ランプ関数)です。入力が0以下なら0、0より大きければそのまま通すという、拍子抜けするほど単純な関数です。シグモイド関数は微分した値が最大でも0.25と小さく、層を深くするほど学習に使う値が小さくなってしまいます。ReLUは0より大きい範囲の微分値が1のままなので、深くしても学習が進みます。
派生形もあります。Leaky ReLU(リーキーReLU)は、0以下をすべて0にせず、わずかな割合だけ値を通すものです。
出力層の活性化関数はタスクで決まる
ここまでは中間層の話で、出力層の活性化関数は解きたいタスクで機械的に決まります。中間層と出力層をまとめて覚えようとするとつまずきやすい箇所です。「中間層は性能のため、出力層は答えの形を整えるため」と役割を分けると混乱しません。
| タスク | 出力層の活性化関数 | 出力の意味 |
|---|---|---|
| 回帰 | 恒等関数 | 数値そのもの |
| 二値分類 | シグモイド関数 | 0〜1の確率 |
| 多クラス分類 | ソフトマックス関数 | 合計1になる各クラスの確率 |
売上や気温を当てる回帰では、予測値をそのまま出したいので恒等関数を使います。入ってきた値を変えずに返すだけの、実質「何もしない」関数です。
雨が降るか降らないかを当てる二値分類ではシグモイド関数を使います。出力が0〜1に収まり、そのまま確率として読めるからです。通常は0.5を閾値に判定します。
選択肢が3つ以上ある多クラス分類ではソフトマックス関数を使います。特徴はすべてのクラスの出力を足すと1になることで、晴れ0.7・曇り0.2・雨0.1のように確率として扱え、最も高いクラスが予測結果になります。この性質はG検定で頻出です。
まとめ
- 活性化関数がないと、何層重ねても1層分の表現力しか持てない
- 中間層はステップ関数・シグモイド関数・tanhを経て、現在はReLU系が主流
- 出力層は回帰=恒等関数、二値分類=シグモイド関数、多クラス分類=ソフトマックス関数
よくある質問
Q. なぜ活性化関数は非線形でなければいけないのですか?
A. 線形な処理をいくつつなげても1つの線形な処理にまとまり、層を深くした意味がなくなるからです。非線形な変換を挟んで初めて複雑なパターンを表現できます。
Q. ReLUが主流になったのはなぜですか?
A. シグモイド関数は微分した値が最大でも0.25と小さく、層を重ねるほど学習に使う値が小さくなります。ReLUは0より大きい範囲の微分値が1のままなので、深くしても学習が進みます。
Q. シグモイド関数はもう使われないのですか?
A. 中間層ではほとんど使われませんが、二値分類の出力層では今も現役です。出力が0〜1に収まり、確率として解釈できるという利点があるためです。
- 前の記事: ニューラルネットワークの構造
- 次の記事: ニューラルネットワークはどう学習するのか
- シリーズ全33回の目次を見る



コメント