1 定義と基本原理

順伝播(Forward Propagation)とは、ニューラルネットワークにおいて入力データがネットワークの各層を順方向に通過し、最終的に出力を生成する一連の計算プロセスを指す。これは機械学習深層学習における基本的な動作であり、モデルの推論や評価に不可欠である。各層では重みバイアスを用いた線形変換の後、活性化関数による非線形変換が適用され、特徴が段階的に抽象化される。順伝播は誤差逆伝播法と対をなす概念であり、学習時には逆伝播のための勾配計算の基盤となる。

1.1 順伝播の動作フロー

順伝播の動作フローは、入力データがネットワークの入力層に与えられ、隠れ層を経由して出力層に至るまで、各層で決められた演算を順次実行する。各層ではまず線形変換(アフィン変換)が行われ、続いて非線形活性化関数が適用される。このプロセスを層の数だけ繰り返し、最終的に出力値を得る。フローは一方向であり、データはループやフィードバックなしに前方へ進む。

1.2 入力層から出力層へのデータ流れ

入力層は生データ(画像のピクセル値やテキストの埋め込みベクトルなど)を受け取り、それを次の層へ渡す。各隠れ層は前の層の出力を受け取り、自身の重みとバイアスを用いて変換し、活性化関数を適用して次の層へ渡す。出力層ではタスクに応じた活性化関数(分類ならソフトマックス、回帰なら恒等関数など)を用いて最終的な予測値を生成する。この流れにより、データの特徴は層が深くなるほど抽象化され、高次元の表現へと変化する。

2 数学的表現

順伝播は数学的には複数の線形変換と非線形変換の合成で表現される。ネットワークの各層は、入力ベクトルに対して重み行列とバイアスベクトルによるアフィン変換を行い、その後活性化関数を適用する。この操作を層ごとに繰り返すことで、最終出力が計算される。

2.1 線形変換(アフィン変換)

線形変換は、入力に対して重みを掛け、バイアスを加える操作である。ニューラルネットワークではこれを「アフィン変換」とも呼ぶ。具体的には、ある層の入力ベクトルを x、重み行列を W、バイアスベクトルを b とすると、変換後の値は z = Wx + b と表される。この z が次の活性化関数への入力となる。

2.1.1 重み行列とバイアスベクトル

重み行列 W は、前の層のニューロン数(入力次元)と現在の層のニューロン数(出力次元)を結びつけるパラメータであり、各要素が結合の強度を表す。バイアスベクトル b は各ニューロンに加算される定数項で、活性化の閾値を調整する役割を持つ。これらのパラメータは学習によって最適化される。

2.1.2 活性化関数の役割

活性化関数は線形変換の出力 z非線形性を導入する役割を果たす。もし非線形関数がなければ、何層重ねても線形変換の合成となり、ネットワークの表現力が著しく制限される。活性化関数により、ネットワークは複雑な非線形パターンを学習できるようになる。代表的な例としてシグモイド、ReLU、ソフトマックスなどがある。

2.2 層ごとの計算式

各層の計算は、以下の一般式で表される。ここで l は層の番号、a^(l-1) は前の層の出力(活性化値)、W^(l)b^(l) はその層の重みとバイアス、f^(l) は活性化関数とする。

z^(l) = W^(l) a^(l-1) + b^(l) a^(l) = f^(l)(z^(l))

2.2.1 隠れ層の出力計算

隠れ層では、前の層の出力 a^(l-1) に対して上記の計算を行い、非線形活性化関数(例:ReLU)を適用して a^(l) を出力する。この出力が次の層への入力となる。隠れ層の数が多いほどネットワークは深くなる。

2.2.2 出力層の活性化

出力層では、タスクに応じて活性化関数を選択する。例えば、二値分類ではシグモイド関数、多クラス分類ではソフトマックス関数、回帰では恒等関数(何もしない)を用いる。出力層の活性化関数は、最終的な予測値の範囲や解釈に直接影響を与える。

