活性化関数Activation Function

足し合わせた値を通すか決める関門を持つ関数

ポイント
  • 活性化関数は、ニューロンが掛けて足して作った値をそのまま出すか、どれくらい強く出すかを決める最後の関門です。
  • 大事なのはまっすぐな直線ではないという点です。この曲がった部分があるからこそ、直線では引けない複雑な境界を作れます。
  • この関数がないと、層をいくら重ねても結局は一つの層と同じになってしまいます。深さに意味を持たせる仕掛けです。
  • もっとも広く使われているのは、しきい値より下はすべて0に抑え込み、超えた分はそのまま流す方式です。
  • どの関数を使うかによって学習の速さや安定性が大きく変わります。 層の途中と一番最後で使う関数も違います。
目次

1たとえで理解する

マンションの廊下センサーライトはいつも消えています。人が通っても、ずっと先でちょっと動いた程度では反応しません。ある程度近づいて初めて、パッとつきます。ついた後は、明るさが落ち着くまで廊下を照らし続けます。

このライトには決まった基準があります。基準より弱い動きは、何度あってもライトをつけられません。逆に基準を超えれば、すぐに反応します。弱い信号を無視するので、風で揺れる影のたびにライトがついたり消えたりすることはありません。

活性化関数は、このセンサーライトの判断規則です。ニューロンが前から受け取った値を重みに合わせて足した結果が基準を超えなければ何の信号も送らず、超えれば超えた分だけ次のニューロンに伝えます。信号をそのまま通さず、一度ふるいにかける門番の役割です。

2くわしく

しきい値より下は抑え込み、上はそのまま流します

最近、層の途中でもっとも多く使われている方式はとても単純です。入ってきた値が0より小さければすべて0にし、0より大きければ手を加えずそのまま出します。この方式はReLUと呼ばれています。

単純なのによく機能する理由があります。計算が比較一回だけなのでとても速く、値が大きくなっても信号が弱まらずそのまま伝わります。一つの層で多くのニューロンが0を出すので、実際に計算に関わるニューロンだけが残り、全体が軽くなる効果もあります。

以前はなめらかに寝かせる方式が使われていました

しばらくの間は、入ってきた値がどれだけ大きくても結果を0から1の間に押し込む関数がよく使われていました。シグモイドが代表的です。出力が0から1の間なので、確率のように読みやすいという長所がありました。

問題は学習のときに現れました。値が少し大きくなったり小さくなったりすると関数がほとんど平らになり、入力が変わっても出力がほとんど変わりません。正解とのずれを前の層へ送り返すとき、この平らな区間を通るたびに信号が少しずつ小さくなり、前の層にはほとんど学ぶ材料が残りません。これが勾配消失です。層を深く重ね始めてから、この方式が層の途中では使われなくなった理由です。

なければ深さが無駄になります

活性化関数を抜いて掛けて足すだけをつなげたらどうなるでしょうか。掛け算と足し算だけをいくら繰り返しても、全体としては一つの掛け算と足し算にまとまってしまいます。十層重ねても百層重ねても、表現できるものは一層のモデルと同じになります。

途中に曲がった部分が一つ入るだけで、話はまったく変わります。各層が前の層の結果を折り曲げて切り、また組み合わせるので、層が増えるほど作れる境界の形がずっと複雑になります。まっすぐな刃では切り分けられないデータをニューラルネットワークが分ける力は、ここから生まれます。

一番最後の層は使う関数が違います

層の途中の関数は信号を次の層にうまく渡すことが目的ですが、最後の層の関数は人が読める形に答えを整えることが目的です。だからやることが違います。

二つのうちどちらかを選ぶ問題なら結果を0から1の間の確率のようにする関数を使い、複数の候補から一つを選ぶ問題なら候補全体の値を合計が1になるように分けるソフトマックスを使います。反対に住宅価格のように数そのものを当てる問題では、最後に何の関数もかけず、計算された値をそのまま出します。

選ぶ基準は結局学習がうまくいくかどうかです

新しい関数が出るたびに人々が確かめるのは、同じ条件で学習がより速く安定するかどうかです。0より下を完全に0にせず少しだけ残す変形や、しきい値付近をなめらかにならした変形など、少しずつ違う方式がいくつも出ています。

差はそれほど大きくないことが多いです。だから特別な理由がなければ層の途中では一番単純で速い方式を使い、学習がうまくいかないときに他の候補を試すという順番で進めます。

3もう少し正確に

活性化関数は、ニューロンの計算の最後に適用される非線形関数です。重みを掛けて足し、偏り値を加える過程はすべて線形なので、この段階がなければ複数の層を合わせた結果も一つの線形変換にまとまってしまいます。ニューラルネットワークが曲がった境界を作れるのは、この非線形性のおかげです。

センサーライトのたとえがずれる点もあります。センサーライトはついた・消えたの二状態しかありませんが、よく使われる活性化関数はついた後の強さまで一緒に伝えます。しきい値を大きく超えた値は大きく、わずかに超えた値は小さく出ます。またセンサーライトの基準は一つだけですが、ニューロンがつく地点を動かすのは関数自体ではなく偏り値です。

学習が成り立つには、この関数にもう一つ条件が必要です。誤差を送り返すには関数の勾配がわかる必要があります。0で折れ曲がる関数はその地点の勾配が定義されませんが、実際の実装では片方の値を使うと決めて進めます。値がちょうど0に落ちることはまれなので、学習には問題になりません。

4やってみる

5よくある誤解

  • 活性化関数がニューロンのオン・オフを決めるスイッチにすぎないと思われがちですが、実際にはついた後にどれくらい強く出すかまで一緒に決めます。

  • どの関数を使っても結果は似たようなものだと思われがちですが、実際には深いモデルで関数の選び方一つで学習がまったく進まなくなることもあります。

  • 活性化関数がニューロンのつく位置を決めていると思われがちですが、実際にその位置を前後に動かしているのは偏り値です。

7ひとこと要約

つまり活性化関数はニューロンが足し合わせた値を出すかどうかを決めるしきい値付きの関門で、この曲がった部分があるからこそ層を重ねる意味が生まれます。

誤りや、もっと良いたとえがありますか? 修正を提案する · 最終更新2026-09-02