UnsplashのSteve Johnsonが撮影した写真
多層パーセプトロン(MLP: Multi-Layer Perceptron)は、ニューラルネットワークの中でも基本となるモデルの一つです。画像や文章のような複雑なデータではCNNやTransformerが主役になりがちですが、MLPは「まず押さえるべき土台」であり、表形式データ(構造化データ)では今でも有力な選択肢です。本記事では、MLPの構造、学習の流れ(順伝播・損失・逆伝播)、活性化関数や正則化、適用場面、実装・チューニングの要点までを、10分で理解できるよう整理します。
多層パーセプトロン(MLP)は、入力から出力までを「全結合(Fully Connected)」の層でつないだニューラルネットワークです。各層は複数のユニット(ニューロン)で構成され、入力に重み(weight)を掛けて足し合わせ、活性化関数を通して次の層へ伝えます。層を重ねることで非線形性を表現でき、単純な線形モデルでは表せない複雑な関係を近似できます。
ニューラルネットワークには、画像に強いCNN、時系列に強いRNN/LSTM、自然言語で主流のTransformerなど多様な派生があります。MLPはそれらの基礎となる計算ブロック(線形変換+活性化)であり、ニューラルネットワークの理解を進める上で欠かせません。また、特徴量が整理された表形式データでは、MLPが実務上も有効に機能する場面があります。
MLPは主に次の層で構成されます。
一般的なMLPでは、隣接する層同士が全結合です。つまり、ある層の各ユニットは前の層のすべてのユニットから入力を受け取り、次の層のすべてのユニットへ出力を渡します(Fully Connected)。
| 層 | 役割 |
|---|---|
| 入力層 | 外部からの入力データ(特徴量)を受け取り、ネットワークへ渡す |
| 中間層(隠れ層) | 線形変換と活性化を繰り返し、非線形な特徴表現を学習する |
| 出力層 | タスクに応じた形式で予測値を出力する(回帰なら連続値、分類なら確率など) |
隠れ層を増やすと表現力は高まりますが、計算量が増え、過学習や学習不安定のリスクも上がります。実務では「深くすれば必ず良い」ではないため、データ量・タスク難易度・目的(精度/説明性/推論速度)に合わせて設計します。
MLPが学習するパラメータは、各層の重み(weight)とバイアス(bias)です。入力が与えられると、重み・バイアスで変換され、活性化関数を通って次の層へ進みます(順伝播)。この一連の計算により予測値が得られます。
MLPは主に教師あり学習で用いられます。教師あり学習では、入力データと正解ラベル(目的変数)のペアを使い、予測と正解のズレを小さくするようにモデルのパラメータを更新します。
MLPの学習は、一般に次の流れで進みます。
このとき、勾配を出力側から入力側へ伝えながら各層の更新量を求める手続きがバックプロパゲーションです。最適化手法(SGD、Adamなど)は「どう更新するか」を決め、バックプロパゲーションは「更新に必要な勾配をどう求めるか」を担います。
活性化関数は、層に非線形性を与え、MLPが複雑な関係を表現できるようにします。代表例は次の通りです。
| 活性化関数 | 特徴 | 主な使いどころ |
|---|---|---|
| シグモイド | 0〜1に押し込む。勾配消失が起こりやすい | 古典的。近年は中間層では使われにくい |
| tanh | -1〜1。シグモイドより中心が0で扱いやすいが勾配消失は残る | RNN系で見かけることがある |
| ReLU | 計算が軽く学習が進みやすい。負側が0固定になり「死んだReLU」問題が起こり得る | 中間層の第一候補として広く利用 |
| Softmax | 出力を確率に正規化(合計1) | 多クラス分類の出力層 |
実務では「中間層=ReLU系」「二値分類の出力層=シグモイド」「多クラス分類の出力層=Softmax」「回帰の出力層=恒等(線形)」の組み合わせが基本形です。
学習が安定するかどうかは、出力層と損失関数の組み合わせが大きく影響します。
MLPは表現力が高い反面、データが少ないと過学習しやすいモデルです。代表的な対策は次の通りです。
注意点として、ハイパーパラメータ調整にテストデータを使うと、テストへの過適合が起こり評価が信用できなくなります。実務では「学習用」「検証用」「テスト用」の3分割(または交差検証)を基本に考えます。
MLPは幅広く応用できますが、「どのデータ形式に向くか」を押さえることが重要です。特に、画像・音声・自然言語のように構造(空間・順序)が重要なデータでは、専用アーキテクチャ(CNNやTransformerなど)が主役になりやすい一方、MLPはそれらの内部でも部品として使われています。
MLPが得意なのは、数値・カテゴリなどが列として揃った表形式データです。たとえば、顧客スコアリング、需要予測(特徴量が整っている場合)、与信、解約予測などでは、特徴量設計と組み合わせてMLPが有効に働くことがあります。
画像認識の主役はCNNですが、CNNで抽出した特徴を受け取って分類する最後段にMLPが使われることがあります。画像をそのまま平坦化してMLPに入れる方法もありますが、空間構造を捨てるため精度や効率の面で不利になりがちです。
自然言語処理ではRNNやTransformerが主流です。ただし、Transformer内部にはMLP(フィードフォワード層)が組み込まれており、トークン表現を変換する重要な役割を担っています。用途としては、埋め込み(embedding)や特徴表現を受け取って分類・回帰するヘッド部分にMLPが使われます。
時系列データは順序依存があるため、LSTM/GRUやTransformerが有利な場合が多いです。一方で、ラグ特徴量や移動平均などを作って「表形式」に落とし込めるケースでは、MLPでも十分戦えることがあります。
異常検知では、オートエンコーダ(Encoder/Decoderを持つネットワーク)の構成要素としてMLPが使われることがあります。復元誤差を基準に、通常と異なるパターンを検出する方法です。運用上は、しきい値設計や誤検知・見逃しの許容度も含めて評価設計が重要になります。
MLPはNumPyで自作もできますが、実務では自動微分・最適化・GPU利用の観点から、ディープラーニングフレームワークの利用が一般的です。これにより、モデル定義・学習・評価・保存までを一貫して管理できます。
目的が「素早い検証」なのか「運用前提」なのかで選び方は変わります。まずは再現性(乱数固定、実験ログ)と評価設計(検証データ、テストデータ)を整えることが優先です。
MLPは調整対象が多く、無計画に触ると迷子になりがちです。主な調整ポイントは次の通りです。
探索手法としては、ランダムサーチやベイズ最適化が現実的です。重要なのは「テストデータを最後まで触らない」ことと、「比較条件を揃える」ことです。
評価はタスクに応じて指標を選びます。分類ならAccuracyだけでなく、Precision/Recall/F1、AUCなども検討します。回帰ならMAE/MSE/RMSEなどが候補です。加えて、実務では次の観点が効きます。
MLPは万能ではありません。表形式データでは、勾配ブースティング系(例:XGBoost/LightGBM/CatBoost)が強いことも多いため、MLPだけに固執せず、要件に合うモデルを比較して選ぶのが現実的です。
多層パーセプトロン(MLP)は、全結合層を重ねたニューラルネットワークで、非線形な関係を学習できる基本モデルです。順伝播で予測し、損失を計算し、バックプロパゲーションと最適化手法で重みを更新します。活性化関数や損失関数の選択、正則化(L2・ドロップアウト・早期終了)により、学習の安定性と汎化性能が左右されます。画像・自然言語の主役は専用モデルになりがちですが、MLPは部品として広く使われ、表形式データでは今でも有力です。評価設計(検証/テスト分離)と特徴量の整備を前提に、他モデルとも比較しながら適切に活用することが重要です。
全結合層(線形変換)と活性化関数を重ね、入力から出力までを学習するニューラルネットワークです。
単層は基本的に線形分離しか扱えませんが、MLPは隠れ層と活性化関数により非線形関係を表現できます。
損失を減らすために必要な勾配を、出力層から入力層へ逆向きに計算して各層の更新量を求める手法です。
非線形性を入れるためです。活性化がないと層を重ねても全体は線形変換のままで表現力が上がりません。
特徴量が整っており、非線形な関係がありそうで、十分なデータ量が確保できる場合に有効になりやすいです。
画像の空間構造や文章の順序・文脈といった構造を直接活かしにくく、専用モデルに比べて効率や精度で不利になりがちです。
L2正則化、ドロップアウト、早期終了、データ増強(可能な場合)などを組み合わせます。
重要です。特に数値のスケーリング(標準化・正規化)が学習の安定性と収束速度に影響します。
モデルやハイパーパラメータの決定が終わった最後に、最終評価として一度だけ使うのが基本です。
線形モデルや決定木系、勾配ブースティング系などです。要件に合うモデルを比較して選びます。