IT用語集

活性化関数とは? 10分でわかりやすく解説

水色の背景に六角形が2つあるイラスト 水色の背景に六角形が2つあるイラスト
アイキャッチ
目次

UnsplashLuca Bravoが撮影した写真 

活性化関数は、ニューラルネットワークに「非線形性」を与える部品で、モデルが複雑な関係を学習できるかどうかを左右します。一方で、選び方を誤ると学習が進まない・精度が伸びない・推論が不安定になるなど、性能面で遠回りになりがちです。この記事では、活性化関数の役割から代表例の違い、実務での選び方と注意点までを整理し、読了後に「自分の課題に対してどれを試すべきか」を判断できる状態を目指します。

活性化関数とは? ニューラルネットワークの基礎知識

ニューラルネットワークは、各層で「重み付き和(線形変換)」を計算し、その結果に活性化関数を適用して次の層へ渡す、という処理の繰り返しで成り立っています。活性化関数は、各ノード(ユニット)の出力を決めるための変換であり、学習のしやすさや表現力に直接影響します。

活性化関数の役割と重要性

活性化関数は、各層で計算された値(一般に「前活性 z」)を、次の層へ渡す値(「活性 a」)へ変換します。典型的には次の流れです。

z = W x + b

a = φ(z)

もし活性化関数が無い(または恒等関数のみ)場合、層を何枚重ねても全体は結局「線形変換の合成」にとどまり、複雑なパターンを表現できません。活性化関数が入力を非線形に変換することで、ニューラルネットワークは現実のデータに多い非線形な関係を学習できるようになります。

ニューラルネットワークにおける活性化関数の位置づけ

ニューラルネットワークは、一般に次の層構造で説明されます。

  1. 入力層
  2. 隠れ層
  3. 出力層

活性化関数は主に隠れ層で使われ、出力層でもタスクに応じて使い分けます。各ノードは前の層の出力を受け取り、線形変換の後に活性化関数を適用して、次の層へ値を送ります。この処理を層ごとに重ねることで、入力データから目的の出力(分類ラベルや数値予測など)を生成します。

活性化関数を使うメリット

メリット説明
非線形性の導入線形変換だけでは表せない複雑な関係をモデル化できるようになります。
学習のしやすさの改善関数選択によっては勾配が流れやすくなり、深いネットワークでも学習が進みやすくなります。
表現の安定化出力の範囲や分布が制御しやすくなり、最適化の挙動が安定する場合があります(例:ゼロ中心化、飽和の回避)。

活性化関数を使わない場合のデメリット

  • モデル全体が実質的に線形モデルになり、複雑なパターンを学習できません。
  • 誤差を減らすための更新が有効に働かず、精度が伸びにくくなります。
  • タスクによっては出力範囲が制御できず、損失関数や評価指標と整合しないことがあります。

そのため、ニューラルネットワークでは「どの層で、どの活性化関数を使うか」を前提として設計することが基本になります。

代表的な活性化関数の種類と特徴

活性化関数には多くの選択肢がありますが、実務で頻出なのは「シグモイド」「tanh」「ReLU系」「Softmax(出力層)」です。ここではそれぞれの性質と、どんな場面で使われやすいかを整理します。

シグモイド関数の特徴と数式

シグモイド関数は次式で表されます。

σ(x) = 1 / (1 + e^{-x})

  • 出力が0〜1に収まる(確率のように解釈しやすい)
  • 微分可能で、勾配に基づく最適化が行える
  • 入力が大きい正/負になると出力が飽和し、勾配が小さくなりやすい(深層では学習が進みにくい要因になります)

二値分類の出力層で「確率」を出したいときに、シグモイドがよく使われます。一方、隠れ層での多用は、勾配が弱くなりやすいため、現在は避けられることが一般的です(設計や正規化次第で使うケースはあります)。

ReLU関数の特徴と数式

ReLU(Rectified Linear Unit)は次式で表されます。

