[논문 리뷰] Towards Evaluating the Robustness of Neural Networks(C&W Attack)(2)

2022. 2. 17. 00:20논문리뷰/Adversarial Attack

지난 번에 이어서 C&W Attack 논문 리뷰를 하려고 한다. 이번 리뷰에서는 3가지 Distance-metric을 사용하여 만드는 강력한 attack 기법에 대한 설명과 그 기법들을 사용하여 defensive distillation을 어떻게 공격할 수 있고, 또 왜 이전 attack들은 그럴 수 없었는지를 설명하려고한다. 이를 읽기 전에 introduction과 강력한 attack을 만들기 위해 실험한 여러 기법들을 알고 싶다면 (1) 글을 먼저 보고 오길 바란다.

 

https://aistudy9314.tistory.com/59

 

[논문 리뷰] Towards Evaluating the Robustness of Neural Networks(C&W Attack)(1)

지난 논문 리뷰에서 Defensive Distillation이라는 defense 기법을 알아보았다. 이 방법이 나왔을 당시 차세대 기법이라고 불릴 만큼 각광받는 defense 기법이었는데, 이를 깨버린 것이 CW Attack이 되겠다. **

aistudy9314.tistory.com


1. Three Strong Attacks

논문에서는 3가지의 distance metrics($l_2$, $l_0$, $l_{\infty}$)를 사용하여 각 각 attack을 만들어 성능을 보여준다. perturbation크기에 constraint를 주는 방법은 이외에도 있을 수 있지만 위 방식들이 가장 대표적이면서 효과적이라고 알려져 있기 때문에 사용하였다고 한다.

 

1.1 $L_2 Attack$

L2 attack to MNIST

 

