活性化関数 (カッセイカカン スウ) とは | 意味や読み方など丁寧でわかりやすい用語解説
活性化関数 (カッセイカカン スウ) の読み方
日本語表記
活性化関数 (カッセイカカン スウ)
英語表記
activation function (アクティベーションファンクション)
活性化関数 (カッセイカカン スウ) の意味や用語解説
活性化関数は、ニューラルネットワークにおいて各ニューロンの出力値を決定するための重要な要素である。システムエンジニアを目指す初心者がニューラルネットワークの基礎を理解する上で、この関数の役割を把握することは必須だ。 ニューラルネットワークは、人間の脳を模倣した情報処理モデルであり、複数のニューロンが結合して構成される。各ニューロンは、前の層のニューロンからの入力を受け取り、それらを重み付けして合計し、さらにバイアスと呼ばれる値を加算する。この加算された値(加重総和)が、そのニューロンの「活性度」を示す。活性化関数は、この活性度を受け取り、次のニューロンへと伝達する最終的な出力値を生成する役割を担う。 もし活性化関数が存在しなかったり、常に線形の関数(例えば、入力値をそのまま出力する関数)だけが使われたりした場合、ニューラルネットワークは入力と出力の間に存在する線形な関係性しか学習できない。線形変換を何層にも重ねても、結局は一つの大きな線形変換と等価になってしまうからだ。この状態では、ニューラルネットワークは「AND」や「OR」のような単純な論理演算は扱えるものの、「XOR(排他的論理和)」のような非線形に分離されるべき問題を解決することができない。XOR問題は、入力が(0,0)または(1,1)のとき出力が0、入力が(0,1)または(1,0)のとき出力が1となるような問題で、直線一本では入力空間を適切に分けることができない。 ここで活性化関数の真価が発揮される。活性化関数は、この加重総和に対して「非線形」な変換を適用する。非線形変換とは、グラフで表したときに直線にならないような変換のことだ。この非線形性がニューラルネットワークに多様な表現力を与え、複雑なパターンや関係性を学習することを可能にする。非線形な活性化関数があることで、複数の層を持つニューラルネットワーク(多層パーセプトロン)は、単なる線形モデルでは解決できないような、非常に複雑な入力と出力の間のマッピングを学習できるようになる。つまり、活性化関数はニューラルネットワークが「賢くなる」ための鍵となる要素だと言える。 活性化関数にはいくつかの種類があり、それぞれ異なる特性を持つ。初期のニューラルネットワークで概念的に用いられたものに「ステップ関数(Heaviside関数)」がある。これは、入力が特定の閾値を超えたら1を、超えなければ0を出力するという単純な関数だ。しかし、この関数は微分可能ではないため、勾配降下法に基づく学習(バックプロパゲーション)には不向きであり、実用的なニューラルネットワークではほとんど使われない。 次に広く使われたのは「シグモイド関数(Sigmoid function)」だ。この関数は、あらゆる実数を入力として受け取り、0から1の間の値に圧縮して出力する。出力が確率として解釈できるため、二値分類問題の出力層などで有効だ。かつては隠れ層でも頻繁に使われたが、入力値が非常に大きいか小さい場合に勾配がほぼゼロになってしまう「勾配消失問題」という欠点があった。これにより、深いネットワークでは学習が停滞しやすくなるという課題があった。また、出力が0中心でないことも学習効率に影響を与える場合がある。 シグモイド関数の勾配消失問題を改善するために登場したのが、「ハイパボリックタンジェント関数(tanh関数)」だ。これはシグモイド関数と似ているが、出力範囲が-1から1であり、0中心である点が特徴だ。シグモイド関数よりも勾配消失問題は緩和されるものの、根本的な解決には至らなかった。 現在、多くのニューラルネットワークの隠れ層で最も一般的に使用されている活性化関数は「ReLU(Rectified Linear Unit)関数」である。ReLU関数は非常にシンプルで、入力が0より小さい場合は0を出力し、0より大きい場合は入力値をそのまま出力する。このシンプルな構造が多くの利点をもたらした。まず、入力が正の領域では勾配が常に1であるため、勾配消失問題が大幅に緩和される。これにより、深いネットワークでも効率的な学習が可能になった。また、計算コストが低く、多くのニューロンが0を出力することで「スパースな活性化」が促進され、モデルの表現力向上にも寄与すると考えられている。しかし、ReLUにも欠点があり、入力が負の値を取り続けるニューロンは常に0を出力し、勾配も常に0となるため、重みが更新されなくなり学習が停止してしまう「Dead ReLU」問題が発生する可能性がある。 このDead ReLU問題を解決するために、「Leaky ReLU」や「PReLU(Parametric ReLU)」、「ELU(Exponential Linear Unit)」といったReLUの派生関数が開発された。Leaky ReLUは、入力が負の場合でもわずかな傾き(例えば0.01)を持つことで、Dead ReLUを防ぎ、学習を継続させる。PReLUは、この負の傾きを学習可能なパラメータとして扱う。ELUは、負の領域で指数関数的な滑らかなカーブを描くことで、よりロバストな学習を促すと言われている。 最後に、多クラス分類問題の出力層でよく使われるのが「ソフトマックス関数(Softmax function)」である。これは複数のニューロンの出力を受け取り、それらを合計が1になるような確率分布に変換する。各出力値は0から1の範囲にあり、それぞれのクラスに属する確率として解釈できるため、分類問題において非常に有用だ。 このように、活性化関数はニューラルネットワークの能力を決定づける重要な要素であり、その選択はモデルの性能に大きく影響する。問題の種類、ネットワークの深さ、学習の安定性などを考慮して、適切な活性化関数を選ぶ必要がある。一般的には、隠れ層にはReLU系の関数、二値分類の出力層にはシグモイド関数、多クラス分類の出力層にはソフトマックス関数が用いられることが多い。システムエンジニアとしてAIや機械学習のシステムを構築する際には、これらの活性化関数の特性を理解し、適切に選択・利用する能力が求められる。