ReLU(x) = max(0, x)

  • 計算が軽く、大規模モデルでも扱いやすい
  • 正の領域で勾配が一定のため、深いネットワークでも学習が進みやすい傾向がある
  • 負の領域で出力が0固定になり、学習が止まるユニットが出ることがある(いわゆる「死ニューロン」)

ReLU系は隠れ層の標準的な選択肢で、特にCNNなどの画像系モデルで広く使われます。ただし「常に最善」ではなく、学習率や初期化、正規化(BatchNorm等)、データ分布によっては不安定になることもあるため、代替案を持っておくと設計が楽になります。

tanh関数の特徴と数式

tanh(双曲線正接)は次式で表されます。

tanh(x) = (e^x - e^{-x}) / (e^x + e^{-x})

  • 出力が-1〜1に収まる
  • ゼロ中心(平均0付近)になりやすく、勾配降下の更新が安定する場合がある
  • 入力が大きいと飽和し、勾配が小さくなりやすい

tanhはシグモイドよりゼロ中心という利点があり、古典的なRNNや一部のゲート構造の内部で広く使われてきました。ただし、深層化したネットワークの隠れ層では飽和による学習の停滞が起きることがあるため、設計の意図に合わせて使い分けることが重要です。

その他の活性化関数

ReLUの弱点(死ニューロン、滑らかさ、負の領域の表現)を補う目的で、さまざまな派生が使われます。

活性化関数特徴
Leaky ReLU負の領域にも小さな傾きを持たせ、死ニューロンを起こしにくくします(傾き係数は調整対象になりえます)。
ELU負の領域で指数的に飽和し、出力の平均を0付近に寄せやすい設計です(係数を持つため設定次第で挙動が変わります)。
Swishx * σ(x) の形をとる滑らかな関数で、ReLUより良い結果が出るケースが報告されています(ただし常に優位とは限りません)。
MishSwish系の滑らかさを活かした関数で、タスクによって性能改善が見られることがあります。
GELU入力を確率的に通す発想に近い滑らかな関数で、Transformer系の一部実装で採用されています。

「どれが最強か」ではなく、「学習が止まっている原因(勾配が弱い、発散する、表現が足りない)に対して、どの性質が効くか」で候補を選ぶのが現実的です。

活性化関数の選び方とハイパーパラメータ調整

活性化関数は、モデル構造・損失関数・データ分布・正規化(BatchNorm等)とセットで効きます。ここでは、現場で迷いがちな「まず何を選ぶか」「どこを調整するか」を判断できるように整理します。

活性化関数の選択基準

  • タスクと出力要件:出力が確率なのか、実数値なのか、クラス数はいくつか
  • 学習の安定性:勾配が流れるか、発散しないか、初期化や学習率に敏感すぎないか
  • 計算コスト:推論速度や学習時間、実行環境(CPU/GPU/端末)の制約
  • 過学習との関係:モデルが強すぎて過学習する場合は、活性化だけでなく正則化やデータ拡張も含めて設計する

活性化関数は万能薬ではありませんが、「学習が進む/進まない」の境界を跨ぐ要因になりやすいため、優先度の高い設計ポイントです。

問題に合わせた活性化関数の選び方

実務でまず押さえるべき「定番の組み合わせ」は次のとおりです。

問題の種類推奨される活性化関数
二値分類(出力が1/0)出力層:シグモイド(隠れ層:ReLU系が一般的)
多クラス分類(排他的なクラス)出力層:ソフトマックス(隠れ層:ReLU系が一般的)
多ラベル分類(複数ラベルが同時に立つ)出力層:シグモイドをラベル数分(隠れ層:ReLU系が一般的)
回帰(実数予測)出力層:恒等関数(必要なら範囲制約のためtanh等)(隠れ層:ReLU系が一般的)
画像認識(CNN)隠れ層:ReLU / Leaky ReLU / Swishなどを比較検討
自然言語処理(Transformer系)隠れ層:GELUが採用される実装が多い(ReLU/Swish系と比較されることもあります)

なお、RNN/LSTM/GRUなどの系列モデルでは、内部にtanhやシグモイドが組み込まれている構造が一般的です。モデル内部の活性化をむやみに置き換えるより、まずは学習率、正規化、勾配クリッピング、重み初期化とセットで調整すると改善しやすいです。

