工場統計力学(建設中!) このページをアンテナに追加 RSSフィード

いまだ輝かざる暁の数は、げに多かり    (リグ・ヴェーダ)

2017-04-16

[]オートエンコーダ(6) オートエンコーダ(6)を含むブックマーク オートエンコーダ(6)のブックマークコメント

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

f:id:CUSCUS:20170416092306p:image

入力層と出力層のノードの数が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}のみになり、問題が扱いやすくなります。

トラックバック - http://d.hatena.ne.jp/CUSCUS/20170416

2017-04-10

[]オートエンコーダ(5) オートエンコーダ(5)を含むブックマーク オートエンコーダ(5)のブックマークコメント

前回までで何とか2次元のデータについてオートエンコーダが主成分分析による次元削減を実行することを説明しましたが、この説明を書いているうちに自分の理解の浅さに気づきました。この結果をより確かなものにするためには以下のような課題があります。

  1. 一般の次元の場合にオートエンコーダが主成分分析による次元削減を実行することを証明しなければならないでしょう。
  2. オートエンコーダ(3)(4)」での説明で、¥sigma_vを最大にすることと主成分分析で第1主成分をv軸に採用することを同じことであるとして説明を進めましたが、よく考えるとこの理由が明らかではありません。2次元の場合、主成分分析の説明から図像的には何となくそんな気がするものの、もっと多次元になった場合に本当にそうなのか、きちんと説明する必要があります。
  3. オートエンコーダでは入力信号と出力信号をなるべく近付けるように動作するのですが、それだけでは必ずしも中間層の出力が一意に決まるとは限らないことに気づきました。たとえば下の図で、中間層がvではなく2vであったとしても、その代わりに出力層の関数を従来の関数に1/2を掛けたものに置き換えれば、出力信号は同じものが得られるはずです。そうすると、中間層の結果を一意にするために、中間層のニューロンの重みと出力層のニューロンの重みの間に何か制約条件を課しておきたい気になります。
    • f:id:CUSCUS:20170408135533p:image
  4. オートエンコーダ(3)(4)」の説明では座標の変換を座標の回転だけに限定しましたが、本来、このニューロンによる入力から出力への変換は一般の線形変換であって、座標の回転だけに限定されません。さらに、しきい値hも存在するので、平行移動も変換の中に含まれます。このような一般の線形変換を前提にした場合、オートエンコーダが主成分分析による次元削減を実現出来るかどうか調べる必要があります。

まずは2番目の課題を検討していきます。証明すべき事柄は、

  • 主成分分析の第1主成分の分散(=標準偏差の2乗)は、元のデータのどの座標軸についての分散よりも大きいかあるいは等しい。

ということです。この問題は主成分分析から離れて線形代数学の問題に言い換えることが出来、そのように言い換えると

  • 実対称行列Aを対角化した行列をBとする。Bの対角要素のうち最大のものをb_{¥rm{max}}とする。するとAの対角要素の中で、b_{¥rm{max}}より大きいものは存在しない。

という事柄になります。これを証明してみましょう。


実対称行列Aを対角化した行列がBなので、ある直交行列Uによって

  • B=U^{-1}AU

と書くことが出来ます。ここから

  • A=UBU^{-1}

となります。また、U直交行列なのでU^{-1}=U^Tとなるので

  • A=UBU^T・・・・(16)

となります。ここでA,B,Uの次元をNとします。また、それぞれの行列のij列の要素をa_{ij}b_{ij}u_{ij}で表すことにします。すると式(a1)を要素で表すと

  • a_{ij}=¥Bigsum_{k=1}^N¥left(u_{ik}¥Bigsum_{m=1}^Nb_{km}u_{jm}¥right)・・・・(17)

となります。ここでBは対角行列なので、k¥neq{m}のときにb_{km}=0となります。よって式(17)は

  • a_{ij}=¥Bigsum_{k=1}^N (u_{ik}b_{kk}u_{jk})・・・・(18)

となります。Aの対角要素はa_{ii}なので式(18)から

  • a_{ij}=¥Bigsum_{k=1}^N (u_{ik}^2b_{kk})・・・・(19)

Bの対角要素のうち最大のものがb_{¥rm{max}}だったので任意のkについてb_{¥rm{max}}¥ge{b}_{kk}。また、u_{ik}^2¥ge{0}なので、

  • u_{ik}^2b_{kk}{¥le}u_{ik}^2b_{¥rm{max}}・・・・(20)

式(19)(20)から

  • a_{ii}{¥le}¥Bigsum_{k=1}^N(u_{ik}^2b_{¥rm{max}})

よって

  • a_{ii}{¥le} b_{¥rm{max}}¥Bigsum_{k=1}^Nu_{ik}^2・・・・(21)

ところで u_{ik}は、UN個の行ベクトルとみなした場合のi行目の行ベクトルの各要素です。Ui行目の行ベクトル¥vec{u_i}で表すと、

  • ¥Bigsum_{k=1}^Nu_{ik}^2

¥vec{u_i}の大きさ|¥vec{u_i}|になります。ところでU直交行列なので¥vec{u_i}は正規直交系を成しています。よって|¥vec{u_i}|=1です。よって

  • ¥Bigsum_{k=1}^Nu_{ik}^2=1

よって式(22)は

  • a_{ii}{¥le}b_{¥rm{max}}・・・・(22)

