オートエンコーダ(3)

しかしこれは、人が個々のニューロン(=ノード)のパラメータをこのようにセットすれば主成分分析になる、というだけであって、出力信号をなるべく入力信号に近付けるという学習の結果、このようなパラメータの設定になる、というわけではありません。


そもそも出力信号を入力信号に合わせるのが目的であれば、各ニューロンが1つの入力信号しか受け取らず、そしてその入力をそのまま出力にするようなパラメータ設定でも、この目的は達成出来ます。


ですから、オートエンコーダが学習の結果、主成分分析の結果を表示するわけではありません。

では、中間層のニューロンの数を1つにしてみたらどうなるでしょうか? 入力層では2次元だったデータが中間層では1次元になるので、出力層が入力層の信号を完全に復元することは不可能です。オートエンコーダは学習によって出力信号を入力信号になるべく近付けるように、パラメータを調整します。


入力信号がN個あるとし、そのi番目の信号を(x_i,y_i)で表すことにします。また、x_iの平均を\bar{x}y_iの平均を\bar{y}で表すことにします。つまり

  • \bar{x}=\frac{1}{N}\Bigsum_{i=1}^N{x_i}・・・・(5)
  • \bar{y}=\frac{1}{N}\Bigsum_{i=1}^N{y_i}・・・・(6)

です。ところで、座標で考えた場合、点(x_i,y_i)と点(\bar{x},\bar{y})の距離は座標軸を回転させても変化しません。距離をL_iで表すと

  • L_i^2=(x_i-\bar{x})^2+(y_i-\bar{y})^2・・・・(7)

は座標軸を回転させても変化しません。よってこの平均

  • \bar{L^2}=\frac{1}{N}\Bigsum_{i=1}^N(x_i-\bar{x})^2+(y_i-\bar{y})^2・・・・(8)

も座標軸を回転させても変化しません。ところで、x_i標準偏差\sigma_xy_i標準偏差\sigma_yとすると

  • \sigma_x^2=\frac{1}{N}\Bigsum_{i=1}^N(x_i-\bar{x})^2・・・・(9)
  • \sigma_y^2=\frac{1}{N}\Bigsum_{i=1}^N(y_i-\bar{y})^2・・・・(10)

なので、

  • \bar{L^2}=\sigma_x^2+\sigma_y^2

となります。ということは\sigma_x^2+\sigma_y^2は座標軸を回転させても値が変化しない、ということです。
そこで座標軸(x,y)を回転させた座標軸を(v,w)で表すことにし、v_iw_i標準偏差をそれぞれ\sigma_v\sigma_wで表すことにします。すると

  • \sigma_x^2+\sigma_y^2=\sigma_v^2+\sigma_w^2・・・・(11)

となります。ここで、出力信号を入力信号に最も近付けることが\sigma_w^2を最小にすることと同等である、ことが分かっているとします(その理由はのちに述べます)。式(11)から\sigma_v^2を最大にするように座標軸を選択することが\sigma_w^2を最小にすることになります。主成分分析では第1主成分を、分散が最大になる方向に取りますから、v軸を第1主成分の方向に取れば、\sigma_v^2は最大になり、その結果\sigma_wは最小になります。