第1章: ニューラルネットワーク入門
Introduction to Neural Networks
パーセプトロン
パーセプトロン(1958年、Rosenblatt)
ニューラルネットワークの最も単純な形式(単層のモデル)。入力の重み付き和を閾値で判定:
$$y = \begin{cases} 1 & \text{if } \mathbf{w}^\top \mathbf{x} + b > 0 \\ 0 & \text{otherwise} \end{cases}$$パーセプトロンの限界
単層のパーセプトロンは直線 (高次元では超平面) でデータ空間を 2 分割するだけなので、線形分離可能な問題しか解けない。XOR (排他的論理和) のように直線では分離できないパターンは扱えない。
1969 年、Minsky と Papert は著書『Perceptrons』で単層パーセプトロンのこの限界を厳密に示し、その後のニューラルネット研究の停滞 (「AI の冬」) の一因となったとされる。XOR は多層ネットなら表現できるが、それを学習する方法として誤差逆伝播法が広まったのは 1986 年 (Rumelhart et al.) で、ここから多層ネットの学習が現実的になった。こうしたブームと冬の時代を含む全体史は機械学習の歴史と発展で概観している。
多層パーセプトロン(MLP)
多層パーセプトロン
複数の層を重ねたニューラルネットワーク。非線形関数の合成により複雑な関数を表現。
順伝播(Forward Propagation)
第 $l$ 層の出力:
$$\mathbf{h}^{(l)} = \sigma(\mathbf{W}^{(l)} \mathbf{h}^{(l-1)} + \mathbf{b}^{(l)})$$- $\mathbf{W}^{(l)}$:第 $l$ 層の重み行列
- $\mathbf{b}^{(l)}$:第 $l$ 層のバイアスベクトル
- $\sigma$:活性化関数(出力層の関数はタスクに応じて選ぶ=下の「出力層と損失関数」)
万能近似定理
1 つの隠れ層を持つ MLP は、活性化関数がシグモイドのような非多項式の関数であれば、十分なユニット数で、有界閉集合(コンパクト集合)上の任意の連続関数を任意の精度で(一様に)近似できる (Cybenko, 1989; Hornik, 1991)。
実用上の注意:「近似できる」ことは「学習できる」ことを保証しない。また、1 隠れ層で必要なユニット数が指数関数的に増えるケースが知られている。現代の深層学習が層を重ねる理由の一つは、複数層によって同じ関数をはるかに少ないパラメータで効率的に表現できることである。
活性化関数
活性化関数の役割
非線形性を導入。なければ多層にしても線形変換の合成(=線形)になってしまう(バイアスを含めるとアフィン変換で、アフィン変換の合成もアフィン変換)。
活性化関数の比較
| 関数 | 出力範囲 | 特徴 |
|---|---|---|
| Sigmoid | (0, 1) | 確率出力に便利。勾配消失しやすい |
| tanh | (-1, 1) | 0中心。原点付近では Sigmoid より勾配が大きい(最大 1 対 0.25) |
| ReLU | [0, ∞) | 計算が速い。Dead ReLU問題 |
| Leaky ReLU | (-∞, ∞) | Dead ReLU問題を緩和 |
ReLUが人気の理由
- 計算が速い:max(0, z) だけ
- 勾配消失しにくい:正の領域で勾配が1
- スパース性:入力の分布や初期化によっては多くのユニットが 0 になる(効率的)
Dead ReLU 問題とは
ReLU は負の入力に対して常に 0 を返し、勾配も 0 になる。学習中の大きな更新などで、あるニューロンの入力 $z$ が訓練データのほとんどで負になると、そのニューロンは出力も勾配も 0 となって誤差が伝わらず、回復しにくくなる。これを Dead ReLU 問題 (死んだ ReLU) と呼ぶ。
対策として、負の領域でも小さな勾配を残す Leaky ReLU ($\max(\alpha z, z)$。$\alpha$ は小さな正のハイパーパラメータで、既定値は $\alpha = 0.01$ が多い) や PReLU (傾き $\alpha$ を学習)、ELU などが提案されている。学習率を下げることや、ReLU 向けの He 初期化を使うことも予防に効果的。
出力層と損失関数
タスクに応じた出力層
| タスク | 出力層 | 損失関数 |
|---|---|---|
| 回帰 | 線形(恒等関数) | MSE |
| 2値分類 | Sigmoid | Binary Cross-Entropy |
| 多クラス分類(クラスが排他的) | Softmax | Cross-Entropy |
まとめ
- パーセプトロン:単一ニューロン(単層)、線形分離のみ
- MLP:複数の層、非線形関数を表現可能
- 活性化関数:非線形性を導入、ReLUが主流
- 万能近似定理:1隠れ層で、有界閉集合上の任意の連続関数を近似可能(活性化関数の条件つき)
よくある質問
パーセプトロンと多層パーセプトロン (MLP) の違いは何か
パーセプトロンは単一ニューロンで重み付き和を閾値判定する最も単純な分類器で、単層では線形分離可能な問題しか解けない (XOR 問題が解けない)。MLP は複数層を重ねたネットワークで、各層に活性化関数 (非線形関数) を挟むことで複雑な非線形関数を表現でき、十分な隠れユニット数があれば、有界閉集合上の任意の連続関数を近似できる (Cybenko らの万能近似定理。活性化関数の条件つき)。
なぜ活性化関数に非線形関数が必要なのか
線形変換 (バイアスを含めるとアフィン変換) の合成は線形 (アフィン) 変換のままなので、活性化関数が線形 (例: 恒等関数) なら何層重ねても 1 層と同じ表現力しか得られない。Sigmoid・tanh・ReLU などの非線形関数を挟むことで初めて層を重ねる意味が生まれ、複雑な関数を表現できるようになる。
Sigmoid と ReLU はどう使い分けるのか
ReLU が現代の深層学習では主流である。計算が高速 (max(0, z) のみ)、正の領域で勾配が 1 なので勾配消失しにくい、入力の分布や初期化によっては多くのユニットが 0 になるスパース性などの利点がある。Sigmoid は勾配消失しやすいため隠れ層では避けるが、2 値分類の出力層 (確率を 0-1 に変換) や LSTM のゲート機構などでは現役である。
出力層と損失関数はどう選べばよいか
典型的にはタスクの性質で決まる。回帰問題なら出力層は線形 (恒等関数) で損失は MSE。2 値分類なら出力層は Sigmoid で損失は Binary Cross-Entropy。クラスが排他的な多クラス分類なら出力層は Softmax で損失は Cross-Entropy (1 つの入力に複数のラベルが付く多ラベル分類では、各クラスに Sigmoid と Binary Cross-Entropy を使う)。これらは確率モデル (正規分布、ベルヌーイ分布、カテゴリカル分布) の負の対数尤度として導出できる。