$$minimize \ ||\frac{1}{2}(tanh(w)+1)-x||^2_2 + c \cdot f(\frac{1}{2}(tanh(w)+1)$$

$$f(x') = max(max{Z(x')_i : i \neq t} - Z(x')_t, -\kappa)$$

 

$l_2$ attack은 간단하게 $l_2$ norm을 사용하여 낮은 distortion을 가지도록 만드는 방법이다. 식에서 볼 수 있듯이, objective function은 6번, box constraint기법으로는 change of variables을 사용하였다(실험 결과 가장 효율적인 방법들이라 한다). 

 

추가적으로 objective function에 $\kappa$를 사용하여 misclassification이 발생하는 confidence를 조절할 수 있도록 만들었다. 즉, $\kappa$를 조절함으로써 attacker가 더 높은 confidence로 오분류를 일으키도록 만들 수 있다는 것이다.

 

이를 수식적으로 이해하기 위해서 $\kappa = 50$으로 설정해보자.

먼저 $max{Z(x')_i : i\neq t}$는 target 클래스 t가 아닌 다른 클래스들의 logits값들 중 가장 큰 값을 산출하게 되고, 이를 $Z(x')_t$와 빼게 된다. 이 식을 g라 부르고, 이를 minimize한 다는 것은 즉 target 클래스 t에 대한 logits값이 다른 클래스에 비해 커지도록 만드는 것이다. 여기서 -50($\kappa$)와 한번 더 max함수를 사용하는데, 이 의미는 loss값을 -50이하로 절대 떨어지지 못하게 한다는 것이다. 이렇게 되면 g함수 입장에서 loss가 변하지 않았기 때문에 더 강한 attack을 만들어서 loss를 떨어트리려고 할 것이고, 강한 attack이라는 것은 g식에서 $Z(x')_t$의 confidence를 높이는 것을 말한다.

 

논문에서는 $\kappa=0$을 사용하고, 이를 option으로서만 제공한다. $\kappa$를 높게 주면 attack성능은 올라가겠지만 그만큼 distortion이 높아지기 때문에, trade-off를 생각하여 적절한 값을 지정해주는 것이 중요하다.

 

Multiple Starting-point Gradient descent

Gradient Descent는 optimal solution을 찾지 못하고 local minimum에 빠질 수 있다. 가장 optimal solution은 아니더라도 그와 비슷한 solution을 찾기 위해 multiple starting-point gradient descent라는 기법을 추가로 소개한다. 방법은 간단하다. original image와 가까운 여러 개의 random starting point를 골라서 각 각의 point에서 부터 gradient descent를 한다. 이렇게 여러 starting point를 줌으로써 gradient descent가 bad local minimum에 빠질 확률을 줄여준다.

 

1.2 $L_0 \ Attack$

L0 attack to MNIST

 

$L_0$ attack은 non-differentiabel하기 때문에 gradient descent에 적합하지 않다. 따라서 classifier output에 큰 영향을 주지 않는 픽셀들을 찾아서 이를 고정하는 방식으로 대체한다. 결국 $L_0 \ Attack$에서 하고 싶은 것은, prediction에 영향을 많이 주는 최소의 픽셀들만 attack을 하는 것이다. 직관적으로 생각했을 때도 모든 픽셀보다는 일부 픽셀들만 attack하는 것이, 보았을 때 차이를 느끼기 어려울 것이다. 

**물론 이미지에 따라 다를 수 있다. texture가 거친 경우, 일부 픽셀만 바뀌는 것으로는 알아차리기 힘들지만 texture가 단순한 경우 일부 픽셀이 크게 바뀌면 티가 나게 될 것이다.

 

방법을 더 자세히 알아보자. 먼저 allowed set이란 집합을 만들고 처음엔 이를 모든 픽셀 index로 초기화한다. 이때, 어떤 픽셀들이 중요하지 않은 지를 확인하기 위해 $L_2 \ attack$을 이용하고 이는 allowed set에 있는 픽셀들만 attack하도록 한다. $x + \delta$가 이를 통해 찾아낸 adversarial examples이라 하면, 그 gradient g는 $\triangledown f(x+\delta)$가 된다. 그 다음으로, $argmin_i g_i \cdot \delta_i $에 해당하는 픽셀을 찾아 allowed set에서 제거한다. 여기서 $g_i $는, adversarial examples를 만들 때 해당 픽셀 i로부터 objective function f가 얼마나 줄었는가를 뜻한다. 즉 adversarial examples를 만들 때, 픽셀 i의 변화가 얼마만큼의 영향을 주었는지를 나타내고, 이 값이 최소인 index를 찾는 것은 곧 가장 영향력이 적은 픽셀을 찾는 것이다. 이 과정은 $L_2 \ attack$이 adversarial examples를 찾는데 실패할 때 까지 계속된다(examples를 찾을 수 있는 최소의 픽셀 수를 찾기 위함). 

 

추가적으로, 사용되는 $L_2 attack$의 hyper parameter c값을 dynamical하게 정해주기 위해, 초기 값을 매우 낮게 주고(ex. $10^{-4}$) adversarial examples를 찾지 못하면 그 크기를 2배로 늘려가는 방식을 채택하였다. 단, c가 너무 커지는 것을 방지하기 위해 threshold로 그 한계를 정해놓는다(ex. $10^{10}$).

 

JSMA는 위 방식과 반대로, empty set으로 시작하여 영향력이 높은 픽셀들을 추가하여 점차 늘린다. JSMA와 비교했을 때,proposed 방식이 훨씬 더 effective하다고 한다. 이는 나중에 evalutation section에서 확인할 수 있다.

 

이러한 greedy 방식은 해당 픽셀들을 찾기 위해, 각 iteration에서 많은 gradient descent를 거쳐야 한다. 이러한 단점을 완화시키기 위해 논문에서는 "warm-start"라는 방식을 사용한다. 이는 각 iteration에서 gradient descent를 initial image로부터 시작하는 것이 아니라 그 전 iteration의 solution으로부터 시작한다. 이렇게 함으로써 examples를 찾기 위해 gardient descent를 해야 하는 횟수를 크게 줄일 수 있게 된다.

 

1.3 $L_{\infty} \ Attack$

$L_{\infty} Attack to MIST$

 

$L_{\infty}$ distance metric 또한 not fully differentiable하기 때문에 gradient descent에 바로 적용하기는 어렵다. 먼저 이를 optimization 식으로 표현하면 다음과 같다.

$$ minimize \ c \cdot f(x+\delta) + ||\delta ||_{\infty}$$

논문에서는 위와 같이 $||\delta ||_{\infty}$ term을 두게 되면 gradient descent가 매우 안 좋은 성능을 보이는데, 그 이유는 가장 큰 값을 가지는 $\delta_i$만 penalty를 받고 그 외 값들은 어떠한 영향도 받지 못하기 때문이다.

 

예를 들어, $\delta_i =0.5$, $\delta_j = 0.5 - \epsilon$이라고 해보자. 만약 위와 같은 term을 가진다면 $\delta_j$ 또한 충분히 큰 값임에도 불구하고 오직 $\delta_i$만 penalty를 받게 될 것이다. 그 다음 iteration에서는 penalty를 받은 $\delta_i=0.5-\epsilon$, 그렇지 못한 $\delta_j = 0.5 + \epsilon$으로 업데이트 될 수 있고 이 경우에는 $\delta_j$만 penalty를 받게 된다. 이렇게 0.5 근처에서 반복이동하며 갇혀버리는 현상이 발생하고 더이상 유의미한 update는 일어나지 않게 된다.

 

이러한 문제를 해결하기 위해서 constraint term을 $L_2$ norm으로 다음과 같이 대체한다.

$$minimize \ c \cdot f(x+\delta) + \sum_i [(\delta_i - \tau)^+]$$

이로인해 $\tau$보다 큰 $\delta_i$에게 모두 penalty를 줄 수 있게 됨으로써 문제를 해결하게 된다.

**각 iteration에서 모든 $\delta_i$가 $\tau$보다 작다면, $\tau$를 0.9의 비율로 줄이고 이를 반복한다. 

 

추가로 contant c를 구하는 방법은 $L_0$와 동일하고, "warm-start" 방법도 똑같이 적용한다고 한다.

 

2. Evaluation

Attack comparison to MNIST and CIFAR
Attack comparison to ImageNet

 

위 표는 사용되는 distance metric에 따라서 proposed attack methods와 Traditional method를 비교한다. 여기서 mean은 distortion의 정도를 뜻하고, prob은 attack success rate를 말한다.

 

결과를 보면, proposed attack이 다른 methods에 비해서 distortion 크기가 작은 것을 볼 수 있다. 또한 모든 attack에서 100% attack success rate를 보여준다. 

 

추가로 $L_0$ attack인 JSMA의 경우, Jacobian matrix를 구하는 데 있어 computation이 너무 비싸기 때문에 ImageNet에 사용하기 어려운 문제가 있는데, CW Attack에서 제안한 $L_0$ attack을 사용하면 100%의 성공률로 attack을 할 수가 있다.

 

3. Evaluating Defensive Distillation

이 글을 읽기 전에 Defensive Distillation이 무엇인지 충분히 숙지하기를 권장한다. Defensive Distillation은 이미 리뷰를 했기 때문에 따로 내용을 정리하지는 않을 것이다.

 

3.1 Fragility of existing attacks

Defensive Distillation은 한 때 defense로써 매우 높은 성능을 가졌던 방법이다. 논문에서는 어떠한 이유로 이전 attack methods가 defensive distillation에 약한지를 분석하고, 이는 network robustness와 무관계하다는 것을 밝혀낸다.

 

L-BFGS and Deepfool

L-BFGS와 Deepfool은 F()의 gradient가 거의 항상 0이 되기 때문에 attack이 실패된다고 말한다. Defensive Distillation에서 사용되는 modified softmax 식을 한번 살펴보자.

$$ softmax(Z(x), T)_i = \frac{e^{Z(x)_i/T}}{\sum_j e^{Z(x)_j / T}}$$

defensive ditillation은 training time에 이 T를 1보다 높은 값으로 설정하는데, 일반적인 cross entropy를 생각해보면 correct class는 1에 가깝게, 그 외 class는 0에 가깝게 학습이 될 것이다. 이 때 logits을 살펴보면 $e^{Z(x) / T}$로써 원래 logits Z(x)를 T로 나눈 값이 된다. 때문에 logits Z(x)는 기존 softmax에서 학습되었던 logits값보다 T배 큰 값으로 학습이 될 것이고, 실제로 논문에서 확인해보았을 때 T=100이면 logits x의 $L_1$ norm이 기존에 비해 약 100배 큰 값이 되었다고 한다.

**positive value는 더 positive하게, negative value는 더 negative하게 바뀌는 것이다.

 

이러한 logits Z(x)가 T배 커진 상태에서 test time에 T를 1로 설정하면, softmax output F가 target class에 대해서는 $1-9\epsilon$ , 그 외 class는 $\epsilon$이라는 값을 가지게 된다. 이 때 $\epsilon$은 32-bit floating point value에서 0으로 반올림 될 정도로 매우 작은 값이다. 비슷한 이유로 gradient 또한 매우 작아지기 때문에 0으로 반올림 되고, 때문에 update는 제대로 이루어지지 않게 된다.

즉 defensive distillation이 model을 robust하게 만드는 것이 아니라, gradient를 제대로 계산하지 못하게 만듦으로써 attack을 막는다는 것을 확인할 수 있다.

 

논문에서는 objective function을 논문에서 제안한 식으로 바꾸는 것만으로 이러한 문제를 해결하였고, 또 다른 방법으로는 softmax함수를 똑같이 $F'(x) = softmax(Z(x) / T)$로 바꿔서 커진 Logits값을 다시 나누어주어 해결하는 것이다.

**두번째 방법은 white-box attack으로써 사용된 T값을 알고 있다는 전제를 두고있다. 

 

JSMA

먼저 JSMA-F는 L-BFGS와 같은 이유로 attack에 실패한다. 또 다른 방식인 JSMA-Z는 softmax가 아닌 logits Z(x)를 사용하기 때문에 이전과 같은 gradient vanishing은 일어나지 않는다고 한다.

 

먼저 logits Z를 사용하기 때문에 상대적인 효과를 생각해보아야 한다. 예를 들어 설명해보면, logits의 가장 작은 값이 -100이라고 할 때 이는 softmax output이 0에 가깝게 나오고, 이를 다시 -90으로 바꾸더라도 그 결과는 똑같이 0이 될 것이다. 하지만 가장 작은 값이 -10일 때, 이를 0으로 바꾸는 것은 softmax의 output에 큰 영향을 주게 된다. 즉, logits이 매우 큰 상태에서 10만큼 감소될 경우와 작은 상태에서 10만큼 감소되는 경우는 softmax output의 변화에서 매우 큰 차이를 가지게 된다는 것이다.

 

결국 JSMA-Z란 softmax output이 바뀌는지와 무관하게 픽셀 변화에 따른 logits값의 변화율을 보기 때문에, 커진 logits은 위에서 말했듯이 어느정도의 변화가 있더라도 softmax에 큰 영향을 주지 못해 attack이 실패하는 것이다.

 

 Fast Gradient Sign

FGSM도 마찬가지로 gradient가 대부분 0이 되어 실패한다고 한다. 한가지 특이한 점은 L-BFGS에서 softmax의 logits을 다시 T로 나누어 줌으로써 attack이 동작하도록 만들 수 있었는데 이 방식을 FGSM에 적용했을 때는 여전히 attack에 실패하였다고 한다.

 

3.2 Applying Proposed Attack

proposed attacks를 defensive distillation에 적용한 결과이다. defensive distillation 논문의 모델을 그대로 사용했고 T=100으로 설정하였다. 이전 attack methods는 defensive distillation에 의해 매우 낮은 attack success rate를 보였는데, proposed attack은 모두 100%의 success rate를 보여준다. 즉 defensive distillation이 attack에 거의 영향을 미치지 못한다는 것이다.

 

3.3 Effect of Temparature

Defensive Distillation 논문에서는 Temparature T를 높일 수록 attack success rate가 줄어드는 현상을 보였는데, C&W Attack에 에서는 T의 변화가 어떠한 영향을 주는지에 대한 실험이다. 위 그래프는 T의 변화에 따른 distortion 크기를 나타내는데, T와 distortion 크기가 independent한 결과를 보여준다. 즉, distillation temparature T를 높게 주는 것은 neural network의 robustness를 향상시키는 것이 아니다라는 것을 증명한다.

 

3.4 Transferability

Transferability란, 어떠한 model에서 만들어진 adversarial examples를 다른 model에 적용했을 때도 비슷한 attack 성능을 보이는 성질을 말한다. 이 때, 두 model은 서로 다른 알고리즘과 데이터셋을 사용하더라도 무관하다. 예를 들어, ImageNet으로 학습된 ResNet에 대해서 찾은 adversarial examples를 MNIST로 학습된 DenseNet에 적용시켰을 때 비슷한 attack success rate를 가진다면 이 attack method는 transferability를 가지고 있다라고 말한다.

 

논문에서는 defense method들이 이러한 transferability에도 강해야 한다고 주장한다. 그렇지 않다면 easy-to-attack model에서 adversarial examples를 찾은 다음에 hard-to-attack model에 적용하여 attack할 수 있기 때문이다. 예로 defensvie distillation을 transferability를 사용해 attack하여 설명한다. 위 그래프는 CW attack의 hyper parameter $\kappa$에 따른 transfer attack success rate이다. $\kappa$가 높아질수록 그만큼 강한 attack을 만들어내어 이에 따라 transferability도 강해지는 것을 볼 수 있다. $\kappa$가 20만 되도 transfer attack success rate가 거의 100%에 근접한다.

 


이렇게 길고 긴 CW Attack에 대한 리뷰가 끝났다. 이전 Attack methods와 비교해서 강력한 성능을 보이고 더불어 낮은 distortion까지 갖추니 strong attack의 baseline이 될만한 method라는 생각이 들었다. 아쉬웠던 점은 $\kappa$에 따른 distortion 변화 그래프가 없다는 것이다. 때문에 $\kappa$에 따른 transfer attack success rate도 distortion이 커져서 이미지 자체가 일그러졌기 때문에 높아진 것이 아닐까 하는 의문이 생긴다.