###### tags: `lab` # 『深層学習』- 6章「深層順伝播型ネットワーク」 ## 概要および導入 - 深層順伝播型ネットワークは==多層パーセプトロン==や==順伝播型ニューラルネットワーク==とも呼ばれている。 - 順伝播と呼ばれている理由は「モデルの出力をモデル自体に戻す」ということがないことにも起因。フィードバックがあるものは **『10章: 回帰結合型ニューラルネットワーク』** と呼ばれる。 - これらの仕組みの目的は関数$f^*$を近似すること。$y=f^*(x)$は入力xをカテゴリyへ写像する。 - $y = f(x;θ)$を定義し、最もよい関数近似となるようなパラメータ$θ$の値を出力する。 - **$f(x;θ)$** とは - $θ$をパラメータとする$x$の関数 - 現代の深層学習は教師あり学習に対しては十分な性能を提供できている。 - 既存の線形モデルの制約を克服することが目的である。 --- ![](https://i.imgur.com/vD7NN9A.png ) ## XORの学習 :::info この章の目的: XORが簡単なニューラルネットワークで解を持つことを学ぶ ::: ![](https://i.imgur.com/nzMVMsx.png) ### 線形でモデルで問いてみる。 - 回帰問題として扱える - 損失関数は平均二乗誤差 - この損失関数を選ぶことで式が簡単になる。 - 実際の応用では二値データをモデリングするときにコスト関数に平均二乗誤差は適さない - $J(\theta) = \frac{1}{4}\Sigma(f^*(x)-f(x;\theta))^2$ - $f(x;\theta)$の形式に試しに$w$と$b$で構成される線形モデルを選ぶ - $f(x;w,b) = x^⊤w + b$ - 正規方程式を使用することで、$w,b$に関して、閉形式で$J(\theta)$を最小化できる。 - 正規方程式とは? > $A^⊤A$ が正則なとき,$‖Ax−b‖$ を最小にする $x$ はただ一つであり,それは正規方程式:$A^⊤Ax=A^⊤b$ を解くことで得られる。 - 正規方程式を解くと、$w = 0$ 及び $b = \frac{1}{2}$が得られる。 - 線形モデルではXOR関数を表現できない - この問題を解くには**線形モデルが解を表現可能な別の特徴量空間を学習するモデルを利用すること**である。 ### 特徴量空間を学習できるモデル - 2つのユニットから構成さえる隠れそうを1つ持つ単純な順伝播型ネットワークを導入 ![](https://i.imgur.com/RjTFXCc.png) - $f^{(1)}(x;W,c)$で計算できる隠れユニットベクトル$h$がある - 最終層は線形モデルだが、$x$ではなく、$h$に適用される。 - このネットワークには連鎖的になっている。 - $h = f{(1)}(x;W,c)$ - $y = f^{(2)}(h;w,b)$ - 合体 - $f(x;W,c,w,b) = f^{(2)}(f^{(1)}(x))$ - の形として表現が可能 - $f^{(1)}(x) = W^⊤x$ - $f^{(2)}(h) = h^⊤w$ - とすると、 - $f(x) = w^⊤W^⊤x$となる。 - この関数は$w' = Wx$とすると、 - $f(x)=x^⊤w'$ - と表現できる。 - ほとんどのニューラルネットワークは学習したパラメータで制御されるアフィン変換を使用し、その後活性化関数(固定された非線形関数)を適用することで特徴量を表現する。 - ここではこれらを元に、以下の式を定義する。 - $W$を線形変換の重み - $c$をバイアス - $h = g(W^⊤x + c)$ - 活性化関数には標準的に推奨さえる**正規化線形関数(rectified liner unit ReLU)** を使用する。 - $g(z) = \max\{0,z\}$ ![](https://i.imgur.com/B0b3h7g.png) - 完全なネットワークの式は - $f(x;W,c,w,b) = w^⊤\max\{0, W^⊤x+c\}$ - となる。他の変数は以下のように学習していたとする。 - $W=\begin{bmatrix} 1 & 1 \\ 1 & 1 \\ \end{bmatrix}$ - 複数の纏まったベクトル - $c=\begin{bmatrix} 1 \\ -1 \\ \end{bmatrix}$ - $w=\begin{bmatrix} 1 \\ -2 \\ \end{bmatrix}$ - $b=0$ ### 計算処理を追う 0. $X$を二値入力4点すべてを含む計画行列として定義。1行が1つの事例に対応している。 - $X=\begin{bmatrix} 0 & 0 \\ 0 & 1 \\ 1 & 0 \\ 1 & 1 \\ \end{bmatrix}$ - (Original $x$ space in fig6.1) 1. ニューラルネットワークの最初のステップは第一層の思い行列を掛けあわせる - $XW=\begin{bmatrix} 0 & 0 \\ 1 & 1 \\ 1 & 0 \\ 2 & 2 \\ \end{bmatrix}$ 2. バイアスベクトル$c$を加算する - $XW + c =\begin{bmatrix} 0 & -1 \\ 1 & 0 \\ 1 & 0 \\ 2 & 1 \\ \end{bmatrix}$ ![](https://i.imgur.com/NzvYB47.png =300x) - この空間では全ての事例が傾き1の直線に乗っていることがわかる。 - この直線に沿って移動すると、出力は最初が$0$で、その後$1$まで上昇し、それからまた$0$に戻る必要がある。 - このようなものは線形モデルで実装できない。 3. 各事例について$h$の値の計算を完了するために、**正規化線形変換(ReLU)** を適用して次のように変形させる - $正規化線形変換(XW + c) =\begin{bmatrix} 0 & 0 \\ 1 & 0 \\ 1 & 0 \\ 2 & 1 \\ \end{bmatrix}$ - 各事例は1本の直線上には乗るっていない(fig6.1)。$h$の空間上だと線形分離が可能 4. 最後に重みベクトル$w$をかける - $\begin{bmatrix} 0 \\ 1 \\ 1 \\ 0 \\ \end{bmatrix}$ ![](https://i.imgur.com/CfVt1D8.png =100x) - このニューラルネットワークはバッチ内の各事例に対して正しい答えをえた。 - 実際の状況では、モデルやパラメータや訓練事例の数が何十億に及ぶので、このように単純に解を推測することはできない - その代わりに**勾配に基づく最適化アルゴリズム**を利用すれば誤差が非常に小さくなるパラメータを発見することが可能 - このXOR問題の解は損失関数の最小値となっているため**勾配降下法**を使うとこの解に収束する可能性がある。他にも解を求める方法はある。 - 勾配降下法の収束点はパラメータの初期値に依存する。 --- ![](https://i.imgur.com/MKJDKaf.png) ## 勾配に基づく学習 :::info この章の目的: 特にニューラルネットワークに適したモデル設計: 勾配を0にしない工夫諸々 ::: - **線形モデル**と**ニューラルネットワーク**の最大の違い - ニューラルネットワーク - ニューラルネットワークの非線形性によって興味深い損失関数のほとんどが非凸になることである。 - そのため、通常ニューラルネットワークの学習には単純にコスト関数の値を非常に小さい値へ近づけていく、**勾配に基づく反復的な最適化手法**が使われている。 - 線形モデル - 線形回帰モデルを訓練するために利用する線形方程式ソルバや、ロジスティック回帰、SVMの学習に利用されるような最小値に収束することが保証された凸最適化アルゴリズムは利用しない。 - 凸最適化の場合、理論的にはどんな初期パラメータから初めても収束する。 - 確率的勾配降下法を非凸な損失関数に適用した場合はそのような収束性の保証が無い。 - > 詳しくは第8章で 現段階では、 > **訓練アルゴリズムは、ほとんど必ずと言っていいほど、コスト関数(損失関数 + 正規化項)の値を小さくするために勾配を何らかの形で利用するのが基本だと理解**しておけば十分である。 - 線形回帰やSVMのようなモデルも勾配降下法で訓練は可能である。 - 実際に訓練集合が大規模であればそれが一般的 - 他の機会学習モデルと同様に勾配に基づく学習のためには、コスト関数を選択し、モデル出力の表現方法を選択する必要がある。 - ニューラルネットワークだということにおいて、もう一度これらのモデル設計について考える。 ### コスト関数 - ニューラルネットワークにおけるコスト関数はたいてい線形モデルのような他のパラメトリックなモデルで利用するのと同じ - >**==ほとんどの場合==訓練データとモデルの予測の間の交差エントロピーをコスト関数として利用することになる** - パラメトリックモデルでは分布 $p(y | x;\theta)$を定義し、最尤法の原則を使用するので。 - ニューラルネットワークの訓練に使用するコスト関数全体に言えること - この章で説明する基本的なコスト関数()に正規化項を組み合わせたものがしばしば使用される。 - #### 最尤推定による条件付き分布の学習 - 最近のニューラルネットワークはほとんどの場合、最尤法を用いて、訓練する。 - **コスト関数は単純に==負の対数尤度==** - 「モデルの分布」と「訓練データ」間の交差エントロピーとも言える - $J(\theta) = -\mathbb{E}_{x,y \verb|~| \hat{p} data} \log p_{model}(y|x)$ - ニューラルネットワークの設計において、++コスト関数の勾配は学習アルゴリズムにとってよい使用となるように、十分大きくかつ予測可能なものではなければいけない++というものがある。 - 変化が飽和する(非常に平坦)関数は勾配が緩やかになるため、この目的には使えない。 - 隠れユニットや出力ユニットの出力に利用される==活性化関数==が飽和することで発生することが多い。 - ==負の対数尤度ならこの問題を解決できる== 1. 出力ユニットには引数が非常に大きな負の値になった場合に飽和してしまう==指数関数==が含まれる 2. 負の対数尤度のコスト関数に含まれる対数関数は出力ユニットの指数関数を打ちけすいくつかの組み合わせがある。 #### コスト関数の出力ユニットとの関係 - コスト関数の選択と、出力ユニットの選択は強い関係性がある。 - 出力として使用できるようなニューラルネットワークのユニットはいずれも**隠れユニット**としても利用ができる。 - 以下の説明では、 - > 順伝播型ネットワークが$h = f(x;\theta)$で定義される隠れ特徴量の集合を提供するものとする。出力層の役割はその特徴量にさらに変換を施し、ネットワークが実行すべきタスクを完了させることである。 ##### 1.ガウス出力分布のための**線形ユニット** - 単純な出力ユニットの一つに、非線形関数を伴わないアフィン変換に基づくユニット。線形ユニットと呼ばれている。 - 特徴量$h$が与えられたとき、線形ユニットはベクトル$\hat{y}=W^⊤h + b$を出力する。 - 線形ユニットは飽和することがないため、勾配に基づく最適化手法と相性がよく、幅広い最適化アルゴリズムと一緒に利用される。 ##### 2.ベルヌーイ出力分布のための**シグモイドユニット** - 2クラスの分類問題では、2値変数$y$の予測が必要となる。 - 最尤法のアプローチでは、$x$で条件を付けた場合の$y$に関するベルヌーイ分布を定義することになる。 - ベルヌーイ分布は一つの数だけで定義される。ニューラルネットワークは$P(y = 1| x)$のみを予測する - 線形ユニットを利用すると、以下のように定義される - $P(y=1|x) = max\{0, min\{1,w^⊤h+b\}\}$ - しかし、$w^⊤h+b$がユニットの区間外([0,1]以外)になった場合、モデルの勾配が0になるという大問題があるので不適切。 - そのかわり、間違った答えを出力した場合に必ず急な勾配となるような、**シグモイド出力ユニットと最尤法を組み合わせ**を利用することで実現ができる。 - 出力ユニットは以下のように定義 - $\hat{y} = \sigma(w^⊤h+b)$ - $\sigma(x) = \frac{1}{1 + \exp(-x)}$ - シグモイド出力ユニットは2つの要素で構成されていると考える。 - 線形層を使った$z = w^⊤h+b$の計算 - シグモイド活性化関数を使用した$z$を確率値への変換。 - この考えを使用すると、以下のように式変形が可能 - $P(y) = \sigma((2y-1)z)$ - 対数空間での確率を予測するこの手法は西遊学習と組み合わせるのが自然。 - 最尤法で使用されるコスト関数$-\log P(y|x)$であるコスト関数の中の対数がシグモイドの指数を打ち消す。 - この作用がなければ、シグモイドの飽和により勾配に基づく最適化手法がうまく進まない可能性がある。 - シグモイドでパラメータ化されたベルヌーイ分布における最尤学習の損失関数は - $J(\theta) = -logP(y|x)$ - $=-\log\sigma((2y-1)z)$ - $=\zeta((1-2y)z)$ - と表記できる。これにより、 - 飽和はモデルが正しい答えを取得したときだけ発生することになる。 - 「$y = 1$かつ、$z$が生の大きな値の場合」 or 「$y = 0$かつ$z$が負の大きな値の場合」と等価 - $z$の符号が間違っている間は勾配が緩やかになることはない - $(1-2y)z = |z|$と考えてよく、ソフトプラス関数ではこのとき、値は非常に大きくなる。 > - $\zeta = log (1+exp(x)$ ![](https://i.imgur.com/wKyioEl.png =300x) > - $log\sigma(x) = -\zeta(-x)$ ##### 3.マルチヌーイ出力分布のための**ソフトマックスユニット** - n個の取りうる離散値に関する確率分布を表現するときは常にソフトマックス関数が利用できる。 - n個の値を持つ離散変数の場合に一般化するためには、$\hat{y}_i = P(y = i | x)であるベクトル値\hat{y}を出力する必要がある。$ - ただし、ソフトマックスなので、ベクトル全体の総和が1になるようにする。 - 流れはベルヌーイ分布、二値のときと同じ。 - 1. 線形層で正規化されていない対数確率の予測 - $z = W^⊤h+b$ - $z_i = \log P(y = i | x) $ 2. ソフトマックス関数に通す - ロジステックシグモイドの場合と同様に、最大対数尤度を利用して、ソフトマックスが目標値$y$を出力するように訓練するときは対数関数を使用すると上手に機能する。 - この場合$\log P(y = i;z) = \log softmax(z)_i$を最大化したい。 - 対数尤度の中の対数関数は、ソフトマックスの指数関数で打ち消される。 - $\begin{eqnarray}\log softmax(x)_i = z_i - \log \sum_{j}{} \exp(z_j)\end{eqnarray}$ - 第一項$z_i$は定数項なので、第二項が非常に小さい値でも学習が進行する。 - 対数尤度を最大化するとき - 第一項を大きくする方向にしつつ、第二項はすべての$z$を小さくする方に寄与する。 - 第二項$\begin{eqnarray}\log \sum_{j}{} \exp(z_j)\end{eqnarray}$は$\max_{j}z_{j}$で概ね近似できる。 - この近似は$\max_{j}z_{j}$より十分小さい$z_k$に対して$exp(z_k)$は寄与度が低いことに基づく。 - この近似から負の対数尤度のコスト関数は最も活性化されている間違った予測に対して必ず大きなペナルティを課すことができる。 - もし正解がすでにソフトマックスへの入力の最大値であるなら、$-z_i$項と$\begin{eqnarray}\log \sum_{j}{} \exp(z_j) \approx \max_{j}z_{j} = z_i\end{eqnarray}$の項も概ね打ち消し合う。この事例は全体の訓練コストに影響をほとんど与えず、まだ正しく分類されていないほかの事例の影響が支配的になる。(ソフトマックス関数も入力値間の差異が極端に大きくなると、飽和する。) ###### 神経科学からみたソフトマックス - 神経科学の観点からは、**ソフトマックスは使われているユニット間に競合を発生させる方法**だと考えている - つまり、ソフトマックスの出力の和はつねに1であるため、あるユニットの値を大きくすると、必然的に他のユニットの値を小さくすることになる。これは大脳皮質の中で隣接するニューロンの間に存在すると信じられている側抑制に似ている。 - 極端な場合、勝者総取り(winnter-take-all)状態(出力の一つだけが1に近くなり、他の値がほぼ0の状態になる)になる。 ##### 4.その他の出力の種類 一般的に条件付き分布$p(y|x;\theta)$を定義する場合、最尤法の原則に従うと、$-\logp(y|x;\theta)$が適切なコスト関数になる。 - 概してニューラルネットワークは関数$f(x;\theta)$を表していると考えることができる。 --- ## 隠れユニット :::info この章の目的: 隠れ層はReLUで十分とされている。他にも ::: 勾配降下法によって学習するパラメトリックな機械学習アルゴリズムのほとんどに共通する部分が数学的に見えている。 - 隠れ層は順伝播型ネットワーク固有の問題である。隠れ層の中で使用されるモデルの種類の選択はまだ活発な研究分野であり、理論的な原則に基づく指針はまだ少ない。 ### ReLU - ReLUは隠れユニットの標準的な選択として優れている。 - 通常どの隠れユニットが最もよく機能するかは予測することができない。 - 1.この本で紹介されている隠れ層が全ての点で微分可能ではない。 - $ReLU(z) = max\{0, z\}$は$z = 0$では微分不可能である。勾配に基づく学習アルゴリズムが使えないようにも思えるが、実際には勾配降下法は十分に機能する。 - ニューラルネットワークの訓練アルゴリズム時に、勾配が0になる点に実際に到達することを想定していないため問題がない。 ### ReLUとその一般化 - ReLUは活性化関数$g(z) = max{0, z}$を利用する。 - ==線形関数と非常によく似ているので最適化しやすいという利点がある。== - 線形関数との違いは、ReLUは定義域の半分で0を出力すること。また、ユニットが活性化している間は常に微分で得られる値が大きいままなので、勾配は大きいだけでなく==一定==である。 > 正規化演算の二階微分はほとんどの場所で0であり、その微分はユニットが活性化されている…ではどこでも1である。これは学習において、二階微分の影響を受ける活性化関数と比べて、勾配の方向のほうがずっと有用で有ることを意味している。 - ReLUは通常アフィン変換の後に適用される。 - $h = g(w^⊤h+b)$ - アフィン変換のパラメータを初期化する場合はbのすべての要素を$0.1$等の小さい正の値に設定するとよく機能する - ほとんどの入力に対して活性化し、勾配が通過できるようになる。 - ReLUの3つの一般化は$z_i<0$となる場合にゼロでない傾き$\alpha_i$に基づくものである。 - $h_i = g(z, \alpha)_i = max(0, z_i) + \alpha_i min(0,z_i)$ ![](https://i.imgur.com/sUq8UaO.png) #### **Absolute Value rectification** - $\alpha_i=-1$に固定して、$g(z) = |z|$を得る方法。 - これは画像の中の物体認識に使用された。 - 光源の極性反転に対しての普遍な特徴量を探すのに適していた。 #### **leaky ReLU** - $\alpha = 0.01$等の小さな値に固定 #### **パラメトリック ReLU** - $\alpha$を学習可能なパラメータとして扱う #### **マックスアウトユニット** - 要素ごとに関数$g(z)$を適用する代わりに、$z$を$k$個の値のグループに分け、個々のマックスアウトユニットのグループ一つから最大の要素を出力する。 - $g(z)_i = \underset{j\in\mathbb{G}^{(i)}}{\max} z_j$ - ユニット間の関係性を表すというより、活性化関数自体を学習する。 ![](https://i.imgur.com/IEuqSUw.png) ## アーキテクチャの設計 :::info この章の目的: 深い層の学習が行われている現状の理解?勾配消失問題については言及してない? ::: - ほとんどのニューラルネットワークは層の集合体となっているので、==連鎖構造==である。 - 適切な「深さ」と「幅」は実験的に確かめないといけない。 ![](https://i.imgur.com/Z2h9Wwf.png =400x) ### 万能近似性と深さ - 線形モデルは行列積を使って特徴量を出力に写像するが、その定義からせん系な関数しか表現できない。 - 線形モデルは多くの損失関数が凸最適化問題に帰着するため簡単に訓練できる利点があるが...。 - 非線形な関数を学習した事はあるので、その時にニューラルネットワークの出番である。 - 非線形な学習には、特別なモデル族を設計する必要があるように見えるかもしれないが、隠れ層を持つ順伝播型ネットワークは普遍的な近似を提供する事が証明されている。 - **万能近似定理**(Universal approximation theorem)(Hornik et al., 1989; Cybenko, 1989) - ネットワークが十分な数の隠れ層を持つ時、線形の出力層と、(ロジスティックシグモイド活性化関数のような)「押しつぶす」事ができる活性化関数を持つ隠れそうが少なくとも一つ含まれる順伝播型ネットw−悪はどんな**ボレル可測関数?**でも任意の制度で近似できる - この定理が意味することは、「どんな関数を学習するかにかかわらず、大きなMLP(多層パーセプトロン)であれば、その関数を==表現できる==」という事である。ただ、==学習できる==とは保証されていない。 - ?: もし、MLPがその関数を表現できたとしても、2つの理由で学習が失敗する事がある。(= 学習できるとは保証されていない) 1. 訓練に利用する最適化アルゴリズムは目的の関数に対応するパラメータの値を発見できない可能性がある。 2. 訓練アルゴリズムは過剰適合が理由で間違った関数を選択する可能性がある。 - 一つの隠れえそうを持つ順伝播型ネットワークは任意の関数を表現するのに十分だが、その層は非現実敵な大きなサイズとなる可能性があり、また正しい学習や汎化に失敗するかもしれない。 - 多くの場合、より深いモデルを利用すると目的の関数を表現するために必要なユニット数が減り、汎化誤差も減らす事ができる。? - 浅いモデルでも近似可能である事が示されている。 ![](https://i.imgur.com/sfYvg6V.png) (Mountufar et al,. 2014)によって形式化された、「より深いReLUネットワークの指数敵な利点を直感的に幾何学的に説明した図」 Absolute Value ReLUユニットを持つネットワークがある隠れユニットの入力に対して、その隠れユニットより前で計算された関数の鏡像をどのように、作り出すか示した図である。このような折りたたみの操作を構成する事であらゆる規則的なパターンも表現できるとされている。指数関数的に多数の区分線形領域を得る事ができる。 ![](https://i.imgur.com/aHWdXK1.png) 深さの効果: 層が深くなるに連れて、精度は向上する(Goodfellow et al 2014) ![](https://i.imgur.com/8E4DHnX.png) パラメータの数の効果: 深いモデルのほうがより良い結果がでる傾向にある。==これは単にモデルが大きいからでは無い==。この図はモデルの深さを固定して、畳込みネットワークのパラメータの数を増やしてもテスト集合の性能向上については同様の効果が得られない事を示している。 3層と11層を比較して、深いモデルのほうが、モデルを大きくした時の効果が大きい事がわかる。 ## ご