Deep Learning study

Spectral Normalization for Generative Adversarial Networks(SN-GAN) - (2) 본문

AI/papers

Spectral Normalization for Generative Adversarial Networks(SN-GAN) - (2)

HwaniL.choi 2019. 9. 21. 19:13
반응형

저번글에선 SN GAN의 전반적인 내용과 기본적인 컨셉에대해서 알아보았습니다. 이번 글에서는 본격적인 Spectral Normalization의 이론적인 바탕과 내용에대해서 알아봅시다.

 

저번 글에서 Optimal한 D가 f라는 형태의 모양을 가질때에 , 그 함수는 unbounded 되어있기때문에 gradient가 폭발해버리는 현상이 일어난다고 말했었죠. 그래서 그 폭발을 막기위해서 사용할 방법이 Lipschitz constant를 제한하는 것이였습니다.

$$ \underset{\lVert f \rVert_{Lip} \le K}{\arg \max }V(G,D)$$

여기서 말하는 Lipschitz norm(||f||Lip)은 f의 Lipschitz Constant를 의미합니다.

 

이제 이러한 condition을 이용한 Spectral normalization을 소개합니다.

 

Spectral Normalization

 

Spectral normalization은 위에서 말한 D 함수 f의 Lipschitz constant를 컨트롤하기위해서 사용됩니다.  말 그대로 각각의 layer(g : h_in → h_out)의 spectral norm에 제약을 거는 것입니다. 

정의에 의해서 Lipschitz norm은 아래와같이 표현됩니다.

$$ \lVert g \rVert_{Lip} = \sup_h \sigma (\nabla g(\mathbf{h})), \\ \text{where } \sigma (A) \text{ is the spectral norm of the matrix A(L2 matrix norm of A)} $$

단순히 Lipschitz norm 정의에 의해서 g의 미분값의 norm에대한 supremum을 수식으로 써 놓은것이 위처럼 표현되는것입니다.

 

갑자기 저렇게 설명을 해 놓으니까 되게 어색할겁니다. 그래서 논문에서 아래의 수식을 하나 더 첨부해놓았는데 , matrix A의 L2 matrix norm 이 A의 Largest singular value로 나타난다는것을 알려주는 것이죠.

 

$$ \sigma (A) := \underset{\mathbf{h}:\mathbf{h} \ne \mathbf{0}}{\max} { {\lVert A\mathbf{h} \rVert_2} \over { \lVert A \rVert_2}} = \underset{\lVert \mathbf{h} \rVert_2 \le 1}{\max} \lVert A \mathbf{h} \rVert_2  \qquad (6)$$

이게 왜 이렇게 표현되는지 궁금하시다면 이전의 포스팅 matrix norm을 보시면 될것 같습니다.

 

어찌됐던 Linear transform인 g를 다음과같이 나타낼 수 있습니다.

$$ g(\mathbf{h}) = W\mathbf{h} $$

W는 weight matrix이고 h는 해당 layer(g)에 들어갈 input입니다.

g가 위의 식으로 표현되기때문에 우리는 g의 Lipschitz norm을 아주 간단하게 표현 할 수 있습니다.

$$ \lVert g \rVert_{Lip} = \sup_h \sigma (\nabla g(\mathbf{h})) = \sup_h \sigma (W) \ =\sigma (W) $$

위에서 처럼 g의 Lipschitz norm은 단순히 W의 largest singular value값으로 나타납니다.

 

그리고 layer 마다 빠질 수 없는 activation function이 있죠. 제일 많이 쓰는 ReLU, LeakyReLU 등은 모두 Lipschitz norm이 1인것을 쉽게 알 수 있을것입니다. 이런 Lipschitz norm 이 1 인 activation function을 쓸때 다음과같은 성질을 이용할 수 있게됩니다.

 

$$ \lVert g_1 \circ g_2 \rVert_{Lip} \le \lVert g_1 \rVert_{Lip} \cdot \lVert g_2 \rVert_{Lip} \qquad (a)$$

 

이 성질을 이용해서 f의 Lipschitz norm에대한 bound를 살펴볼 것입니다.

 

