1D 線形オートエンコーダ・シミュレーター 戻る
機械学習シミュレーター

1D 線形オートエンコーダ・シミュレーター — PCAと等価な圧縮再構成

10次元の信号を K 次元のボトルネックへ通し、線形デコーダで戻すシンプルなオートエンコーダ。SGD で訓練していくと、誤差曲線と再構成バーの動きから、線形 AE が PCA と等価であることがじわじわ見えてきます。

パラメータ設定
ボトルネック次元 K
学習率 η
反復回数
ノイズ σ

入力次元 D = 10 固定。本質次元 3 の信号にノイズを加算し、N = 50 サンプルで訓練しています。

計算結果
ボトルネック次元 K
最終再構成 MSE
変動説明率 (1 - MSE/Var)
圧縮率 K/D
エンコード・ボトルネック・再構成と学習曲線

上段=入力 x(青)/中段=ボトルネック z/下段=再構成 x̂(橙、入力に重ね描き)/右下=反復回数 vs MSE

理論・主要公式

1D 線形オートエンコーダは、入力 $x \in \mathbb{R}^D$ をエンコーダ行列 $W_e \in \mathbb{R}^{K \times D}$ で低次元の潜在表現 $z$ に圧縮し、デコーダ行列 $W_d \in \mathbb{R}^{D \times K}$ で元の次元に戻します。

エンコード・デコードと再構成誤差:

$$z = W_e\,x, \qquad \hat{x} = W_d\,z = W_d\,W_e\,x$$ $$L = \lVert x - \hat{x} \rVert^2$$

確率的勾配降下法の更新式(学習率 $\eta$):

$$W_e \leftarrow W_e + 2\eta\,W_d^{\top}(x - \hat{x})\,x^{\top}$$ $$W_d \leftarrow W_d + 2\eta\,(x - \hat{x})\,z^{\top}$$

最適化が収束すると $W_d W_e \approx V V^{\top}$($V$ は上位 $K$ 主成分)となり、線形 AE は PCA と等価な部分空間射影になります。

1D 線形オートエンコーダ・シミュレーターとは

🙋
オートエンコーダって、入力をそのまま出力するだけのネットワークですよね?それの何が面白いんですか?
🎓
ざっくり言うと、途中に「ボトルネック」と呼ばれる細い層を挟むのがミソだ。例えば 10 次元の入力を、たった 3 次元に圧縮してから元の 10 次元に戻すように訓練する。もし入力が本当に 10 次元の自由度を持っていたら復元は不可能だけど、実はデータが「3次元の薄い空間」に乗っているだけなら、ほぼ完璧に復元できる。シミュレーターで K = 3 のまま「再訓練」を押すと、変動説明率が 99% を超えるはずだよ。
🙋
確かに!じゃあ K を 1 に下げてみたら、説明率がガクッと下がりました。これって、3次元の情報を 1 本のベクトルに押し込むのは無理ってことですか?
🎓
その通り。情報理論的に言うと、本質的に 3 次元の信号を 1 次元の数で表すには情報を 3 分の 1 まで捨てる必要があり、残り 2 方向の分散はそのまま「再構成誤差」として現れる。線形 AE の場合は、K 次元に押し込むときの最適解が「上位 K 主成分への射影」と一致することが理論的に証明されている。だから線形 AE は実質 PCA なんだ。
🙋
え、PCA と同じなんですか?じゃあ何のためにオートエンコーダを使うんですか?
🎓
良い質問。線形のままなら確かに PCA で十分。でもエンコーダとデコーダに非線形な活性化関数(ReLU や tanh など)を入れた瞬間、「曲がった多様体」に沿った圧縮ができるようになる。例えば画像の MNIST 数字データは「784 次元の中の薄い曲面」に乗っていて、これは線形空間では捉えられない。実務では画像圧縮、異常検知、ノイズ除去、生成モデル(VAE)など多彩に応用されているよ。
🙋
ノイズのスライダーを上げると、3 次元なのに説明率が下がっていきます。これは何が起きているんですか?
🎓
それが「ノイズの床」だよ。データの分散のうち、本質的な 3 次元成分による分散は固定で、ノイズが加わると総分散がそれより大きくなる。K = 3 のオートエンコーダは本質成分しか捉えられず、ノイズ成分は再構成誤差として残る。だから理論的な再構成 MSE は約 $\sigma^2$ になる。これは逆に言えば「オートエンコーダはノイズを自動で取り除く」というデノイジングの仕組みでもあるんだ。

よくある質問

