1行定義
活性化関数とは、ニューラルネットワークの各ユニットで、入力の重み付き和にバイアスを加えた値を変換し、そのユニットの出力を決める関数のことです。
試験範囲としての全体像はシラバス項目『活性化関数』の要点まとめで整理しています。
くわしく
活性化関数は、ニューラルネットワークの各ユニット(ニューロン)が、受け取った信号をどのような値に変えて次へ渡すかを決める関数です。
全結合層とセットで働く
全結合層では、まず入力に重みを掛けて足し、バイアスを加えます。式で書くとu = Wx + bで、これは線形関数です。このuを活性化関数fに通したf(u)が、次の層への出力になります。
線形関数だけを何層重ねても、全体は1つの線形関数と同じになります。たとえばy = 2(3x)はy = 6xと同じです。隠れ層に非線形の活性化関数をはさむことで、層を重ねるほど複雑な関係を表せるようになります。CNNの畳み込み層の後にも、同じ理由で活性化関数をはさみます。
隠れ層で使う関数
初期のパーセプトロンは、0か1を出すステップ関数を使っていました。誤差逆伝播法で学習するには微分が必要なため、なめらかなシグモイド関数やtanh関数に置き換わりました。しかし、これらは入力の絶対値が大きいと微分が0に近づき、勾配消失問題の原因になります。
現在は、正の入力をそのまま通すf(u) = max(0, u)のReLU関数や、その改良であるLeaky ReLU関数が広く使われています。計算が軽く、正の範囲では微分が1なので勾配が小さくなりにくいためです。
出力層で使う関数
出力層では、答えの形に合わせて選びます。
- 回帰:恒等関数(値をそのまま出す)
- 2値分類や複数ラベルの判定:シグモイド関数(各出力が0〜1)
- 多クラス分類:ソフトマックス関数(出力の合計が1)
覚え方
「隠れ層は学びやすさ、出力層は答えの形で選ぶ」と覚えます。
G検定での出題
出題のされ方
シグモイド関数・tanh関数・ReLU関数などの形と微分の性質、全結合層の線形変換に非線形の関数を組み合わせる理由、出力層でタスクに応じて恒等関数・シグモイド関数・ソフトマックス関数を使い分けることが問われます。
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
1つのネットワークの中では、隠れ層と出力層に同じ種類の活性化関数を使わなければならない。
答えを見る
答え × 誤り
隠れ層では学習のしやすさからReLU関数などを使い、出力層では回帰なら恒等関数、多クラス分類ならソフトマックス関数のように、答えの形に合わせて別の関数を選びます。
-
誤差逆伝播法で勾配を求めるときには、各ユニットの活性化関数の微分の値が使われる。
答えを見る
答え ◯ 正しい
連鎖律により、出力層から入力層へ勾配を伝える途中で、各層の活性化関数の微分が掛け合わされます。微分が0に近い値ばかりだと、勾配消失問題が起きます。
-
活性化関数は全結合層だけで使われ、CNNの畳み込み層の出力には使われない。
答えを見る
答え × 誤り
畳み込み層でも、フィルタで計算した値にバイアスを加え、ReLU関数などの活性化関数に通してから次の層へ渡すのが一般的です。
この用語の練習問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目12 活性化関数)
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目17 全結合層)
- Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning, MIT Press (2016) (6.2.2 Output Units、6.3 Hidden Units)
- Xavier Glorot, Antoine Bordes, Yoshua Bengio, Deep Sparse Rectifier Neural Networks, AISTATS 2011, PMLR 15:315–323