(타자로 치기 힘들어서.. 이건 복붙..)

위의 ||f|| 바로 오른쪽 항들은 단순히 연속적인 layer와 activation function들의 곱을 (a)의 성질을 이용하여 수식으로 적어논 것입니다. 그다음의 항은 activation function a의 Lipschitz norm이 1이므로 생략하여 정리해놓은것 입니다. 다음은 이전의 값이 g_l의 Lipschitz norm인데 우리는 좀 전에 이것을 W의 largest singular value로 나타낼 수 있음을 알고있기때문에 마지막 항과 같이 표현할 수 있습니다.

 

이를통해서 의 Lipschitz norm은 (7)식과 같이 bounded되어있다는것을 알 수 있습니다. 따라서 각 weight matrix인 W의 spectral norm, 즉 W의 largest singular value값들을 조절해 준다면 D의 함수인 f의 Lipschitz norm에 제한을 걸 수 있게되는것입니다.

 

이 논문에서는 g의 Lipschitz constant인 σ(W), 그러니까 W의 spectral norm이 1이 되도록 normalize를 해주게 됩니다.

$$ \bar{W}_{SN}(W) := W/\sigma(W). \qquad (8) $$

 

그렇다면 모든 layer 의 weight matrix(W_l)을 spectral normalization해 준다면,  (7)번 식에서 f의 Lipschitz norm 이 1 이하로 bounded 되는것은 쉽게 알 수 있습니다.

 

 

Gradient Analysis of the Spectrally Normalized Weights

 

위에까지는 spectral normalize 에 대한 방법에대해서 설명을 했고, 이제부터는 이러한 normalize방법이 어떻게 작용을하게 되고 어떤 영향을 주게 되는지에 대해서 알아볼것입니다.

 

weight matrix W에 대해서 GAN의 목적함수인 V(G,D)의 gradient를 살펴볼 것입니다. 그러면 W가 어떻게 학습을 하는지와 spectral normalization이 주는 영향에 대해서도 알아 볼 수 있을것입니다.

 

$$  { {\partial V(G,D) } \over { \partial W } } = { 1 \over { \sigma (W)^2 }} (E[ \mathbf{ \delta h } ] - (E[ \mathbf {\delta^T \bar{W}_{SN} h}])\mathbf{u_1 v_1^T}) \qquad (11) \\
= {1 \over { \sigma (W)} }( E[ \mathbf{ \delta h^T } ] - \lambda \mathbf{u_1 v_1^T}) \qquad (12) \\
\text{where } \delta :=  (\partial V(G,D) / \partial ( \bar{W}_{SN} \mathbf{h} ))^T,  \lambda  := E[ \mathbf{ \delta^T} \bar{W}_{SN} \mathbf{h}) ].$$

 

(expectation 으로 쓰인 이유는 mini-batch로 학습 할 경우이기 때문입니다. )

수식으로 써 본다면 위와 같습니다 하지만 이렇게만 봐서는 이해하기 쉽지 않습니다.

이해를 돕기위해서 다음의 식을 보도록 합시다.

 

$$ { { \partial V(G,D) } \over { \partial W } } = { { \partial V(G,D) } \over { \partial \bar{W}_{SN} \mathbf{h} } } \cdot {{ \partial \bar{W}_{SN} \mathbf{h} } \over { \partial \bar{W}_{SN} } } \cdot { {\partial \bar{W}_{SN} } \over { \partial W } } \\
={ { \partial V(G,D) } \over { \partial \bar{W}_{SN} \mathbf{h} }} \cdot  \mathbf{h}  \cdot { { \partial \bar{W}_{SN} } \over { \partial W } }  \qquad (b) \\
= \delta \cdot \mathbf{h}  \cdot {{ \partial \bar{W}_{SN} } \over { \partial W } }  \qquad (c) $$

 

Chain Rule을 적용하여 풀어쓴 식입니다. 이 처럼 풀어쓰게 되면 (c)와 같은 식을 얻을 수 있게됩니다. 이제 (c)에서 마지막에 곱해진 미분식을 계산해 봅시다.


