[논문리뷰] Defense-GAN

2022. 1. 28. 23:55논문리뷰/Adversarial Attack

 

이번 리뷰는 Adversarial Examples을 GAN을 사용하여 Defense하는 Defense-GAN에 대한 논문이다. 기존에 GAN에 대해 관심도 가지고 있었는데 이렇게 attack에 GAN을 접목시켜서 Defense를 한다니 흥미롭지 않을 수 없다 ㅎㅎ..살펴보도록 하자!

https://arxiv.org/abs/1805.06605

 

Defense-GAN: Protecting Classifiers Against Adversarial Attacks Using Generative Models

In recent years, deep neural network approaches have been widely adopted for machine learning tasks, including classification. However, they were shown to be vulnerable to adversarial perturbations: carefully crafted small perturbations can cause misclassi

arxiv.org

 


1. Adversarial Attack

시작하기 앞서 간단하게 Adversarial Attack이란 무엇인지 살펴보도록 하자.

 

 

위 이미지는 adversarial examples로 많이 사용되는 예제이다. adversarial attack이란 어떠한 이미지에 아주 작은 noise를 가하는 것만으로 딥러닝 네트워크의 성능을 떨어트리는 기법을 말한다. 예로 위 이미지는 57.5%의 confidence로 "panda"라 분류되었지만 noise가 더해지자, 사람의 눈으로 보았을 때는 같은 이미지이지만 딥러닝 모델은 무려 99%의 confidence로 "gibbon"을 예측하는 현상을 볼 수 있다.

 

이러한 Adversarial Attack 기법은 크게 Black-box와 White-box attack 두 분류로 나뉠 수 있다.

먼저 Black-box attack은 공격하는 쪽에서 model parameter에 대한 어떠한 정보 알 수 없는 상태에서 가하는 attack을 말한다.

반대로 White-box attackmodel architecture와 parameter등 네트워크의 모든 정보를 안다는 가정 하의 attack이다.

 

2. Defense Method

공격하는 방법이 있다면 그것을 막으려는 방법도 있기 마련이다. 다양한 defense 방식이 있지만 이 논문에서는 3가지의 그룹으로 묶어서 설명한다.

 

  1. Modifying the training data
    • 예로 "adversarial Training"이 있다. adversarial examples를 training time동안 만들어내어 이를 train data에 추가함으로써 일종의 augmentation으로 model의 robustness를 향상시킨다.
  2. Modifying the training procedure of the classifier
    • 예로 "defensive distillation"이 있다. 이전의 attack방식들이 gradient-based approach가 많았기 때문에 distillation을 통해 gradient magnitude를 줄임으로써 이러한 attack이 잘 동작하지 못하도록 방지한다.
  3. Attempting to remove the adversarial noise
    • 예로 "Jpg compression"이 있겠다. 많은 사람들이 알다시피 jpg는 이미지를 압축하는데 사용되는 방식이고 이때 일정의 정보를 손실하는데, 이러한 과정속에서 perturbation 정보도 같이 손실되고 attack의 성능이 감소되게 된다.

이러한 traditional defense method들은 문제점이 몇 개 있는데, 우선 각 방식은 white box attack 또는 black box attack 중 한 가지의 attack에만 유효하다는 점이다. 또 하나의 단점은 대부분의 defense들이 특정 attack을 염두해두고 만들어졌기 때문에 그 외의 attack에는 성능이 떨어진다.

 

Defense-GAN은 이러한 두 단점을 모두 해결해버린다!!

 

3. Defense-GAN

Defense GAN의 직관적인 설명은 이러하다.

 

GAN이란 것은 간단하게 생각해서 Generator G에서 생성된 이미지들의 분포 $D_g$실제 이미지 분포 $D_{real}$와 최대한 같아지도록 학습을 하고 이를 통해서 진짜와 비슷한 이미지를 Generator가 만들어낼 수 있도록 한다. 또한, 원하는 이미지를 reconsturction하기 위해서는 Conditional information을 latent vector와 같이 주어야한다(논문에서는 adversarial examples를 넣어준다).

 

