# #9 Spectral Normalization for Generative Adversarial Networks ###### tags: `GAN` `論文まとめ` https://arxiv.org/abs/1802.05957 # 要旨 学習の安定化のためにディスクリミネータに新たな正規化を導入する.この正規化は計算コストが軽く,既存アーキテクチャにも組み込みやすい. # 導入 * 用いるハイパーパラメータはリプシッツ定数のみであり,このモデルではそこまでハイパーパラメータチューニングに注力する必要はない * 実装が容易で,計算コストはそんなに要らない # 方法 ## 準備 以下の簡単なディスクリミネータを考える.ただし,入力は$x$とする. $$ f(x,\theta)=W^{L+1}a_L(W^L(a_{L-1}(W^{L-1}(...a_i(W^1x)...))))\\ \text{where}~~\theta:=\{W^1,...,W^L,W^{L+1}\} $$ ただし,$W^l\in \mathbb R^{d_l\times d_{l-1}},W^{L+1}\in \mathbb R^{1\times d_L}$であり,$a_l$は活性化関数である.ただし,上の例ではバイアス項は表示していないことに注意する.ディスクリミネータの最終出力は,活性化関数$\mathcal A$を施した $$ D(x,\theta)=\mathcal A(f(x,\theta)) $$ となる. GANは以下に示すような関数をディスクリミネータに対して最大化,ジェネレータに対して最小化させるmin-max最適化問題を解くように学習を行う. $$ V(G,D)=\mathbb E_{x\sim q_{data}}[\log D(x)]+\mathbb E_{x'\sim p_G}[\log(1-D(x'))] $$ $$ \min_G\max_D V(G,D) $$ 最適化されたディスクリミネータは以下のようになる. $$ D^{*}_G(x):=\frac{q_{data}(x)}{q_{data}(x)+p_G(x)} $$ 多くの論文にて,ディスクリミネータの写像空間がGANの学習上非常に影響を与えることが私的されている.そのため,ディスクリミネータに対してリプシッツ連続性という制約を課すようにして統計量の束縛を行う. たとえば,上記の最適化ディスクリミネータは $$ D^{*}_{G}(x)=\frac{q_{data}(x)}{q_{data}(x)+p_G(x)}=\text{sigmoid}(f^*(x))\\ \text{where}~~f^*(x)=\log q_{data}(x)-\log_{p_G}(x) $$ となるので,勾配は $$ \nabla_xf^*(x)=\frac{1}{q_{data}(x)}\nabla_xq_{data}(x)-\frac{1}{p_G(x)} \nabla_xp_G(x) $$ となり,非有界になりうるし計算不能に陥ってしまう危険性がある.そこで,$f$の勾配に対して正則化を課す手法が提案されている.この論文で提案する手法もこの正規化の一つである. ## Spectral Normalization この手法は文字通り,各レイヤーのスペクトルノルムを制限することでディスクリミネータ$f$のリプシッツ定数を制御する. リプシッツノルム$||g||_{Lip}$は$\sup_h \sigma(\nabla g(h))$に等しい.ただし,$\sigma(A)$は行列$A$の$L_2$行列ノルム(=Spectral norm)である.また,$\sigma(A)$は,行列$A$の最大の特異値に等しい. $$ \sigma(A):=\max_{h:h\neq 0}\frac{||Ah||_2}{||h|_2}=\max_{||h||_2\leq 1}||Ah||_2 $$ すなわち線形層$g(h)=Wh$を考えると,$||g||_{Lip}=\sup_h \sigma(\nabla g(h))=\sup_h\sigma(W)=\sigma(W)$のようになる. 活性化関数のリプシッツノルムが1に等しい($||a_l||_{Lip}=1$)とき,この条件のもと,$||g_1\circ g_2||_{Lip}\leq||g_1||_{Lip}\cdot||g_2||_{Lip}$という不等式を用いることで,ディスクリミネータのリプシッツノルム$||f||_{Lip}$は次のようになる. $$ ||f||_{Lip}\leq||(h_L\mapsto W^{L+1}h_L)||_{Lip}\cdot||a_L||_{Lip} \cdot||(h_{L-1}\mapsto W^{L+1}h_{L-1})||_{Lip}\\ ...||a_1||_{Lip}\cdot||h_0\mapsto W^1h_0||_{Lip}= \prod_{l=1}^{L+1}||(h_{l-1}\mapsto W^l h_{l-1})||_{Lip}= \prod_{l=1}^{L+1}\sigma(W^l) $$ スペクトル正規化はリプシッツ制約$\sigma(W)=1$を満たすように,重みを変形させる. $$ \bar{W}_{SN}:=W/\sigma(W) $$ この制約を課すことで上記不等式から$||f||_{Lip}\leq 1$が成立する. スペクトル正規化に似た名称に,スペクトルノルム正則化というものがあるが,後者は明示的に損失関数に対してスペクトルノルム正則化項を設けているため構造構成的に全く異なることに注意する. ## $\sigma(W)$の高速推定法 ナイーブに$\sigma(\cdot)$を実装するとなると計算コストが非常に嵩むので,冪乗法(power iteration method)を用いて推定を行う. 各々の重みに対してランダムに初期化されるベクトル$\tilde{u}$を考える.重複する特異値がなく,なおかつ$\tilde{u}$が,第一左特異ベクトルと直行しない状況の下では,冪乗法の原理から,第一左特異ベクトルと第一右特異ベクトルは以下に示す更新を行うことで $$ \tilde{v}\leftarrow\frac{W^T\tilde{u}}{||W^T\tilde{u}||_2}, \tilde{u}\leftarrow\frac{W\tilde{v}}{||W\tilde{v}||_2} $$ 推定特異ベクトルの組から,$\sigma(W)$は以下のように推定が行える. $$ \sigma(W)\approx \tilde{u}^TW\tilde{v} $$ たとえば,$W$の更新に,SGDを用いた場合,各更新における$W$の変化は微小であり,最大特異値が変化する.このことを利用すると,次ステップの初期ベクトルとして計算された$\tilde{u}$を利用でき,計算コストが節約できる. また,この再利用により冪乗法の反復回数が1回でも満足いく性能が発揮するには十分であることが判明した. 以下のようにしてスペクトル正規化を行う. --- **アルゴリズム**: SGDを用いたスペクトル正規化 --- 1. 等方分布からランダムに$\tilde{u}_l\in \mathcal R^{d_l},l=1,...,L$を初期化する 2. 各更新,各レイヤーごとに以下の処理を行う 1. 正規化を適用する前の$W$に冪乗法を適用する $\tilde{v}_l\leftarrow(W^l)^T\tilde{u}_l/||(W^l)^T\tilde{u}_l||_2$ $\tilde{u}_l\leftarrow {W^l}\tilde{v}_l/||W^l\tilde{v}_l||_2$ 2. スペクトルノルム$\bar{W}_{SN}$を計算する $\bar{W}_{SN}^l(W^l)=W^l/\sigma(W^l),\text{where}~~\sigma(W^l)=\tilde{u}_l^TW^l\tilde{v}_l$ 4. $W^l$をSGDで更新する.($\mathcal D_M$はミニバッチデータセットであり,$\alpha$は学習率) $W^l\leftarrow W^l-\alpha\nabla_{W^l}l(\bar{W}^l_{SN}(W^l),\mathcal D_M)$ --- ## スペクトル正規化重みの勾配推定 $W_{ij}$における$\bar{W}_{SN}(W)$の勾配は以下のように計算される. $$ \begin{eqnarray*} \frac{\partial \bar{W}_{SN}(W)}{\partial W_{ij}}= \frac{1}{\sigma(W)}E_{ij}- \frac{1}{\sigma(W)^2}\frac{\partial \sigma(W)}{\partial W_{ij}}W &=&\frac{1}{\sigma(W)}E_{ij}- \frac{[u_1v_1^T]_{ij}}{\sigma(W)^2}W\\ &=&\frac{1}{\sigma(W)}(E_{ij}-[u_1v_1^T]_{ij}\bar{W}_{SN}) \end{eqnarray*} $$ ただし,$E_{ij}$は,$(i,j)$成分のみが1で他が0の行列.$u_1,v_1$はそれぞれ$W$の第一左特異ベクトルと第一右特異ベクトルである. $h$をネットワークの隠れ層とすると,$V(G,D)$の勾配は, $$ \begin{eqnarray*} \frac{\partial V(G,D)}{\partial W}&=&\frac{1}{\sigma(W)} (\hat{E}[\delta h^T]-(\hat{E}[\delta^T\bar{W}_{SN}h])u_1v_1^T)\\ &=&\frac{1}{\sigma(W)}(\hat{E}[\delta h^T]-\lambda u_1v_1^T)\\ \text{where}~~\delta:&=&\left(\frac{\partial V(G,D)}{\partial (\bar{W}_{SN}h)}\right)^T, \lambda:=\hat{E}[\delta^T(\bar{W}_{SN}h)] \end{eqnarray*} $$ ただし,$\hat{E}[\cdot]$は,ミニバッチに対する経験的な期待値である. 上式を実装する上での注意事項としては,$\hat{E}[\delta h^T]$は,正規化を課してない重みの勾配に等しい.したがって,第二項は第一特異成分に対して適応型の正則化係数$\lambda$を用いて罰則を科す正則化項とみなすことができる. $\lambda$は$\delta$と$\bar{W}_{SN}$が同一方向を指している際には正の値を取る.すなわち,この適応正則化係数は訓練課程の上で,$W$の列ベクトル空間が特定の一方向のみを取ることを防ぐことができるといえる.すなわち,スペクトル正規化により,層の射影がとある一方向にのみ敏感になることを防ぐことが可能になるといえる. # [補足]特異値 行列$A$に対して随伴行列を$A^*(=\bar{A}^T)$とする.行列の固有値を$\lambda_i(\cdot)$ と置けば,行列$A$に対する特異値$\sigma_i(A)$は $$ \sigma_i=\sqrt{\lambda_i(AA^*)} $$ として,定義される. 行列$AA^*\in\mathbb C^{m\times m}$はエルミート行列(随伴行列が自身と一致するような行列)かつ,半正定値行列となる. また,特異値は,行列$A\in \mathbb C^{m\times n}$と,単位ベクトル$u\in \mathbb C^m,v\in \mathbb C^n$の組に対し,下式を満たす非負の実数$\sigma$ともいえる. $$ Av=\sigma u\\ A^*u=\sigma v $$ $u,v$をそれぞれ,行列$A$の左特異ベクトル,右特異ベクトルという. 行列$A$は左特異ベクトル$u$を並べた行列$U$と,右特異ベクトル$v$を並べた行列$V$,及び対角行列を部分として持つ(詳しくは調べればわかる)行列$\Sigma=\text{diag}(\sigma_1,\sigma_2,...,\sigma_q)~~(q:=min(m,n))$を用いて, $$ A=U\Sigma V^* $$ のように分解できる.これを行列$A$の特異値分解という.