活性化関数のハイパーパラメータ調整のコツ

活性化関数そのものにハイパーパラメータがある場合(例:Leaky ReLUの負側の傾き、ELUの係数)は、次の観点で調整します。

  1. まず「隠れ層はReLU系」で基準モデルを作り、学習が進むか(損失が下がるか)を確認する
  2. 死ニューロンや学習停滞が疑われる場合は、Leaky ReLUやELUなどに切り替えて比較する
  3. 学習が不安定(発散・振動)なら、活性化の前に正規化を入れる、学習率を下げる、勾配クリッピングを検討する
  4. 探索はグリッドサーチより、まず少数候補のランダムサーチが現実的(試行回数と計算資源のバランスを取りやすい)

「活性化関数を変えたら良くなった/悪くなった」を判断するには、同一条件で学習曲線(損失・精度)を比較し、再現性(複数seed)も意識することが重要です。

活性化関数の使い分けによる性能向上の考え方

活性化関数の使い分けが効くのは、主に次のような局面です。

  • 学習が進まない:飽和や勾配の弱さが疑われる(ReLU系への変更、正規化、初期化の見直し)
  • 学習は進むが精度が伸びない:表現力や最適化の問題が疑われる(Swish/GELU等を試す、正則化やデータ品質を見直す)
  • 推論が重い:計算量と精度のトレードオフがある(ReLU系に寄せる、量子化や蒸留を検討する)

たとえば画像系では、ReLUからLeaky ReLUへ変えることで死ニューロンが減り、学習が安定することがあります。言語系では、実装標準に合わせてGELUを採用し、学習率やウォームアップとセットで調整することで収束が安定するケースが見られます。重要なのは「流行の関数」ではなく「いまの症状に対して何が効くか」を仮説として持つことです。

活性化関数の最新研究動向と応用事例

近年は、ReLUの扱いやすさを維持しつつ、滑らかさ・負の領域の表現・最適化の安定性を改善する活性化関数が継続的に提案されています。ただし、タスクやモデル規模、正規化の有無によって効果は変わるため、「必ず優れる」とは言い切れません。ここでは、よく名前が挙がる関数と、使われやすい文脈を整理します。

近年提案された活性化関数の例

  • Swish:x * σ(x) の形で滑らかに振る舞い、ReLUより良い結果が出るケースが報告されています。
  • Mish:滑らかさと非単調性を併せ持つ設計で、タスクによって改善が見られることがあります。
  • GELU:Transformer系の一部で採用され、学習の安定性や性能面で好まれることがあります。

「新しい関数=高性能」とは限らないため、採用時はベースライン(ReLU系)との比較と、推論コストの確認までをセットで行うのが実務的です。

活性化関数の応用事例:画像認識

画像認識では、CNNやVision Transformerなどで活性化関数が性能と学習安定性に影響します。

  • ReLU:高速で堅実な選択肢。まずの基準として使われやすいです。
  • Leaky ReLU:死ニューロンが疑われるときの代替案として有効です。
  • Swish系:モデルや学習設定によっては精度が伸びることがありますが、計算コストや実装差の影響も確認が必要です。

画像系はデータ拡張・正規化・学習率スケジュールの影響も大きいため、活性化関数だけを単独で評価しないことが重要です。

活性化関数の応用事例:自然言語処理

自然言語処理では、Transformer系のモデルにおいて活性化関数が内部表現の学習に影響します。

  • GELU:Transformer系の代表的な実装で採用されることが多いです。
  • ReLU/Swish:研究や実装によって比較検討されることがあります。

NLPでは活性化関数に加えて、正規化方式、残差接続、学習率のウォームアップなどが収束に強く効くため、総合設計として判断する必要があります。

活性化関数の応用事例:時系列データ予測

