多層パーセプトロン(MLP)は、深層学習のすべてのモデルの原型となる最も基本的なニューラルネットワークです。この項目では、全結合層・重み・バイアスという構成要素と、入力から出力までの順伝播の計算を学びます。CNNやTransformerを理解する上でも必須の土台です。
📖 概要
多層パーセプトロン(MLP: Multilayer Perceptron)は、入力層・1つ以上の隠れ層・出力層から構成される順伝播型ニューラルネットワーク(feedforward neural network)です。「順伝播型」とは、信号が入力から出力へ一方向にのみ流れ、ループ(再帰的な結合)を持たないという意味です。
各層は全結合層で構成され、その計算は「重み行列との積 + バイアスの加算」という線形変換と、それに続く活性化関数による非線形変換の繰り返しです。層を重ねることで、単層では表現できない複雑な関数を近似できるようになります。歴史的には、単層のパーセプトロンは線形分離可能な問題しか解けない(XORのような問題が解けない)ことが知られており、隠れ層を導入した多層構造と非線形な活性化関数がこの限界を克服しました。
ここで学ぶ重みとバイアスは「学習によって更新されるパラメータ」であり、後の項目で扱う損失関数・誤差逆伝播法・最適化アルゴリズムは、すべてこのパラメータをどう決めるかという話につながっていきます。
🔍 キーワード解説
全結合層
全結合層(fully connected layer、線形層とも呼ばれます)は、前の層のすべてのユニット(ニューロン)が次の層のすべてのユニットと結合している層です。入力ベクトルを x、重み行列を W、バイアスベクトルを b とすると、全結合層の出力は
z = Wx + b
という線形変換で計算されます。さらに活性化関数 f を適用した h = f(Wx + b) が次の層への入力になります。入力がn次元、出力がm次元のとき、Wは m行n列 の行列、bはm次元のベクトルで、この層のパラメータ数は mn + m 個です。
多層パーセプトロンは全結合層を積み重ねた構造をしており、例えば2層のネットワークなら y = f2(W2 f1(W1 x + b1) + b2) のように、線形変換と非線形変換が交互に適用されます。もし活性化関数がすべて恒等写像(線形)なら、何層重ねても全体は1つの線形変換にまとまってしまうため、層を深くする意味を持たせるには非線形な活性化関数が不可欠です。
重み
重み(weight)は、ユニット間の結合の強さを表すパラメータです。あるユニットへの入力は、前の層の各ユニットの出力に対応する重みを掛けて足し合わせた加重和として計算されます。重みが大きいほどその入力の影響が強く、符号によって興奮性(正)・抑制性(負)の影響を与えます。
学習とは、損失関数を小さくするようにこの重みを勾配降下法などで繰り返し更新していく過程にほかなりません。また、学習開始時の重みの初期値の決め方(初期化戦略)や、重みが大きくなりすぎないよう抑える正則化も、重みというパラメータをめぐる重要なテーマです。
バイアス
バイアス(bias)は、加重和に加算される定数項のパラメータです。z = Wx + b の b にあたり、活性化関数への入力を平行移動させる役割を持ちます。直感的には「ユニットの発火のしやすさ」を調整する項であり、入力がすべて0でも出力を0以外にできるため、モデルの表現の自由度を高めます。
1次関数 y = ax + b の切片 b に相当すると考えると分かりやすく、バイアスがなければ全結合層の表現できる関数は原点を通る線形変換に限定されてしまいます。バイアスも重みと同様に学習で更新されるパラメータですが、正則化(weight decay)の対象からは除外されることが多い、という慣習も知っておくとよいでしょう。
📝 試験でのポイント
z = Wx + bの行列演算を実際に計算させる問題が出やすいです。入力次元・出力次元と重み行列の形(m行n列)の対応を確実に押さえましょう- 全結合層のパラメータ数を数えさせる問題(重み mn 個 + バイアス m 個)は定番です
- 「活性化関数が線形だと多層にする意味がない(全体が1つの線形変換に縮約される)」という理由説明は頻出の論点です
- 単層パーセプトロンが線形分離不可能な問題(XOR)を解けず、隠れ層の導入で解決されるという流れも問われます
- NumPyなどによる順伝播の実装コードの穴埋め(行列積とバイアス加算、バッチ処理時の形状)にも対応できるようにしておきましょう
📚 まとめ
多層パーセプトロンは、全結合層を積み重ねた順伝播型ネットワークであり、各層は重み行列との積とバイアスの加算、そして非線形な活性化関数で構成されます。重みは結合の強さ、バイアスは発火のしやすさを調整する学習パラメータです。この「線形変換+非線形変換の繰り返し」という見方は、CNNやTransformerを含む深層学習全体を貫く基本構造です。
