活性化関数とは

かっせいかかんすう

ニューラルネットワークの各ニューロンで、入力の重み付きの和(とバイアス)に対して適用する関数。非線形な関数を使うことで、層を重ねたネットワークが複雑な関係を表せるようになる。隠れ層ではReLUがよく使われ、出力層では2クラス分類にシグモイド関数、多クラス分類にソフトマックス関数、回帰には恒等関数(何もしない関数)を使うことが多い。

「活性化関数」は、2分野の5問の練習問題に出てきます(機械学習の基礎, AIハードウェアとソフトウェアスタックなど)。

この用語の分野: 機械学習の基礎

なぜ非線形な関数が必要か

活性化関数を使わない(恒等関数を使う)と、各層は行列の掛け算とベクトルの足し算だけになります。線形な変換を何回重ねても1つの線形な変換にまとめられるので、層をいくら深くしても、表せるのは入力の1次式だけです。非線形な活性化関数をはさむことで、XORのような1本の直線で分けられない関係や、さらに複雑な関係も表せるようになります。

代表的な関数

シグモイド関数 σ(z) = 1 ÷ (1 + e^(−z)) は出力が0から1の間に収まり、確率として扱えます。tanhは出力が−1から1の間に収まり、0を中心とした値になります。ReLU(z) = max(0, z) は、正の入力はそのまま、0以下の入力は0を出力する単純な関数で、計算が軽く勾配が消えにくいので、深いネットワークの隠れ層で標準的に使われています。ReLUを滑らかにしたGELUなどの関数もよく使われます。

勾配消失との関係

シグモイド関数やtanhは、入力の絶対値が大きいと出力が一定の値に張り付き、微分がほとんど0になります。シグモイド関数の微分は最大でも0.25なので、層を重ねると逆伝播で勾配が掛け算で小さくなり、入力に近い層が学習しにくくなります(勾配消失)。ReLUは正の範囲で微分が1なので、勾配が小さくなりにくい性質があります。一方で、入力がいつも負になったニューロンは勾配が0のままで学習が止まるので、負の範囲にも小さな傾きを持たせたLeaky ReLUなどもあります。

活性化関数の練習問題に挑戦

多くの層を重ねたニューラルネットワークで、活性化関数にシグモイド関数を使うと、入力に近い層の学習が進みにくくなる理由として、適切なものはどれか。

  1. Aシグモイド関数の微分は最大でも0.25なので、逆伝播で層を通るたびに勾配が小さくなり、入力に近い層ではほとんど0になるから
  2. Bシグモイド関数は出力が0から1の範囲に収まらないので、層を通るたびに値が大きくなり、計算があふれてしまうから
  3. Cシグモイド関数には微分できない点があるので、逆伝播で勾配を求められない層が出てくるから
答えと解説を見る

正解:A. シグモイド関数の微分は最大でも0.25なので、逆伝播で層を通るたびに勾配が小さくなり、入力に近い層ではほとんど0になるから

逆伝播では、各層の活性化関数の微分が勾配に次々と掛け合わされます。シグモイド関数の微分は σ(z)(1 − σ(z)) で最大でも0.25なので、例えば10層を通ると 0.25¹⁰ ≈ 9.5 × 10⁻⁷ と、勾配は非常に小さくなります。これを勾配消失と呼びます。対策として、正の範囲で微分が1になるReLUを使う、層を飛び越えて信号を伝える残差接続(スキップ接続)を入れる、重みの初期値を工夫する、バッチ正規化を使う、といった方法があります。

よくある質問

ソフトマックス関数は活性化関数ですか?

多クラス分類の出力層で使う活性化関数の一つとして扱われます。ほかの活性化関数がニューロンごとに別々に計算するのに対し、ソフトマックス関数は出力層のすべての値を使って、合計が1になる確率に変換する点が違います。

半導体の製造工程の「活性化」と関係がありますか?

関係はありません。ニューラルネットワークの活性化関数は、神経細胞が興奮する(発火する)様子をまねたことに由来する用語です。半導体の製造工程の活性化は、イオン注入した不純物を熱処理で結晶の格子の位置に入れ、キャリアを生む状態にすることを指します。

解説の中の「活性化関数」

「活性化関数」が出てくる問題(5問)

  1. 多くの層を重ねたニューラルネットワークで、活性化関数にシグモイド関数を使うと、入力に近い層の学習が進みにくくなる理由として、適切なものはどれか。
  2. AIの計算で使われる「演算の融合(オペレータフュージョン)」の主な目的はどれか。
  3. AIのフレームワークやコンパイラで使われる「計算グラフ」の説明として正しいものはどれか。
  4. 入力層と出力層だけからなる単純パーセプトロン(しきい値で0か1を出力する1つのニューロン)で表せない論理関数はどれか。
  5. 入力が x₁ = 1、x₂ = 2 の小さなニューラルネットワークで、隠れ層の2つのニューロンが h₁ = ReLU(x₁ + x₂ − 1)、h₂ = ReLU(x₁ − 2x₂ + 1)、出力が y = 2h₁ + 3h₂ + 1 である。yの値はどれか。

機械学習の基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

半導体・電子回路・情報の計算ツール

関連する用語

逆伝播 演算の融合 計算グラフ 過学習 強化学習 教師あり学習 教師なし学習 k平均法 交差検証 勾配降下法

用語集の一覧へ