オートエンコーダ(6)

今まで書いてきたことを一般の次元に拡張してみます。

入力層と出力層のノードの数がM、中間層のノードの数がRで、M>Rであるとします。よって、このオートエンコーダへの入力データの次元数はMになります。入力層のj番目の入力をx_jで表します。中間層のk番目のノード(=ニューロン)の出力をy_kで表します。両者の関係は

  • y_k=\Bigsum_{j=1}w_{kj}x_j-h_k・・・・(23)

で定義されます。ここでw_{kj}は中間層のニューロンkの入力x_jについての重みであり、h_kは中間層のニューロンkしきい値です。次に出力層のj番目のニューロンの出力をx_j'とします。x_j'は中間層の出力y_kを受けて作成されるのであり、両者の関係は

  • x_j=\Bigsum_{k=1}W_{jk}y_k-H_j・・・・(24)

で定義されます。ここでW_{jk}は出力層のニューロンjの入力y_kについての重みであり、H_jは出力層のニューロンjしきい値です。このオートエンコーダの入力層にN個のM次元の入力データを入力し、出力層からの出力が入力層への入力データと出来るだけ近くなるように、w_{kj}h_kW_{jk}H_jを調整していきます。この「出来るだけ近くなるように」をもう少し厳密に定義しましょう。まずi番目の入力データを\vec{x}(i)で表します。そして\vec{x}(i)j番目の成分をx_j(i)で表すことにします。つまり\vec{x}(i)=[x_1(i),x_2(i),...,x_M(i)]です。同様にi番目の出力データを\vec{x}'(i)で表します。そして\vec{x}'(i)j番目の成分をx_j'(i)で表すことにします。出力層からの出力が入力層への入力データと出来るだけ近くなるようにするとは、以下で定義される入力と出力の間の2乗平均誤差Eを最小にすること、であるとします。

  • E=\frac{1}{N}\Bigsum_{i=1}^N\Bigsum_{j=1}^M(x_j'(i)-x_j(i))^2・・・・(25)

Eを最小にするようにw_{kj}h_kW_{jk}H_jを調整した結果、中間層の出力y_kが、入力データの主成分分析による次元削減になるかどうかを調べていきます。


ここで、式(23)が主成分分析の結果になりやすいように、以下のような小ワザを使います。
まず、N個の入力データの各成分の平均がゼロになるように、入力データの各成分の値からそれぞれの成分の平均を引いたものを、新しい入力データとします。そして式(23)のh_kh_k=0とし、式(24)のH_jH_j=0とします。
また、

  • W_{jk}=w_{kj}・・・・(26)

という制限を課します。すると式(25)のEを最小にするために調整するパラメータはw_{kj}のみになり、問題が扱いやすくなります。