オートエンコーダ
オートエンコーダは中間の潜在コードを通して入力を再構成します。本課では 8 座標のコードが 2 座標より未知の手書き数字を平均的によく再構成します。しかし数字で学んだ同じデコーダは市松模様に失敗します。幅を増やしても未知のパターンを復元できる保証はありません。
コードは描き直す相手へ渡す短い説明です。相手はその説明と経験を使います。数字向けの説明が市松模様にも役立つとは限らず、座標を増やすだけで経験を補えるわけではありません。
符号化と再構成
エンコーダは x を z へ、デコーダは z を再構成 x̂ へ写します。両者の重みを調整して入力との差を減らします。クラスラベルは不要で、入力画像自身が目標です。Deep Learning 第 14 章はこの目的と単純コピーの制約を説明しています。
不足完備型はコード座標数を入力値数より少なくし、コンパクトな表現が何を保つか調べます。コードを迂回するコピー経路があると検査になりません。制約は有用な表現を促しえても、保証はしません。
デコーダが読むのはコードと学習済み重みだけで、原画像を見られません。原画素は誤差測定に使います。本課は 64 画素です。
MSE = Σᵢ(x̂ᵢ − xᵢ)² / 64
二乗で正負の相殺を防ぎ、平均で画素当たりの量にし、背景も数えます。潜在座標は学習した数で、画素、数字の確率、名前の付く形とは限りません。8 に見えても、出力はクラス 8 の判定ではなく 64 強度です。
ネットワーク
入力は [0,1] の 8×8 グレースケール画像、構造は 64 → 24 → k → 24 → 64、k = 2、4、8。隠れ層は tanh、最終層は sigmoid です。行ベクトル表記では:
hEnc = tanh(x W₁ + b₁)
z = tanh(hEnc W₂ + b₂)
hDec = tanh(z W₃ + b₃)
x̂ = sigmoid(hDec W₄ + b₄)
ステップ実行
既定は 8 座標モデルと元データ行 249 の手書き 8 です。scikit-learn の 8×8 digitsで、MNIST ではありません。他の 1,437 枚で学習し、360 枚を留出しています。この画像は再構成差を見せるため選びました。
- 目標:64 画素を再構成します。数字ラベルは例を選ぶメタデータだけです。
- 符号化:丸めたコードは
[0.0612, 0.4671, −0.3931, 0.0032, −0.1654, −0.0009, 0.4504, 0.2202]。デコーダはこれと重みを使います。 - 復号:大まかな形は残りますが各強度は異なります。
- 一画素から平均へ:0 始まり
[6,4]の原値0.4375、再構成約0.8077649、二乗誤差約0.1370961が最大項です。64 項の平均は0.0106606。最大と平均は別の問いです。 - 学習記録を戻す:エポック 0 の画像 MSE は
0.1891698、1、10、50、200 は0.0887845、0.0467999、0.0120355、0.0106606。画像は学習に使わず、これはオフライン記録で再生時の訓練ではありません。 - 同画像と集合を比較:別に学習した 2 座標モデルは
0.0465775で細部を失います。同じ 360 留出画像の平均は 2 座標0.0375854、8 座標0.0148576で、集合でも改善しています。 - 入力の種類を変更:8 座標の最終重みを固定し合成市松模様を入れると MSE
0.4291607。交互の模様を復元できず、数字経験だけでは万能コピーになりません。
学習図は 360 留出数字の平均 MSE で、現在の画像とは別です。200 エポックでは 0.0148576 と 0.0106606。横軸は実際の 0、1、10、50、200 の間隔で、連続する五更新ではありません。
幅と入力分布
幅変更は別々に学習したモデルの選択です。分割、24 隠れユニット、最適化手法、エポック、シード方針は固定でも、パラメータ数と重みは変わります。8 座標から六つを削る操作ではありません。
| 座標数 | 既定数字 MSE | 360 留出数字の平均 MSE | 市松模様 MSE |
|---|---|---|---|
| 2 | 0.0465775 | 0.0375854 | 0.4074093 |
| 4 | 0.0171610 | 0.0247478 | 0.4114591 |
| 8 | 0.0106606 | 0.0148576 | 0.4291607 |
数字では広いモデルほどよく、市松模様では順位が逆です。平均誤差には入力分布を添えます。全例の改善や最適な重みへの到達は保証しません。
8 実数は 8 ビットではありません。次元比はファイル圧縮率でなく、精度とデコーダの保存費用も必要です。
必要なコードを選ぶ
同じ留出数字で比較し、コード予算内で誤差許容を満たす幅を選び、画像も見て平均が隠す細部を調べます。許容値は用途で決めます。この集合で選んだ後の最終報告には独立評価が必要です。
未知の入力種は別に検証し、数字平均で市松模様の失敗を隠さないようにします。z を別課題へ使うなら、その課題で直接評価します。再構成だけでは転用の有用性は分かりません。PCAと逆伝播も参照してください。
境界ケース
- 2 座標:本設定の数字平均誤差は最大ですが、すべての二次元符号化が失敗する証明ではありません。
- 市松模様:三モデルとも MSE は 0.4 超で、訓練外の合成入力です。選ぶと全説明を通じて同じ失敗が見えます。
- 再生・速度変更:値は同じで、重み学習もノイズ追加もしません。
- 幅の選択肢:2、4、8 は提供モデルの範囲です。大きい・過完備のコードでコピー以上を学ぶには他の制約が必要になります。
よくある間違い
- デコーダへ原画像を渡す、またはコードを迂回する。ゼロ誤差でもコードの保持能力を示せません。
- MSE をクラス確信度と読む。画素差だけを測っています。
- 自動的なノイズ除去を期待する。本課は同画像を入出力にし、ノイズ除去型は壊した入力ときれいな目標を使う別課題です。
- 任意の潜在値をサンプルして有効画像を期待する。通常型に学習済みサンプリング事前分布はなく、再構成だけでは生成能力を保証しません。
- 低誤差を可逆圧縮と呼び、次元をビット数と扱う。
モデルの範囲
小型全結合、8×8 数字、エンコーダ/デコーダ単位の表示、五つのオフライン記録です。Adam で 200 エポック学習し、表示画像は留出です。畳み込み、正則化、ノイズ除去、変分推論、潜在事前分布は含みません。拡散モデルはノイズから新標本を生成する別の課題です。
続けて学ぶ
同じ手法につながるレッスンや、次の概念への入口です。
鍵マークのあるレッスンの操作には有料アクセスが必要です。解説はすべて無料で読めます。
誤りや気になる点を見つけましたか? フィードバックを送る。