$$ { { \partial \bar{W}_{SN} (W)} \over { \partial W_{ij} } } = { 1 \over {\sigma (W)} }(E_{ij} - {1 \over { \sigma  (W)^2} } \cdot { { \partial \sigma (W)} \over { \partial W_{ij}}} W) \\
= {1 \over { \sigma (W)}}E_{ij} -  {{ [ \mathbf{u_1 v_1^T]_{ij} } } \over { \sigma (W)^2} } W \qquad (9) \\
= {1 \over { \sigma (W)} } (E_{ij} - [ \mathbf{u_1 v_1^T]_{ij} } \bar{W}_{SN}) , \qquad (10) $$

 

위의 식은 단순히 W_SN(W) ( = W/σ(W) ) 를 W로 미분 해 준 것입니다. E_ij는 (i,j) 성분만 1 이고 나머지는 0인 matrix 이고, u_1 과 v_1은 각각 W의 first left ,right singular vector 입니다.

 

여기서 (9) 번 식에서 갑자기 u_1과  v_1이 나와서 당황했을지도 모르지만 이것은 SVD를 공부했다면 쉽게 알 것입니다.

먼저 SVD는 아래식을 만족하는 vector와 σ들을 찾는것이죠,.

 

$$ W \mathbf{v}_i = \sigma_i \mathbf{u}_i \qquad (d) $$

 

(d)식을 좀 변형하게 되면 다음과같이 변형됩니다.

 

$$ \mathbf{u}_i^T W \mathbf{v}_i = \sigma_i  \qquad (e) $$

 

(9)에서의 σ함수는 the largest singular value 이므로 i = 1 인경우를 생각하면 되겠습니다(보통 singular value는 큰 값부터 차례대로 씁니다.) . 그런다음 (f)식의 좌변을 W_ij로 미분해주면 (9)번 식의 뒷 부분을 얻을 수 있습니다. (matirx의 미분은 Matrix calculus 를 참고하세요!)

이제 마지막으로 (c)에 (10)번 식을 대입해준다면 원래의 (12)번 식을 구할 수 있게 됩니다.

 

$$ {1 \over {\sigma (W)} }(E[\mathbf{\delta h^T}] - \lambda \mathbf{u_1 v_1^T}) \qquad (12) $$

 

식을 잘 살펴본다면 첫 번째 항인 E[δh]/σ(W) 는 굳이 normalization를 하지 않더라도 나오는 값입니다. 따라서 이 부분은 normalization과는 상관이 없는 항입니다.

그렇다면 두 번째 항의  -λuv이 normalization을 함으로써 새로 생겨난 항이 되는데 , 이 부분을 regularization term 으로 생각할 수 있습니다.

 

 두 번째 항에서 λ는 δ와 W_SNh 가 비슷한 방향을 가리키고 있을때 양수가 됩니다. 이 값이 양수가 된다는 의미는 output인 W_SNh와 이것에 대한 V의 기울기가 비슷한 방향이란 말이죠. 다시말해 학습을 할때, 한 방향으로 매우 sensitive해 질때를 의미합니다. 따라서 두 번째 항은 이렇게 한 방향으로만 sensitive 해지는 것을 막아주는 regularization term의 역할을 하는 것 입니다.  따라서 좀 더 다양한 방향의 특성들을 고려할 수 있도록 유도한다고 해석할수 있습니다.

 

 

이렇게해서 이론적인 부분도 끝이나게 됩니다. 나머지 뒷 부분에는 이 전의 다른 Regularization을 이용한 모델들과의 비교를 해 놓았는데, 비교해놓은 다른 논문들을 읽어보지 않아서 이 부분에대해서는 생략하도록 하겠습니다. 그리고 나머지 Experience 부분도 생략하고 넘어가겠습니다. 아래 refer의 본문을 참고하세요 !

 

 

 

읽었던 논문들중에 가장 오래 걸린것 같네요 .., 논문에 수식은 많지만 설명은 불친절한 관계로.. 고생좀 했네요 ㅠ

그럼 이만 !! ..

 

 

 

Reference

[1] spectral normalization for generative adversarial networks

반응형
Comments