となるので、Aの対角要素の中で、b_{¥rm{max}}より大きいものは存在しない、ということが証明されました。

トラックバック - http://d.hatena.ne.jp/CUSCUS/20170410

2017-04-09

[]オートエンコーダ(4) オートエンコーダ(4)を含むブックマーク オートエンコーダ(4)のブックマークコメント

出力信号を入力信号に最も近付けることが¥sigma_w^2を最小にすることと同等である、というのはなぜでしょうか?

まず、出力信号を入力信号に最も近付けるということを定義しておきましょう。入力信号(x_i,y_i)を与えた時の出力信号を(x_i’,y_i’)で表します。二乗平均誤差Eを次の式で定義します。

  • E=¥frac{1}{N}¥Bigsum_{i=1}^N¥left¥[(x_i’-x_i)^2+(y_i’-y_i)^2¥right¥]・・・・(12)

そして、出力信号を入力信号に最も近付ける、というのはこのEを最小にすることであると定義します。これは点(x_i,y_i)と点(x_i’,y_i’)距離の2乗を全データ(N個ある)に渡って平均したものと解釈することが出来ます。

f:id:CUSCUS:20170408135533p:image:left

さて、今考えているオートエンコーダの構成では、左の図のようにノードの数を入力層、中間層、出力層の順に2、1、2としています。入力層のデータ(x_i,y_i)を中間層のニューロンによって座標変換して(v_i,w_i)と変換した場合、中間層にはニューロンが1個しかないのでv_iw_iのどちらかしか表すことが出来ません。ここでは中間層がv_iを表しているとします。するとw_iは表すことが出来ないので一定の値で代用します。つまりaをある定数であるとして(v_i,w_i)(v_i,a)で表すことになります。


もちろん、(v_i,w_i)(v_i,a)は一致しません。その差はこの2点間の距離|w_i-a|で表されます。出力層のニューロンは座標の逆変換をします。本来ならば(v_i,w_i)を逆変換して(x_i,y_i)戻るはずが、(v_i,a)を逆変換することになるので(x_i,y_i)とは異なった値になります。これが出力層の出力信号(x_i’,y_i’)になります。では(x_i,y_i)(x_i’,y_i’)距離を考えてみましょう。これは(v_i,w_i)(v_i,a)の間の距離に等しく、|w_i-a|となります。よって式(12)は

  • E=¥frac{1}{N}¥Bigsum_{i=1}^N(w_i-a)^2・・・・(13)

となります。まずEが最小になるように定数aを決めます。このためにはaw_iの平均¥bar{w}にすればよいことが分かります。よって

  • E=¥frac{1}{N}¥Bigsum_{i=1}^N(w_i-¥bar{w})^2・・・・(14)

となります。ところで式(14)の右辺は¥sigma_w^2そのものです。よって

  • E=¥sigma_w^2・・・・(15)

となります。よって、出力信号を入力信号に最も近付けることはEを最小にすることであり、さらにそれは¥sigm_w^2を最小にすることと同等である、ことが分かります。

2017-04-08

[]オートエンコーダ(3) オートエンコーダ(3)を含むブックマーク オートエンコーダ(3)のブックマークコメント

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

f:id:CUSCUS:20170408092533p:image:left


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


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

f:id:CUSCUS:20170408093344p:image:left

では、中間層のニューロンの数を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は最小になります。

2017-04-03

[]オートエンコーダ(2) オートエンコーダ(2)を含むブックマーク オートエンコーダ(2)のブックマークコメント

オートエンコーダが、主成分分析による次元削減を実行出来ることをこれから示していきます。

まず「次元削減(1)」で使った例を今回も使います。

f:id:CUSCUS:20170403203515p:image

今回、座標系(v,w)の原点は説明の都合上、座標系(x,y)の原点と同じ位置にしました。

主成分分析(6)」の式(18)で示したように座標系(x,y)から座標系(v,w)への変換式は

  • v=0.882x+0.471y・・・・(1)
  • w=-0.471x+0.882y・・・・(2)

でした。

になります。ここで下図のようなニューラルネットを考えます。

f:id:CUSCUS:20170403061608p:image

入力層のノードxyは式(3)(4)のx,yを表しています。そしてこれらが中間層のノードvノードwの入力になっています。まずノードvについて考えます。一般ニューロンの入力と出力の関係式はi番目の入力をX_i、出力をYとすると

  • Y=f(U)
  • U=¥Bigsum_iw_iX_i-h

の形をしています(ここでのXYは式(1)〜(2)に現れるxyとは無関係であると考えて下さい)。w_iは重みでありhしきい値です。今Y=f(U)が恒等写像Y=Uであると考えw_1=0.882w_2=0.471h=0であると考えれば、ニューロンの入力と出力の関係式は式(1)に一致します。つまり、上の図のノードvは式(1)の入出力関係を持つニューロンである、と考えることが出来ます。同様に考えて、ノードwを式(2)の入出力関係を持つニューロンである、と考えることが出来ます。出力層のノードxyについては「主成分分析(6)」の式(17)より、座標系(v,w)から座標系(x,y)への変換式は

  • x=0.882v-0.471w・・・・(3)
  • y=0.471v+0.882w・・・・(4)

となるので、それぞれ式(3)、(4)の入出力関係を持つニューロンと考えれば、オートエンコーダの特徴である、入力層と出力層の信号の一致、が実現されます。

トラックバック - http://d.hatena.ne.jp/CUSCUS/20170403