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

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

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

パラメータ設定
潜在(ボトルネック)次元 K
学習率 η
反復回数(エポック)
入力信号の種類
ノイズ σ

入力次元 D = 10 固定。選んだ信号で本質次元が決まり、ノイズを加えて N = 50 サンプルで SGD 訓練します。エポックが進むと損失が下がり、再構成 x̂ が入力 x に重なっていきます。

計算結果
0
エポック epoch
再構成損失 MSE
潜在次元 K
圧縮率 K/D
エンコード・ボトルネック・再構成と学習曲線

上段=入力信号 x(青実線)と再構成 x̂(橙破線)/左下=ボトルネック z(K個)/右下=学習ステップ vs 損失MSE。エポックが進むと x̂ が x に重なり、損失が下がります。

理論・主要公式

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 を上げていくと、誤差は下がる一方で「ノイズの暗記」が起こります。ボトルネック次元・学習率・反復回数を適切に選び、検証データでの再構成誤差を併せて見ることが実務上は不可欠です。

使い方ガイド

  1. ボトルネック次元 K を1~D-1の範囲で設定します。K=2のとき元信号を2次元に圧縮します
  2. 学習率(Eta)を0.001~0.5から選択し、SGD訓練の収束速度を制御します。既定の0.05が安定です
  3. 訓練イテレーション数を10~2000に設定します。500イテで十分収束する場合が多く、圧縮率が高い場合は2000まで増やします
  4. 入力信号の標準偏差(Sigma)を0.00~1.00で調整し、ノイズレベルを制御します
  5. シミュレーション実行後、再構成MSEと説明率を確認し、K値の妥当性を判定します

具体的な計算例

入力次元D=10の加速度センサ信号(Sigma=0.10)をK=3に圧縮する場合:η=0.05、イテレーション500で再構成MSE≈0.007に収束し、変動説明率は約97.7%に達します。圧縮率K/D=3/10=30%。PCA同等の性能により、センサデータストレージを70%削減しながら主要な信号特性を保持します

実務での注意点

  1. 機械学習での過学習防止:訓練データMSEが低下しても、テストセットで検証し、K値過小を避ける。産業用センサでは通常K=D/4~D/6で十分
  2. SGD収束不安定性:η>0.15では振動発散、η<0.001では千イテ以上必要。K>D/2の場合は学習率を半減推奨
  3. 信号処理の実装:再構成誤差が許容値を超える場合、カルマンフィルタとの組み合わせにより精度向上。工作機械の振動診断では説明率95%以上が必須