여기서 한가지 가정은 정상적인 이미지는 이러한 실제 분포 $D_{real}$에 가까이 존재할 것이고, adversarial examples는 더 멀리 떨어져 있을 거라는 것이다. 즉 어떠한 분포의 차이가 존재한다는 것이고, 위의 mapping 과정을 통해 실제 분포에 가까워 짐으로써 adversarial perturbation이 줄어들게 되는 효과를 보인다.

 

좀 더 자세히 알고리즘을 살펴보자!

 

 

이 논문에서는 WGAN을 사용한다. 기존 Adversarial Loss가 학습이 불안정한 점이 있어 이를 개선한 버전이라고 생각하면 될 것 같다. WGAN의 Cost function은 다음과 같다.

$$min_G max_D V_W(D,G) = E_{x~p_{data}(x)}[D(x)] - E_{z~p_z(z)}[D(G(z))]$$

 

순서대로 살펴보면,

  1. 먼저 R개의 random initialized latent vactor z를 만들어낸다.
  2. 다음으로 Generalized output $G(z)$가 input image x와의 L2-norm이 가장 최소인 optimal latent vector z*을 찾는다.
  3. 찾은 optimal z*를 Generator에 넣고 Classifier에서 최종 class가 출력되게 된다.

여기서 알아야 할 점은 Generator와 Classifier는 사전에 학습된 모델을 그대로 사용한다는 것이고, 학습도 진행하지 않는다. 여기서 Gradient Descent로 update되는 값들은 latent vector가 된다. 이 부분을 좀 더 자세히 살펴보면,

 

 

위 update 과정은 각 R개의 latent vector마다 실행되게 된다. input image x와 latent vector $z^i$의 $L2-distance$가 최소가 되는 방향으로 L번 update가 이루어지게 되는데 이를 식으로 간단히 표현해보면, 

$$z^i_{j-1} + \eta_j * \triangledown_z||G(z^i_j)-x||^2_2, \ \ iterate \ L \ times$$

이렇게 모든 latent vector마다 update가 끝났다면, R개의 latent vectors들 $\{z_L^i\}^R_{i=1}$이 나오게 되고, 이 중에서 generated image G(z^i)와 input image x과의 L2-distance를 최소로 만드는 optimal z*를 뽑아낸다.

** G개의 latent vector를 만드는 이유는 최적의 start point를 찾기 위함이라고 볼 수 있다. random이기 때문에 어떤 point는 L번만에 최적의 해에 도달할 수도 있고, 또 어떤 Point는 그 이전에 도달하거나 해를 찾지 못하는 경우도 생길 수 있다. 따라서 R개의 latent vector를 만듦으로써 최적의 해를 찾을 확률을 높이는 것이라 생각한다.

 

마지막으로 Defense-GAN의 특징을 몇 가지 살펴보자.

  1. Defense-GAN은 어떠한 classifier든 structure를 변경하지 않고도 바로 적용하는 것이 가능하다. 즉, classification 이전에 추가적인 step으로 사용하여, attack에 대한 robustness를 높일 수 있다.
  2. GAN이 충분한 capacity를 가지고 있다면, classifier를 re-training할 필요도 없고 defense-GAN으로 생기는 성능의 저하도 무시할 수 있을 정도로 작다.
  3. Defense-GAN은 어떠한 Attack에 대해서도 사용할 수 있다. 어떠한 attack model을 가정한 것이 아니라, GAN의 generative power를 사용하여 adversarial examples를 reconstruct하는 것이기 때문에 특정 attack에 국한되지 않는다.
  4. Defense-GAN은 GAN 특성상 매우 non-linear하기 때문에 gradient-based attacks에 매우 강하다. white-box attack에서 gradient-based attack은 클래스 간 decision boundary를 넘어가게 함으로써 모델의 오분류를 일으키는데, 이러한 decision boundary가 non-linear하게 되면 이러한 boundary를 넘어가는 것이 매우 어렵게 된다. 이는 차원이 높아질 수록 더 심각할 것이고, 따라서 attack을 하기 힘들게 된다.