時系列予測では、RNN/LSTM/GRUやTemporal CNN、Transformer系など複数の系統があります。活性化関数は重要ですが、系列モデルでは構造由来の安定化手段も同時に検討することが多いです。

  • LSTM/GRU:内部でtanhやシグモイドが使われる構造が一般的で、勾配安定化のために勾配クリッピングが併用されることがあります。
  • Temporal CNNなど:隠れ層はReLU系が標準的で、学習停滞時にLeaky ReLU等が候補になります。
  • Transformer系:GELUなどが採用されることがあります。

時系列ではデータのスケーリング、欠損処理、外れ値、リーク(未来情報の混入)も精度に直結するため、活性化関数の前に前処理と評価設計を点検することが、結果的に近道になります。

よくある失敗パターンと対処の考え方

活性化関数の話題は「関数の比較」に寄りがちですが、実務では「なぜ学習がうまくいかないのか」を切り分けることが先です。ここでは、活性化関数と関係が深い典型的な症状を整理します。

勾配消失と飽和

シグモイドやtanhは、入力が大きくなると出力が飽和し、勾配が小さくなりやすい性質があります。深いネットワークで隠れ層に多用すると、手前の層がほとんど更新されず学習が停滞することがあります。対策としては、ReLU系の採用、正規化の利用、重み初期化や学習率の調整などを組み合わせます。

死ニューロン

ReLUは負の領域で勾配が0になるため、学習中に特定ユニットが常に負側に入り続けると、そのユニットが実質的に働かなくなることがあります。Leaky ReLUなど「負側にも傾きを持つ」関数への変更や、学習率の見直しが対策候補です。

出力層の選択ミス

分類問題で出力層を恒等関数のままにすると、確率解釈ができず損失関数との整合が崩れることがあります。二値分類はシグモイド、多クラス分類はソフトマックス、多ラベル分類はラベルごとのシグモイドが基本です。回帰は恒等関数が基本ですが、値域制約がある場合はtanh等を使うこともあります。

まとめ

活性化関数は、ニューラルネットワークに非線形性を与え、複雑な関係を学習するための中核要素です。隠れ層ではReLU系が標準的な出発点になり、課題がある場合にLeaky ReLU、ELU、Swish、GELUなどを比較検討します。出力層はタスク要件(確率、クラス数、値域)に合わせて選ぶ必要があり、損失関数や評価設計とも整合させることが重要です。活性化関数は単独で万能ではないため、正規化、学習率、初期化、データ前処理とセットで「いまの症状に何が効くか」を判断しながら最適化していくのが現実的です。

Q.活性化関数はなぜ必要ですか?

ニューラルネットワークに非線形性を与え、線形モデルでは表せない複雑な関係を学習できるようにするためです。

Q.隠れ層の定番はどれですか?

まずはReLU系が定番で、学習停滞や死ニューロンが疑われる場合はLeaky ReLUやELUなどを試します。

Q.シグモイドはどこで使うのが一般的ですか?

二値分類の出力層で確率を出したいときに使うのが一般的です。

Q.多クラス分類の出力層は何を使いますか?

ソフトマックスを使うのが基本です。

Q.回帰問題では活性化関数を使わないのが正解ですか?

出力層は恒等関数が基本ですが、値域制約が必要ならtanhなどを使う場合があります。

Q.勾配消失は活性化関数で必ず解決できますか?

必ずではありませんが、ReLU系の採用や正規化・初期化・学習率調整と組み合わせることで改善することがあります。

Q.死ニューロンとは何ですか?

ReLUで負の領域に固定されて出力と勾配が0になり、そのユニットが学習に寄与しなくなる状態です。

Q.SwishやGELUはReLUより常に優れますか?

常にではなく、タスクやモデル、学習設定によって優劣が変わるためベースライン比較が必要です。

Q.活性化関数を変えるとき、何を基準に評価すべきですか?

同一条件での学習曲線、最終精度、収束の安定性、推論コストをセットで比較します。

Q.活性化関数以外で学習が改善する代表的な手段は何ですか?

正規化、学習率スケジュール、重み初期化、勾配クリッピング、データ前処理の見直しが代表例です。

記事を書いた人

ソリトンシステムズ・マーケティングチーム