3 活性化関数

活性化関数はニューラルネットワークに非線形性をもたらす重要な要素であり、多様な種類が存在する。それぞれの関数は特性が異なり、ネットワークの収束性や表現力に影響する。

3.1 シグモイド関数と双曲線正接関数

シグモイド関数(Sigmoid)は出力を0から1の範囲に収める関数であり、確率的解釈が可能なため二値分類の出力層でよく使われる。式は σ(x) = 1 / (1 + e^{-x}) である。双曲線正接関数(tanh)は出力を-1から1の範囲に収める関数であり、シグモイドに比べて勾配が大きく、中間層の活性化関数として用いられることが多い。式は tanh(x) = (e^x - e^{-x}) / (e^x + e^{-x}) である。しかし、どちらも入力の絶対値が大きい領域で勾配がほぼ0になる「勾配消失問題」を抱える。

3.2 ReLUとその派生関数

ReLU(Rectified Linear Unit)は現在最も広く使われる活性化関数で、式は ReLU(x) = max(0, x) である。負の入力を0にすることで勾配消失を軽減し、計算も高速である。しかし、負の領域で勾配が0になる「ニューロン死亡問題」がある。派生関数として、Leaky ReLU(負の領域に小さな傾きを設定)、PReLU(傾きを学習可能にする)、ELU(負の領域で指数関数的に減衰)などがあり、それぞれ弱点を改善する。

3.3 ソフトマックス関数(分類タスク向け)

ソフトマックス関数は主に多クラス分類の出力層で用いられる。入力ベクトルの各要素を指数関数で変換し、その総和で正規化することで、出力の各要素が0から1の確率値となり、合計が1になる。式は softmax(z_i) = e^{z_i} / Σ_j e^{z_j} である。これにより、ネットワークの出力を確率分布として解釈できる。

4 損失関数との関係

順伝播の最終的な出力は、損失関数を用いて教師データ(正解ラベル)と比較される。損失関数の値はネットワークの性能を測る指標であり、順伝播の結果を基に誤差を計算する。この誤差は誤差逆伝播法によってネットワークのパラメータ更新に用いられる。

4.1 出力と正解ラベルの比較

順伝播で得られた出力 y_pred と、訓練データの正解ラベル y_true を比較する。タスクに応じて比較方法が異なり、分類では出力が確率値、回帰では連続値となる。この比較により、どれだけ予測が正解からずれているかを定量化する。

4.2 損失値の算出方法(例:交差エントロピー誤差、平均二乗誤差)

損失関数の代表例として、交差エントロピー誤差(Cross-Entropy Loss)と平均二乗誤差(Mean Squared Error, MSE)がある。交差エントロピー誤差は分類タスクでよく使われ、式は **L = -Σ y_true * log(y_pred) である。確率分布間の距離を測る。平均二乗誤差は回帰タスクで使われ、式は L = (1/n) Σ (y_true - y_pred)^2** であり、予測値と真値の差の二乗平均を計算する。損失値が小さいほどモデルの予測が正確であることを示す。

5 順伝播の実装と最適化

実際の順伝播では、効率的な計算と安定性の確保が重要である。特に大規模なデータや深いネットワークでは、実装上の工夫が必要となる。

5.1 バッチ処理とミニバッチ学習

順伝播は単一のサンプルだけでなく、複数のサンプルをまとめて処理することが一般的である。これをバッチ処理と呼び、複数のサンプルを同時に行列演算で処理することで計算効率が飛躍的に向上する。ミニバッチ学習では、全データを小さなバッチ(例:32、64サンプル)に分割し、各バッチごとに順伝播と逆伝播を行いパラメータを更新する。これによりメモリ使用量を抑えつつ、学習の安定性も向上する。

5.2 計算効率の向上(ベクトル化、並列計算)

