1 歴史
1.1 初期の理論(1970年代-1980年代)
バックプロパゲーションの基礎となる考え方は、1970年代に複数の研究者によって独立に提案された。1980年代初頭には、ニューラルネットワークの学習に関する研究が進み、特にPaul Werbosが1974年の博士論文で誤差逆伝播の原理を明確に定式化した。しかし、当時は計算資源の制約や研究コミュニティの限定的な関心により、広く認知されるには至らなかった。
1.2 再発見と普及(1986年)
1986年、David Rumelhart、Geoffrey Hinton、Ronald Williamsが発表した論文「Learning representations by back-propagating errors」により、バックプロパゲーションが再発見され、その有効性が広く示された。この論文は、多層パーセプトロンが非線形問題を学習できることを実証し、ニューラルネットワーク研究の一大ブームを引き起こした。
1.3 深層学習への発展(2000年代以降)
2000年代に入ると、計算能力の向上と大規模データセットの登場により、バックプロパゲーションは深層学習の中核技術として再評価された。特に、自動微分フレームワーク(TensorFlow、PyTorchなど)の普及により、実装が簡素化され、畳み込みニューラルネットワーク(CNN)やリカレントニューラルネットワーク(RNN)などの複雑なアーキテクチャにも応用可能となった。
2 基本原理
2.1 多層パーセプトロンの構造
多層パーセプトロン(MLP)は、入力層、1つ以上の隠れ層、出力層から構成される。各層は複数のニューロン(ユニット)を持ち、隣接する層のニューロン間は重み付き結合で全結合される。また、各ニューロンにはバイアス項が加えられ、活性化関数によって非線形変換が行われる。
2.2 順伝播(フォワード計算)
入力データは、層を順に通過しながら各ニューロンで重み付き和と活性化関数の計算が行われ、最終的に出力層からネットワークの予測値が得られる。この過程を順伝播と呼ぶ。
2.3 誤差関数
順伝播で得られた予測値と正解データとの差を定量化するため、誤差関数(損失関数)が用いられる。代表的なものに、回帰問題では平均二乗誤差(MSE)、分類問題では交差エントロピー誤差がある。誤差関数の値が小さいほど、ネットワークの性能が良いことを示す。
2.4 逆伝播の概要
逆伝播では、出力層で計算された誤差を、連鎖律を用いて各層の重みに関する勾配に変換しながら、入力層側へ向かって伝播させる。これにより、各重みが誤差にどの程度寄与しているかを効率的に計算できる。
3 数学的定式化
3.1 連鎖律の適用
多層ネットワークでは、誤差関数Eは各層の重みに対して合成関数として表される。連鎖律を用いると、ある層の重みwに対する勾配∂E/∂wは、その層の出力に対する誤差の感度と、その層の入出力関係の微分の積として計算される。これを出力層から順に適用することで、全ての層の勾配が求まる。
3.2 出力層における勾配
出力層のニューロンkについて、誤差関数Eの出力o_kに対する微分(δ_k)は、活性化関数の微分と誤差関数の微分の積で表される。例えば、シグモイド活性化と二乗誤差の場合、δ_k = (o_k - t_k) * o_k * (1 - o_k)(t_kは教師信号)となる。
3.3 隠れ層における勾配
隠れ層のニューロンjの誤差信号δ_jは、次の層(出力側)の全てのニューロンから伝播してきた誤差信号の重み付き和に、自身の活性化関数の微分を乗じて計算される。すなわち、δ_j = (Σ_k δ_k * w_{jk}) * f'(net_j)である。
3.4 重み更新式
各重みw_{ij}の更新は、勾配降下法に基づき、w_{ij} ← w_{ij} - η * ∂E/∂w_{ij}で行われる。ここでηは学習率であり、∂E/∂w_{ij} = δ_j * o_i(o_iは前層の出力)である。
4 学習プロセス
4.1 バッチ学習とミニバッチ学習
バッチ学習は全訓練データを使って一度に勾配を計算し更新する。ミニバッチ学習はデータを小さなグループに分割し、各グループごとに勾配を計算して更新する。ミニバッチ学習はメモリ効率が良く、確率的勾配降下法(SGD)とバッチ法の中間的な性質を持つ。
4.2 エポックと反復
エポックは全訓練データを一巡すること、反復(イテレーション)は一度の重み更新を指す。ミニバッチ学習では、1エポックあたりの反復回数は(データ数/ミニバッチサイズ)となる。
4.3 学習率の設定
4.3.1 固定学習率
学習率を訓練中一定に保つ方法。単純だが、適切な値の選択が難しく、大きすぎると発散、小さすぎると収束が遅くなる。
4.3.2 学習率スケジューリング
訓練の進行に応じて学習率を変化させる手法。ステップ減衰、指数関数的減衰、コサイン減衰などがある。これにより、初期は大きく、後半は小さく学習率を調整できる。
4.4 初期化方法
重みの初期値は学習の成否に大きく影響する。一様分布や正規分布を用いる方法、Xavier初期化(シグモイド・tanh向け)、He初期化(ReLU向け)などが一般的である。適切な初期化は勾配消失・爆発を防ぎ、収束を促進する。
5 最適化の改良手法
5.1 モーメンタム法
過去の勾配の指数移動平均を利用し、更新方向に慣性を与える。これにより、局所最適解からの脱出や、急な勾配変化に対する安定化が図られる。更新式はv ← αv - η∇E、w ← w + v(αはモーメンタム係数)。
5.2 AdaGrad
各パラメータごとに学習率を適応的に調整する手法。過去の勾配の二乗和を蓄積し、頻繁に更新されるパラメータの学習率を低下させる。スパースな特徴量に有効だが、学習が進むにつれて学習率がゼロに近づく問題がある。
5.3 RMSProp
AdaGradの改良版で、勾配の二乗の指数移動平均を用いる。これにより学習率の過度な減少を防ぎ、非定常な問題でも安定して学習できる。
5.4 Adam
モーメンタム法とRMSPropを組み合わせた手法。勾配の一次モーメント(平均)と二次モーメント(分散)の指数移動平均を保持し、バイアス補正を行う。多くの問題で高い性能を示し、深層学習のデファクトスタンダードとなっている。
6 実装上の注意点
6.1 勾配消失・爆発問題
深いネットワークでは、連鎖律により勾配が指数関数的に減衰(消失)または増大(爆発)する。シグモイド関数では勾配消失が起こりやすく、重み初期値が大きすぎると爆発が発生する。対策として、適切な活性化関数(ReLUなど)の選択、バッチ正規化、勾配クリッピングなどがある。
6.2 過学習対策
6.2.1 L1/L2正則化
誤差関数に重みのノルムを加えることで、過度に大きな重みを抑制する。L2正則化(weight decay)は重みをゼロに近づけ、L1正則化は重みをスパースにする効果がある。
6.2.2 ドロップアウト
訓練時にランダムにニューロンを一定確率で無効化する手法。これにより、ネットワークが特定のニューロンに依存することを防ぎ、アンサンブル効果を得る。
6.2.3 早期停止
検証用データの誤差が増加し始めた時点で学習を打ち切る手法。過学習が発生する前に訓練を停止することで、汎化性能を維持する。
6.3 活性化関数の選択
6.3.1 シグモイドとtanh
シグモイド関数は出力を0~1に、tanhは-1~1に制限する。どちらも飽和領域で勾配がほぼゼロになるため、深いネットワークでは勾配消失を引き起こしやすい。
6.3.2 ReLUとその派生
ReLU(Rectified Linear Unit)は正の領域で線形、負で0を出力する。計算が高速で勾配消失問題を緩和するが、負の領域で勾配が0になる「死滅ReLU」問題がある。Leaky ReLU、PReLU、ELUなどの派生関数でこれを改善する。
7 応用例
7.1 画像認識(畳み込みニューラルネットワーク)
CNNは畳み込み層とプーリング層を持ち、局所的な特徴抽出を行う。バックプロパゲーションにより、フィルタの重みを学習し、手書き文字認識(MNIST)から大規模画像分類(ImageNet)まで幅広く応用される。
7.2 自然言語処理(リカレントニューラルネットワーク)
RNNは時系列データを扱うため、時間方向に展開したバックプロパゲーション(BPTT)が用いられる。長短期記憶(LSTM)やゲート付き回帰型ユニット(GRU)は、長期依存関係を学習するための改良モデルである。
7.3 音声認識
音声信号をスペクトログラムなどの特徴量に変換し、CNNやRNNを組み合わせたモデルで音素や単語を認識する。バックプロパゲーションによって、音響モデルと言語モデルを同時に学習できる。
7.4 強化学習との組み合わせ
深層強化学習(DQNなど)では、Q関数をニューラルネットワークで近似し、TD誤差をバックプロパゲーションで学習する。これにより、ゲームプレイやロボット制御などのタスクで高い性能を達成している。
8 限界と発展
8.1 局所最適解の問題
バックプロパゲーションは勾配降下法に基づくため、損失関数の局所最適解に陥る可能性がある。ただし、大規模ネットワークでは多くの局所最適解が実質的に大域的最適解と同等の性能を持つという知見もある。
8.2 計算コストと並列化
深層ネットワークでは、順伝播と逆伝播に大量の行列演算が必要となる。GPUやTPUを用いた並列計算により高速化が図られているが、大規模モデルでは依然として計算資源が課題となる。
8.3 自動微分技術との関係
現代の深層学習フレームワークでは、自動微分(autodiff)が実装されており、バックプロパゲーションの数式を手動で導出する必要がない。計算グラフを用いて微分を自動的に行うため、複雑なアーキテクチャでも容易に勾配が計算できる。
8.4 代替学習手法(進化的アルゴリズム等)
進化的アルゴリズムや勾配フリーの最適化手法は、勾配が利用できない問題や報酬が離散的な強化学習タスクで用いられる。しかし、大規模パラメータ空間では非効率であり、バックプロパゲーションが依然として主流の学習手法であり続けている。