「第五章」の編集履歴(バックアップ)一覧に戻る

第五章 - (2011/03/09 (水) 00:41:38) のソース

*第五章 ニューラルネットワーク
-今までの固定された基底関数による回帰およびクラス分け問題は、次元の呪いによってその実用性は限定されている。基底関数をパラメータ化することを許容し、それらのパラメータを学習することによってその問題点を克服したのがフィードフォワード型ニューラルネットワーク(&italic(){feed-forward neural network})、または多層パーセプトロン(&italic(){multilayer perceptron})。他には複数の基底関数のセットを選択するサポートベクトルマシン(&italic(){support vector machine})、関連ベクトルマシン(&italic(){relevance vector machine})などの方法もある。
-ニューラルネットワークの利点は、多くの場合その結果が非常に簡単であること。その代償として、関連ベクトルマシン同様、ネットワーク学習の基礎をなす尤度関数はモデルパラメータの凸関数ではない。

**フィードフォワード型ニューラルネットワーク
-2層(3層と呼ぶこともある)の場合の出力は
   $$y_k({\bf x},{\bf w}) = \sigma\left(\sum_{j=1}^{M}w_{kj}^{(2)}h\left(\sum_{i=1}^{D}w_{ji}^{(1)}x_i + w_{j0}^{(1)}\right) + w_{k0}^{(2)}\right)$$
$$h$$、$$\sigma$$は活性化関数

-中間ユニットがtanh活性化関数を持つ場合、tanhは奇関数だからある点の符号を反転させた対称な点を有するため、2つの異なる重みベクトルおよびバイアスの符号の一部を反転させることにより同一の入力から出力への関数を作ることができる。中間ユニットが$$M$$個ある場合には、一つの重みベクトルは$$2^M$$個の存在する等価な重みベクトルのうちの一つに過ぎないことになる(符号反転による対称性)。さらに、中間ユニット間の重みベクトルおよびバイアスを交換することによって等価な入力から出力への関数を作ることができる。すなわち、$$M$$個の中間ユニットについて、$$M!$$個の等価な重みベクトルのセットが存在することになる(交換による対称性)。結局、一つの重みベクトルは、等価な$$M!2^M$$個の重みベクトルの一つに過ぎないことになる。この対称性は活性化関数がtanhでない場合にも当てはまる。

