MLPとは - Shinichi0713/LLM-fundamental-study GitHub Wiki

MLPとは

MLPとは「Multi-Layer Perceptron(多層パーセプトロン)」の略です。
ニューラルネットワークの基本的な構造の一つで、「複数の全結合層(fully connected layer)から構成されるニューラルネットワーク」を指します。


MLPの特徴

  • 入力層1つ以上の隠れ層(hidden layer)出力層の3つで構成されます。
  • 各層のノード(ニューロン)は前の層のすべてのノードと結合(全結合)しています。
  • 層と層の間には**活性化関数(ReLUやシグモイドなど)**が入ります。
  • 入力→隠れ層→出力の順伝播型ネットワークです(リカレントや畳み込みは含みません)。

イメージ図

入力層 → 隠れ層1 → 隠れ層2 → ... → 出力層
   |         |            |            |
  全結合    全結合       全結合       全結合

MLPの用途

  • 画像認識や自然言語処理など、様々なタスクの基礎的なモデル
  • より複雑なニューラルネットワーク(CNN, RNN, Transformerなど)の一部としても利用される
  • 特徴量からの分類や回帰など

まとめ

  • MLP = Multi-Layer Perceptron
  • 複数の全結合層からなる順伝播型ニューラルネットワーク
  • ニューラルネットワークの基本的な構造

Momentum Encoder

Momentum Encoder(モメンタムエンコーダ)とは、主に自己教師あり学習(self-supervised learning)やコントラスト学習(contrastive learning)で用いられる手法で、エンコーダ(特徴抽出器)の重みを「モメンタム(慣性)」を使って滑らかに更新する仕組みです。


背景

  • 通常のエンコーダは、学習のたびにパラメータ(重み)を勾配降下法で直接更新します。
  • コントラスト学習(たとえばSimCLRやMoCoなど)では、「クエリエンコーダ」と「キーエンコーダ」の2つのエンコーダを用意し、それぞれで特徴量を抽出して比較します。
  • このとき、もし両方のエンコーダが同じように毎回更新されると、安定した比較が難しくなります。

Momentum Encoderの仕組み

  • クエリエンコーダは通常どおり勾配降下法で更新されます。
  • キーエンコーダ(Momentum Encoder)は、クエリエンコーダの重みを「モメンタム」を使ってゆっくり追従するように更新します。

具体的な更新式

$$ \theta_{k} \leftarrow m \cdot \theta_{k} + (1-m) \cdot \theta_{q} $$

  • $\theta_{k}$:キーエンコーダの重み
  • $\theta_{q}$:クエリエンコーダの重み
  • $m$:モメンタム係数(例: 0.99や0.999など、1に近い値)

つまり、「キーエンコーダの重みは、クエリエンコーダの重みに少しずつ近づく」ように滑らかに更新されます。


メリット

  • 特徴表現の安定化
    モメンタムで更新することで、特徴表現が急激に変化せず、コントラスト学習の安定性が向上します。
  • 大規模なメモリバンクの構築が容易
    過去の特徴ベクトルを安定して蓄積しやすくなります。

代表例

  • MoCo(Momentum Contrast)
    Momentum Encoderを用いた代表的なコントラスト学習手法です。

まとめ

  • Momentum Encoderは、クエリエンコーダの重みを滑らかに追従することで、自己教師あり学習やコントラスト学習の安定性を高めるエンコーダです。
  • 主にMoCoなどの手法で使われています。