学習率が大きすぎると、勾配降下が損失の谷を跨いで反対側へ飛び出し、MSE が増えたり振動したりします。線形 AE は二次関数の最小化問題なので、極端な η では発散して NaN になることもあります。本シミュレーターでは η = 0.05 程度を初期値とし、η を 0.3 以上にすると発散傾向が見られる場合があります。安定が崩れたら η を 0.01 〜 0.05 の範囲に戻してください。
SGD は確率的なので、反復回数が少ないと最適解への到達が不十分です。本シミュレーターでは反復回数を 10 まで落とすと、K = 3 でも変動説明率が大きく下がることが確認できます。500 〜 1000 回程度を目安に、学習曲線が平坦になっていることを確認してください。なお、線形 AE は閉形式解(SVD)でも解けますが、ここでは深層学習に通じる SGD で訓練しています。
いいえ、必ずしも一致しません。線形 AE の最適解は「上位 K 主成分が張る部分空間」までは一意に決まりますが、その内部での回転には自由度があります。同じ部分空間への射影は無数の (We, Wd) の組み合わせで実現できるからです。主成分そのものを取り出すには、訓練後に We·X の共分散行列を再度対角化する後処理が必要になります。
K を 3 より大きく(例えば 5 や 9 に)しても、再構成 MSE はそれ以上下がりません。本質的に 3 次元の情報+ノイズしかないため、追加の次元はノイズ成分の一部を学習してしまうだけです。むしろ過剰なボトルネック次元は「ノイズの暗記」につながり、新しいデータでの汎化性能を下げる場合があります。これがオートエンコーダの正則化として K を小さく保つ理由の一つです。

実世界での応用

異常検知:正常データだけでオートエンコーダを訓練すると、正常な入力は低い再構成誤差で復元できるが、異常な入力は誤差が大きくなります。製造ラインの振動データ、医療画像、ネットワーク通信のログなど、ラベル付き異常データが少ない状況で広く使われている手法です。本シミュレーターのように「本質次元 + ノイズ」というデータ構造を学習する仕組みが基礎になっています。

画像・動画の圧縮:JPEG/MPEG の代替として、深層オートエンコーダによる学習型画像圧縮が研究されています。エンコーダが画像をコンパクトな潜在表現に変換し、デコーダが復元します。線形 AE はその出発点で、PCA 圧縮や顔認識の Eigenface 法と数学的に等価です。

表現学習・特徴抽出:大量のラベルなしデータからオートエンコーダで「意味のある特徴」を学び、それを下流のタスク(分類・回帰)に使う事前学習として利用されます。BERT や GPT といった現代の自己教師あり学習も、広い意味では「入力の一部を予測する」オートエンコーダ的な発想を継承しています。

生成モデル(VAE・拡散モデルの基礎):変分オートエンコーダ(VAE)は潜在空間に確率分布を導入することで、新しいサンプルを生成できるようにした拡張です。さらに近年の拡散モデルも、潜在空間でのオートエンコーダ的な発想と密接に関係しています。線形 AE はこれら最先端モデルの最も基本的な土台にあたります。

よくある誤解と注意点

最も多い誤解は、「オートエンコーダは魔法のように情報を圧縮できる」と思い込むことです。情報理論的には、K 次元のボトルネックを通せる情報量には上限があり、データの本質次元を下回る K では情報の損失は不可避です。本シミュレーターで K = 1 や K = 2 にしてみると、変動説明率が大きく下がることがすぐに分かります。「データの本質次元を見極める」のがオートエンコーダ設計の出発点です。

次に多いのが、線形 AE と PCA を別物だと考えてしまうことです。前述のとおり、MSE 損失で訓練した線形 AE の最適解は PCA の上位 K 主成分への射影と一致します。だから「線形 AE を使う意味」は、深層・非線形 AE への入り口としての教育的価値や、SGD による大規模データへのスケーラビリティにあります。生のデータをそのまま線形 AE に流すのは、計算コストの観点では SVD で十分なケースが多いです。

最後に、「再構成誤差がゼロに近づくことが常に望ましい」と考えるのも危険です。ノイズの多いデータで誤差をゼロに追い込むと、ネットワークはノイズまで学習してしまい、新しいデータへの汎化が壊れます。本シミュレーターで σ = 0.5 程度のノイズを設定したまま K を上げていくと、誤差は下がる一方で「ノイズの暗記」が起こります。ボトルネック次元・学習率・反復回数を適切に選び、検証データでの再構成誤差を併せて見ることが実務上は不可欠です。