🚀

活性化関数は何をしているのか - Shannon Entropy から見る学習ダイナミクス (実装編)

に公開

実験設計(最小構成)

本実験では、理論的に整理した
「活性化関数が出力分布の Shannon entropy の減少ダイナミクスに与える影響」
を、できる限り単純な設定で観測することを目的とする。


データ

  • MNIST
    • クラス数が固定(10)
    • データ分布が安定している
    • ノイズが比較的少なく、挙動が解釈しやすい

モデル

  • 多層パーセプトロン(MLP)
    • CNN は使用しない
    • 空間構造を排除し、
      活性化関数と最適化ダイナミクスの影響に集中する

活性化関数(比較対象)

  • ReLU
  • Tanh
  • GELU

学習設定

  • 損失関数:Cross Entropy Loss
  • 最適化手法:SGD(確率勾配法)
    • Adam などの適応的最適化は使用しない
    • 勾配そのものが作るダイナミクスを観察するため
  • 学習率:固定
  • エポック数:20

記録する量

各エポックごとに以下を保存する:

  1. 出力分布
p_\theta(y \mid x)
  1. 出力分布の Shannon entropy
H_\theta(x)
  1. バッチ平均エントロピー
\mathbb{E}_{x}[H_\theta(x)]

今回は考えないもの

本実験では、以下の要素は意図的に排除する:

  • Validation accuracy
  • 正則化
  • Batch Normalization
  • Dropout
  • Adam などの適応的最適化手法
  • Early stopping

実装時に観察するポイント

  • 初期エポックにおけるエントロピーの値はどうなっているか
  • エントロピーの減少は
    • 線形か
    • 指数的か
    • 途中で停滞するか
  • 活性化関数ごとに
    • 初期の減少速度に差があるか
    • 後半での減速の仕方に違いがあるか

本実験は、モデル性能の向上を目的とするものではなく、
学習ダイナミクスそのものを観測・理解するための基礎実験として位置づける。

Discussion