活性化関数(Activation Function)
Activation Function
概要
活性化関数(Activation Function)とは、ニューラルネットワークの各ニューロンにおいて、入力の重み付き和に対して適用される非線形関数のことです。活性化関数の最も重要な役割は、ネットワークに非線形性を導入することです。もし活性化関数がなければ、どれだけ層を深くしても全体として線形変換にしかならず、複雑なパターンを学習することができません。
ディープラーニングにおいては、活性化関数の選択がモデルの学習効率や精度に大きく影響します。歴史的にはsigmoid関数やtanh関数が使われていましたが、勾配消失問題の発見以降、ReLU(Rectified Linear Unit)が主流となりました。また、出力層では解きたいタスクに応じてsigmoidやSoftmaxが使い分けられます。
詳細解説
sigmoid関数
sigmoid関数は、入力値を0から1の範囲に変換する関数です。数式は σ(x) = 1 / (1 + e^(-x)) で表されます。出力が確率として解釈しやすいため、初期のニューラルネットワークで広く使用されました。しかし、入力の絶対値が大きい領域では勾配がほぼゼロとなる「勾配消失問題(Vanishing Gradient Problem)」が発生します。これにより、層が深くなると学習がうまく進まなくなるため、中間層での使用は現在では推奨されていません。出力層では二値分類タスクにおいて依然として使われています。
tanh関数(双曲線正接関数)
tanh関数は、入力値を-1から1の範囲に変換する関数です。sigmoidと比較して出力が原点を中心に対称であるため、学習が効率的に進みやすいという利点があります。しかし、sigmoid関数と同様に入力の絶対値が大きい領域で勾配消失問題が発生するため、深いネットワークの中間層には向いていません。RNNの内部ゲートなどで使用されることがあります。
ReLU関数(Rectified Linear Unit)
ReLU関数は、f(x) = max(0, x) という非常にシンプルな関数です。入力が正であればそのまま出力し、負であれば0を出力します。2012年のAlexNetでの採用以降、ディープラーニングの中間層における標準的な活性化関数となりました。ReLUの主な利点は、正の領域で勾配が常に1であるため勾配消失問題が起きにくいこと、計算が非常に高速であることです。
一方、入力が負の場合に出力が常に0となるため、その後の学習で該当するニューロンが永久に活性化しなくなる「Dead ReLU問題」(dying ReLU)が知られています。
Leaky ReLU・PReLU
Leaky ReLUは、Dead ReLU問題を緩和するために提案された変種です。入力が負の場合にも小さな勾配(例えば0.01x)を持たせることで、すべての入力域で学習が可能になります。PReLU(Parametric ReLU)は、この負の領域の傾きをパラメータとして学習するバージョンです。He et al.(2015年)のResNetの研究で注目を集めました。
Softmax関数
Softmax関数は、多クラス分類問題の出力層で使用される活性化関数です。複数の出力値を確率分布に変換し、すべての出力の合計が1になるようにします。各出力は対応するクラスに属する確率として解釈できます。交差エントロピー損失関数と組み合わせて使用されるのが一般的です。
出力層での活性化関数の使い分け
出力層の活性化関数は、タスクの種類に応じて選択します。二値分類ではsigmoid関数を使い、出力を0から1の確率値として解釈します。多クラス分類ではSoftmax関数を使い、各クラスの確率を出力します。回帰問題では活性化関数を適用しない(恒等関数)ことが一般的です。
歴史・背景
初期のニューラルネットワーク研究(1980〜90年代)では、sigmoid関数やtanh関数が標準的に使われていました。しかし、ネットワークの層を深くすると勾配消失問題により学習が困難になるという課題が、ディープラーニングの発展を阻む大きな障壁でした。
2010年にXavier Glorotらが発表した論文で、ReLU関数の有効性が理論的に示されました。そして2012年、Alex Krizhevskyらが画像認識コンペティションILSVRCにおいてReLUを採用したAlexNetで圧倒的な成績を収めたことで、ReLUはディープラーニングの標準的な活性化関数として広く認知されるようになりました。
その後もELU、SELU、Swish、GELUなど新しい活性化関数が提案されています。特にGELU(Gaussian Error Linear Unit)は、BERTやGPTなどのTransformerベースのモデルで採用され、近年注目を集めています。
具体的な事例
- 画像認識モデル(CNN):中間層にReLU、出力層にSoftmaxを使用するのが標準的な構成です。AlexNet、VGGNet、ResNetなどの代表的なCNNアーキテクチャはすべてReLUを採用しています。
- 二値分類(スパム判定など):出力層にsigmoid関数を使用し、0.5を閾値としてスパムか否かを判定します。
- 自然言語処理(Transformer):BERTではGELU関数が中間層の活性化関数として採用されています。GPTシリーズでもGELUが使用されています。
- RNNの内部構造:LSTMやGRUのゲート機構にはsigmoid関数が使われ、セル状態の更新にはtanh関数が使われています。これは各ゲートの出力を0〜1の範囲に制御する必要があるためです。
- 生成モデル(GAN):生成器の出力層にtanh関数を使い、-1から1の範囲の画像を生成するケースがあります。
G検定での出題ポイント
G検定では、活性化関数に関して以下のような内容が出題される傾向があります。
- 活性化関数が非線形変換を行うことでネットワークの表現力を高める役割
- sigmoid関数と勾配消失問題の関係
- ReLUが2012年以降主流になった理由とその特徴
- 出力層での活性化関数の使い分け(二値分類→sigmoid、多クラス分類→Softmax、回帰→恒等関数)
- Dead ReLU問題とLeaky ReLUによる解決策
- 各活性化関数の出力範囲(sigmoid: 0〜1、tanh: -1〜1、ReLU: 0〜∞)
- 活性化関数がない場合、多層ネットワークでも線形変換にしかならないことを理解する
- sigmoid関数は勾配消失問題を引き起こすため、中間層ではReLUが推奨されることを覚える
- 出力層の活性化関数はタスクに応じて選択する:二値分類はsigmoid、多クラス分類はSoftmax、回帰は恒等関数
- ReLUの問題点としてDead ReLU(dying ReLU)があり、Leaky ReLUで対策できることを押さえる
- Softmax関数の出力はすべてのクラスの確率の合計が1になる性質を理解する