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などの手法で使われています。