目次
活性化関数とは?NNの学習と推論の仕組み
1. 活性化関数とは?
活性化関数(Activation Function)とは、ニューラルネットワークにおいて、入力されたデータを適切に変換し、次の層へ出力する関数です。
特に、ニューラルネットワークは 「重み付き入力」→「活性化関数」→「次のニューロンへ伝播」 という流れでデータを処理し、学習を進めます。
ニューラルネットワークの各ニューロンは、入力を単純に受け取るだけではなく、「重み(Weight)」と「バイアス(Bias)」を適用して、重要な情報を抽出します。そして、活性化関数が適用されることで、次のニューロンへの出力が決まります。
この活性化関数がなければ、ニューラルネットワークは単なる線形回帰モデルと同じになってしまい、複雑なパターンを学習できないため、非常に重要な役割を持っています。
2. ニューラルネットワークの学習と推論
① 訓練(Training)
ニューラルネットワークが学習する段階では、次のプロセスが行われます。
- フォワードプロパゲーション(Forward Propagation:順伝播)
- 入力データ(例:画像のピクセル値や音声の波形データ)が最初の層に入る
- 各ニューロンで「重み付き入力」が計算され、活性化関数を適用する
- 次の層にデータを送る(隠れ層 → 出力層へ)
- 出力層では、分類なら「Softmax関数」、回帰なら「ReLU関数」などが適用される
- 誤差の計算(Loss Calculation)
- 出力された結果と 正解データ(ラベル) の誤差を計算する
- 例: 「犬」と識別したが、正解は「猫」だった → 誤差が発生
- バックプロパゲーション(Back Propagation:誤差逆伝播)
- 誤差を逆向きに伝播させ、各層の 重み(Weight) を修正する
- 勾配降下法(Gradient Descent) により、最適な重みを見つける
- この作業を繰り返し、ニューラルネットワークがデータのパターンを学習する
② 推論(Inference:モデルの動作)
ニューラルネットワークの学習が終わると、「訓練済みモデル」となり、実際の予測に利用できます。このとき、新しいデータ を入力すると、学習した重みと活性化関数 に基づいて結果を出力します。
この段階では 「フォワードプロパゲーション(順伝播)」のみ が実行されます。つまり、「誤差の計算」や「重みの更新」は行われず、すでに学習済みの重みを使って、新しいデータの予測を行うだけ です。
例:画像分類の場合
- 猫の画像を入力
- フォワードプロパゲーションで、特徴を抽出して分類
- 出力層の Softmax関数 で「猫: 90%、犬: 5%、ウサギ: 5%」と確率を計算
- 「猫」として判定(最も確率の高いクラスを選択)
3. 活性化関数が果たす役割
① 重み付き入力の計算
各ニューロンにおいて、まず入力 xx に対して「重み(Weight)」と「バイアス(Bias)」を適用して、重み付き入力 zz を計算します。
ここで、
- x は入力値(例:ピクセル値、音声特徴量)
- w は各入力に対する重み(重要度を示す)
- b はバイアス(出力の調整)
② 活性化関数を適用
この「線形変換された値 zz」に対して、活性化関数 f(z) を適用することで、非線形な変換を行い、次のニューロンに伝播する値 a を決定します。
この a の値が次のニューロンの入力 となり、次々と計算が進んでいきます。
4. 活性化関数が重要な理由
活性化関数を適用することで、ニューラルネットワークには以下のような重要な性質が生まれます。
① ニューラルネットワークを非線形にする
活性化関数がなければ、ニューラルネットワークはすべて線形変換の連続 となり、深い層を作っても単なる線形回帰と同じ結果しか得られません。
しかし、活性化関数を使うことで非線形変換が可能になり、複雑なデータのパターンを学習できる ようになります。
② 学習の収束を助ける
活性化関数の選択によって、学習速度が大きく変わります。
適切な活性化関数を使えば、勾配消失問題を軽減し、スムーズに学習を進めることができます。
③ ニューラルネットワークの表現力を向上させる
異なる活性化関数を適用することで、特定のタスクに最適な学習が可能になります。
5. 代表的な活性化関数
ニューラルネットワークでは、以下のような活性化関数がよく使われます。
活性化関数 | 主な用途 | 出力範囲 | 特徴 |
---|---|---|---|
シグモイド(Sigmoid) | 確率の出力(分類) | (0,1)(0,1) | 0〜1の確率として解釈可能だが、勾配消失問題がある |
tanh (ハイパボリックタンジェント) | 隠れ層(一般的) | (−1,1)(-1,1) | シグモイドより学習が速く、ゼロ中心 |
ReLU(Rectified Linear Unit) | 隠れ層(深層学習) | [ 0, ∞ ] | 計算コストが低く、勾配消失問題を軽減 |
Softmax | 多クラス分類の出力層 | (0,1)(0,1) | 各クラスの確率を出力し、合計が1になる |
まとめ
- 活性化関数は、ニューラルネットワークの出力を非線形に変換し、学習を可能にする関数 である。
- 学習時(訓練)では、フォワードプロパゲーションとバックプロパゲーションを行い、重みを最適化する。
- 推論時(モデルの動作)では、学習済みの重みを用いてデータを処理する。
- 適切な活性化関数を選ぶことで、ネットワークの学習効率や予測精度が向上する。