4. Experiments

논문에서는 attack을 block-box, white-box, white-box revisited 총 3가지로 나누어 실험한다. 여기서 revisited란, 기존 white-box에서 random seed와 random number generator 정보까지도 알고 있는 환경 하의 attack이다. 즉, 모든 random initialization $\{z_0^i\}^R_{i=1}$을 알고 있다는 것이다.

 

Defense on Black-box Attacks

 

먼저 black-box attack이기 때문에 adversarial examples를 찾는데 Substitute network를 사용한다. 그리고 Defense-GAN-Rec와 Orig는 classifier를 Reconstruction image로 학습시켰는지 original image로 학습시켰는지로 구별된다. 

 

결과를 보면 다른 method와 비교해서 Defense-GAN이 안정적으로 attack효과를 감소시키는 경향을 보여준다. Adversarial Training의 경우, $\epsilon$이 성능에 큰 영향을 미치고, 네트워크에 따라 결과의 차이가 크기 때문에 불안정성을 보인다.

 

Effect of number of GD iterations L and Random restarts R

 

Defense-GAN알고리즘에서 latent vector의 개수인 R과 update iteration L은 하이퍼 파라메터이다. 이 파트에서는 두 파라메터의 경향성을 보여주고 있다.

 

먼저 L은 attack없을 때 iteration이 높아질 수록 accuracy가 높아지는 경향을 보인다. 반대로 attack이 있을 때는 iteration이 높아질 수록 accuracy가 감소하는 것을 볼 수 있다. 이는 MSE $||G(z) - (x+\delta)||^2_2$에 대해서 iteration이 너무 높아지게 되면 noise(perturbation)까지 fitting되어 버리기 때문이다. 

 

다음으로 R은 더 많이 줄수록 accuracy가 상승하는 결과를 보여준다. 이는 이전에 설명했던 것과 비슷하게 R을 늘림으로써 여러 개의 다른 local minima 값을 찾을 수 있고, global minima에 더 가까운 값을 찾을 확률이 그만큼 높아지는 것이다. 하지만 당연하게 두 하이퍼 파라메터를 높이면 computation cost가 더 필요할테니 적절한 값을 선정하는 것도 하나의 문제일 것이다.

 

Attack Detection

이전에 설명했던가정(perturbed image distribution은 real-image distribution과 차이를 보인다)을 이용하여 attacked image를 판별할 수 있다. 방법은 간단하다. 그냥 generated image와 x의 L2-distance가 threshold $\theta$보다 크면 attack이고, 작으면 attack이 아닌 것이다.

 

Defense on White-box Attacks

 

White-box attacks에 대해서도 Defense-GAN이 우월한 성능을 보여주고 있다. FGSM까지는 어느정도 이해하는데 CW attack까지 완벽히 방어해내어서 좀 놀랐다....GAN의 위대함인가...

 


이렇게 Defense-GAN에 대해서 리뷰해보았다. GAN을 사용하여 처음 Defense method를 제안한 것과 성능도 뛰어나다는 점! 심지어 black-box, white-box 구분없이 전반적인 attack에 대한 defense가 가능하다는 것도 큰 장점인 것 같다. 하지만 논문에도 나와있듯이 defense-GAN은 GAN모델이 성능을 좌지우지하는데, GAN 자체가 아직까지는 training이 불안정해서 잘 학습된 GAN을 얻는 것이 어려울 수 있다는 것이다. 또한, hyper parameter L, R도 성능에 영향을 미치기 때문에 이러한 hyper-parameter tuning도 잘 해주어야 한다고 한다!