**ネットワーク学習(Network Training)
-ニューラルネットワークでは、問題に応じてその出力ユニットの活性化関数および誤差関数が選択される。
|BGCOLOR(#eee):CENTER:&bold(){問題の種類}|BGCOLOR(#eee): |BGCOLOR(#eee):CENTER:&bold(){出力ユニット活性化関数}|BGCOLOR(#eee):CENTER:&bold(){誤差関数}|
|回帰| |線形|二乗和|
|2クラス識別| |ロジステッィク・シグモイド|クロスエントロピー|
|多クラス識別| |ソフトマックス|多クラスクロスエントロピー|

-それぞれ適切な誤差関数を最小化する重みベクトル$${\bf w}$$を求めることになるが、$$E({\bf w})$$は$${\bf w}$$の平滑な連続関数だからそれが最小となる点においてその傾きは0に等しくなる。この点を停留点といい、それをより細かく分類すると、極小点、極大点、鞍点の3つに分かれる。誤差関数は通常、重みベクトルおよびバイアスの高次非線形関数であるから、停留点は複数存在する。すでに見たように、重み空間上の一つの重みベクトルは複数の等価な$$M!2^M$$個の重みベクトルのうちに一つに過ぎないうえに、非等価な最小点も複数存在する。ニューラルネットワークの実装においては大域的最小値(&italic(){global minimum})を求める必要はなく、局所的最小値(&italic(){local minimum})の幾つかを比較することで足りる。
-$$E({\bf w}) = 0$$の解析解を求めることは出来ないので反復的手法で数値解を求めることになるが、その際に傾き情報(&italic(){gradient information})を利用することが多い。

***局所的二次近似(&italic(){local quadratic approximation})
-誤差関数$$E({\bf w})$$の点$$\hat{{\bf w}}$$における二次テイラー展開
   $$E({\bf w}) \simeq E(\hat{{\bf w}}) + \left({\bf w} - \hat{{\bf w}}\right)^{\rm T}{\bf b} + \frac{1}{2}\left({\bf w} - \hat{{\bf w}}\right)^{\rm T}{\bf H}\left({\bf w} - \hat{{\bf w}}\right)\hspace{2em}\left(5.28\right)$$
ただし、$${\bf b}$$は点$$\hat{{\bf w}}$$における傾き、$${\bf H}$$は$$\hat{{\bf w}}$$におけるヘッセ行列。点$$\hat{{\bf w}}$$が誤差関数の一つの極小値を与えるとき、$$\hat{{\bf w}}$$において$$\nabla E = 0$$より、上の近似式の一次項が消える。さらに$${\bf H}$$の固有方程式
   $${\bf H}{\bf u}_i = \lambda_i{\bf u}_i$$
($${\bf u}_i$$は正規直交)より
   $$\left({\bf w} - \hat{{\bf w}}\right) = \sum_{i}a_i{\bf u}_i$$
とおく(これは原点を点$$\hat{{\bf w}}$$に移し、座標軸を固有ベクトルの方向に回転させることに等しい)と、(5.28)は
   $$E({\bf w}) = E(\hat{{\bf w}}) + \frac{1}{2}\sum_{i}\lambda_i\alpha_i^2$$
と書け、これは中心を$$\hat{{\bf w}}$$とし、その軸が$${\bf H}$$の固有ベクトルに平行な楕円の形となる。
-また、停留点$$\hat{{\bf w}}$$におけるヘッセ行列$${\bf H}$$が正定値ならば誤差関数はその近傍において凸だから$$\hat{{\bf w}}$$は極小値。任意のベクトル$${\bf v}$$が正規直交固有ベクトル$${\bf u}_i$$の線形結合として表されるから、
   $${\bf v}^{\rm T}{\bf H}{\bf v} = \sum_{i}c_i^2\lambda_i\hspace{2em}\left({\bf v} = \sum_{i}c_i{\bf u}_i\right)$$
と書ける。従って$${\bf H}$$が正定値であるための必要十分条件は、$${\bf H}$$のすべての固有値が正であること。

***傾き情報の利用
-(5.28)の誤差平面は$${\bf b}$$および$${\bf H}$$によって決定されるから、重み空間の次元を$$W$$とすると含まれる可変パラメータの数は$$W(W + 3)/2$$となる。したがって(5.28)における最小値探索アルゴリズムは、$$W$$の増加に対して$$O(W^2)$$の関数評価と$$O(W)$$のステップの増加を伴い、全体として$$O(W^3)$$の計算量増加を伴う。これに対して傾き情報を利用した場合には$$\nabla E$$の評価は$$O(W)$$オーダでしか増加しないため、全体として$$O(W^2)$$の計算量増加で済む。

***最急降下法による最適化
-最急降下法(&italic(){gradient descent optimization})は、
   $${\bf w}^{(\tau + 1)} = {\bf w}^{(\tau)} - \eta\nabla E({\bf w}^{(\tau)})$$
によって負の傾きの方向に向かって反復的に重み更新を繰り返して最適な誤差関数の最小値を求める。$$\eta$$は正数で学習レート(&italic(){learning rate})と呼ばれる。この更新は、毎回学習データ全体についてなされる必要がある。このような手法を一括学習(&italic(){batch method})という。最急降下法よりもより優れた手法として、共役勾配法(&italic(){conjugate gradient method})や擬ニュートン法(&italic(){quasi-Newton method})などがあり、これらの手法による場合には、誤差関数は大域的最小値に達するまで更新ごとに必ず減少し続ける。
-逐次バージョンとして逐次最急降下法(&italic(){sequential gradient descent})あるいは確率的最急降下法(&italic(){stochastic gradient descent})がある。バッチ(一括)的手法と逐次(オンライン)的手法との折衷もある。逐次的手法の利点として、データ量が増えても毎回の計算量が増えない点があるが、その一方で逐次的手法では極小点を見逃してしまう可能性がある。

**誤差逆伝播(&italic(){error backpropagation})
-傾き情報を利用する誤差関数最適化の各ステップにおいては、重みを更新する前にまず傾きの更新を行う必要があり、誤差逆伝播法はこの傾き更新のための手法。
-フィードフォワード型ニューラルネットワークにおいて、$$j$$番目のユニットが計算する入力の重み付き和を
   $$a_j = \sum_{i}w_{ji}z_j$$
(バイアス項は省略)とすると、これがこのユニットの活性化関数によって
   $$z_j = h(a_j)$$
として出力される。これらがニューラルネットワークにおいて交互に適用されていく過程を順伝播(&italic(){forward propagation})という。
-誤差逆伝播法の手順
1. 入力ベクトル$${\bf x}_n$$をネットワークに対して適用し、順伝播を行い全てのユニットの出力を得る。
2. 全ての出力ユニットにつき$$\delta_k = y_k - t_k$$を評価する。
3. $$\delta_j = h'(a_j)\sum_{k}w_{kj}\delta_k$$により各ユニットの$$\delta_j$$を逆伝播させる。
4. $$\frac{\partial E_n}{\partial_{w_{ji}}} = \delta_j z_j$$により最終的な傾き情報を得る。

***逆伝播の効率
-逆伝播の計算量は重みベクトルの次元を$$W$$とすると最善で$$O(W)$$となるが、微分を求めるのに中心差分法(&italic(){central differences method})を用いた場合には$$O(W^2)$$必要となる。それでも中心差分法による計算は、逆伝播法の実装において重要な検証法で不可欠。従って、計算は効率を理由に逆伝播法によって行うがその結果は中心差分法によって得られた数値と比較検証されなければならない。


-逆伝播法は、誤差関数の重み以外の変数についての微分(例えばヤコビ行列)や二階偏微係数(ヘッセ行列)を計算するのにも利用できる。ヤコビ行列はネットワークが複数のモジュールから成る場合の傾き情報を計算するために利用できる。ヘッセ行列は以下のような点で重要。
1. ニューラルネットワーク学習に使用される幾つかの非線形最適化アルゴリズムは、誤差平面のsecond-order propertiesを考慮するが、それはヘッセ行列によって制御される。
2. ヘッセ行列は学習データの小さな変化に追随して速く再学習を行う手法の基礎となる。
3. ヘッセ行列の逆行列は、ネットワークの'剪定'アルゴリズムの一部として、最も重要性の小さい重みを特定するために利用されている。
4. ヘッセ行列はベイジアン・ニューラルネットワークにおけるラプラス近似において中心的役割を果たす。
-対角近似によってヘッセ行列の逆行列を求めるのを容易にすることも可能だが、実際にはヘッセ行列は対角行列に近くないことが多い。

***外積近似
-ニューラルネットワークで回帰問題を解く場合、二乗和誤差関数(1変数)
   $$E = \sum_{n=1}^{N}\left(y_n -t_n\right)^2$$
を前提にすれば、ヘッセ行列は(ヘッセ行列のチェーンルールを使って)
   $${\bf H} = \nabla\nabla E = \frac{\partial y}{\partial w}\frac{\partial^2 E}{\partial y\partial y^{\rm T}}\left(\frac{\partial y}{\partial w}\right)^{\rm T} + \frac{\partial E}{\partial y}\frac{\partial^2 y}{\partial w \partial w^{\rm T}} = \sum_{n=1}^{N}\nabla y_n(\nabla y_n)^{\rm T} + \sum_{n=1}^{N}\left(y_n - t_n\right)\nabla\nabla y_n$$
誤差二乗和を最小化する最適な関数は目標データの条件付平均となる(§1.5.5)から、その場合上式第二項の$$(y_n - t_n)$$の平均は0になる。従って、n個の学習データについて和をとった場合、その値が二階偏微分$$\nabla\nabla y_n$$と無相関という前提の下で、第二項を無視してよい。すると回帰問題では出力ユニットの活性化関数は恒等変換だから
   $${\bf H} \simeq \sum_{n=1}^{N}{\bf b}_n{\bf b}_n^{\rm T}\hspace{2em}\left({\bf b}_n \equiv \nabla a_n = \nabla y_n\right)$$
と近似することができる。これをレーベンバーグ-マルカート近似(&italic(){Levenberg-Marquardt approximation})といい、これによるとヘッセ行列の要素は$$O(W^2)$$ステップで計算することができる。
-ただしこの手法は適切に訓練済みのネットワークに対してしか使えないこと、および、一般の場合には第二項は無視しえないことに注意する必要がある。
-この近似法を用いてヘッセ行列の逆行列を逐次的に求めることが出来る。準ニュートン非線形最適化アルゴリズムのように、ネットワーク学習中に同時にヘッセ行列の近似を伴うものもある。
-二階の偏微係数も一階同様に有限差分法($$O(W^3)$$)、中心差分法($$O(W^2)$$)で求めることができる。
-ヘッセ行列そのものを直接求めることもむろん可能。
-ヘッセ行列$${\bf H}$$ではなくベクトルとの積$${\bf v}^{\rm T}{\bf H}$$が求まればよい場合には$$O(W)$$ステップでこれを直接求める方法がある。

***ニューラルネットワークの汎化








   



//














//
目安箱バナー