順伝播の演算は主に行列の積と加算であり、これらはGPUや専用ハードウェアで高度に並列化できる。ベクトル化とは、ループ処理を行列演算に置き換えることで、NumPyや深層学習フレームワーク(TensorFlow、PyTorch等)が内部的に最適化されたライブラリ(cuBLASなど)を使用して高速に計算する。また、バッチ処理によりメモリアクセスパターンが改善され、キャッシュ効率も向上する。

5.3 数値的安定性の確保(勾配消失・爆発の回避)

順伝播の計算過程で、特に深いネットワークでは値が極端に大きくなる(爆発)か、小さくなる(消失)可能性がある。これは重みの初期化方法や活性化関数の選択に影響される。例えば、適切な重み初期化(He初期化やXavier初期化)やバッチ正規化(Batch Normalization)を用いることで、各層の出力分布を適正範囲に保ち、勾配消失・爆発を抑制する。また、勾配クリッピングや残差接続(ResNet)も安定性向上に寄与する。

6 順伝播と誤差逆伝播法の連携

順伝播と誤差逆伝播法は、ニューラルネットワークの学習において表裏一体の関係にある。順伝播で得られた出力と損失を用いて、逆伝播で勾配を計算しパラメータを更新する。

6.1 誤差逆伝播法の概要

誤差逆伝播法(Backpropagation)は、損失関数の各パラメータに対する勾配を、連鎖律(チェインルール)を用いて出力層から入力層の方向に効率よく計算するアルゴリズムである。順伝播で計算した各層の出力(活性化値)を記憶しておき、逆方向に進みながら勾配を伝播させる。これにより、大規模なネットワークでも効率的に学習が可能となる。

6.2 順伝播が逆伝播に与える影響

順伝播の結果(各層の活性化値)は逆伝播の計算に直接使用される。特に、活性化関数の微分値(勾配)は順伝播時の出力値に依存する。例えば、ReLUの場合、順伝播で負の値を出力したニューロンは逆伝播で勾配が0になる。また、順伝播で数値が飽和した場合(シグモイドで極端な値)、逆伝播の勾配が消失し学習が進まなくなる。したがって、順伝播の設計(活性化関数の選択、初期化、正規化など)は逆伝播の効率と収束性に大きな影響を与える。

7 応用例

順伝播はあらゆるニューラルネットワークモデルの中核であり、様々な分野で応用されている。ここでは代表的な例を挙げる。

7.1 画像認識(CNNにおける順伝播)

畳み込みニューラルネットワーク(CNN)では、順伝播において入力画像に対して畳み込み層、プーリング層、全結合層が順次適用される。畳み込み層ではフィルタ(カーネル)を用いた畳み込み演算により特徴マップを生成し、プーリング層で空間的なダウンサンプリングを行う。最終的に全結合層でクラス分類のための出力を得る。この順伝播により、画像のエッジやテクスチャなどの局所的特徴から高次な意味的特徴まで段階的に抽出される。

7.2 自然言語処理(RNN、Transformerにおける順伝播)

リカレントニューラルネットワーク(RNN)では、時系列データに対して順伝播が行われる。各タイムステップで前の隠れ状態と現在の入力から新しい隠れ状態を計算し、系列全体の出力を得る。Transformerでは、自己注意機構(Self-Attention)を用いて全位置の情報を考慮した順伝播を実行する。これにより、長距離依存関係を効率的に捉え、機械翻訳や文章生成などのタスクで高い性能を発揮する。

7.3 強化学習における順伝播の利用

強化学習では、エージェントが状態を入力としてニューラルネットワーク(ポリシーネットワークや価値ネットワーク)に通し、行動や価値を予測する。この順伝播により、現在の状態に対する最適な行動の確率や状態価値が計算される。例えば、Deep Q-Network(DQN)では、状態を入力として各行動のQ値を出力するネットワークを用い、順伝播により行動選択が行われる。学習時には、得られた報酬と次の状態のQ値を用いて逆伝播でネットワークを更新する。