[논문리뷰] Defensive Distillation

2022. 2. 5. 18:53논문리뷰/Adversarial Attack

Adversarial Attack이 있으니 당연히 Defense 기법도 존재한다. 이번 리뷰에서는 Defense 기법 중 하나인 "Defensive Distillation"을 소개할 것이다. 이 논문은 처음 나왔을 때 많은 사람들에게 관심받으며 차세대 defense 기법으로 각광 받았었다. 지금이야 C&W attack이나 PGD 등 여러 Attack이 등장하고 defensive distillation기법이 깨지면서 무뎌졌지만 말이다.

https://arxiv.org/abs/1511.04508

 

Distillation as a Defense to Adversarial Perturbations against Deep Neural Networks

Deep learning algorithms have been shown to perform extremely well on many classical machine learning problems. However, recent studies have shown that deep learning, like other machine learning techniques, is vulnerable to adversarial samples: inputs craf

arxiv.org

 


1. Adversarial Examples

Examples of adversarial attack

 

Adversarial Attack이란, 기존 이미지에 아주 미세한 noise(perturbation)을 가해서 딥러닝 모델이 정상적으로 동작하지 못하도록 만드는 기법을 말한다. 예를 들어, 자동차 이미지(왼쪽)는 a car라고 DNN이 잘 classify하였는데 아주 작은(사람 눈에 보이지 않을 정도의) pertubation을 이 이미지에 가해주었더니 DNN이 a cat이라고 classify하는 것을 볼 수 있다.

 

**Adversarial attack은 크게 white-box attack, black-box attack 두 가지 범주로 나눌 수 있는데, 이 논문에서는 attacker가 DNN에 모든 정보에 access할 수 있는 white-box attack을 가정하고 설명한다. 또한 training time에서의 attack은 고려하지 않았다.

 

이러한 현상이 왜 문제일까?

이는 딥러닝이 실생활에 사용되었을 때 큰 문제가 될 수 있다. 간단한 예로 자율 주행에서 신호나 다른 자동차를 인식해야되는 상황에서 이러한 attack이 발생한다면 자칫 큰 사고로 이어질 수도 있다. 또 다른 예로 은행에서 이체를 할 때 1000원을 100만원으로 인식하게 만들어 낼 수도 있을 것이다. 따라서 adversarial attack과 같은 현상은 딥러닝이 보안과 안전이 중요한 task에 적용되기 전에 필수적으로 해결되어야 하는 과제이다.

 

2. Deep Neural Network

overview of a DNN architecture

 

이 논문에서는 "Distillation" 기법을 사용하기 때문에 간단하게 DNN에 대해서 짚고 넘어가겠다.

 

DNN은, Deep이라는 수식어에 맞게, 여러 개의 parametric functions(hidden layer)로 이루어져 있는 네트워크를 말한다.

기본적으로 어떠한 데이터 $X$가 input으로 주어지고, hidden layer를 통해 나온 결과와 label(ground-truth)간의 오차가 작아지도록 parameters를 업데이트하면서 학습을 하게 된다. 이러한 과정 속에서 DNN은 simple representation($X$)를 semantic and complex representation($Z(X)$)로 만들어 낼 수 있게 된다.

 

3. Adversarial Sample Crafting

 

이 part에서는 어떻게 adversarial examples를 만들어내는지에 대해서 다루고 있다. 논문에서는 이를 two-step process로 나누어서 설명한다.

 

  1. Direction Sensitivity Estimation
    • sample $X$의 주변 manifold에서 model F가 민감하게 반응하는 방향을 찾는 step이다. 결국 어느 방향으로 공격해야 DNN이 정상적인 동작을 하지 않는지 알아내는 과정이라고 이해하면 된다.
    • adversarial examples의 중요한 조건 중 하나가 imperceptible하여야 한다 이다. 즉, 여러가지 pertubation들이 찾아질 수 있지만 그 크기(norm)은 다양할 수 있고, 이 step에서는 상대적으로 작은 norm을 가지는 perturbation을 찾게 된다.
    • $argmin_{\delta X} ||\delta X|| \ \ s.t. F(X+\delta X) = Y'$
  2. Perturbation Selection
    • 위 1에서 얻은 knowledge를 이용하여 effective adversarial perturbation을 찾는 step이다. 간단하게 perturbation을 어느 차원에다가 적용할지를 selection하는 과정이라고 생각하자.

Direction Sensitivity Estimation

위에서 설명했듯이, smallest norm을 가지면서 adversarial behavior를 발생시킬 수 있는 방향을 찾는 과정이다. 여러가지 방법이 존재하지만 논문에서는 3가지 예를 들고 있다.

  • FGSM: input에 대한 cost function의 gradient의 sign(부호)을 이용하여 perturbation을 만든다.

https://aistudy9314.tistory.com/37

 

[논문리뷰] FGSM:Explaining and harnessing adversarial examples

최근 Adversarial attack에 대한 논문을 읽고 정리하는 중이다. 이전에 접해본 적이 없는 분야이기 때문에 헷갈리는 부분도 많고, 잘못 이해한 부분이 있을 수 있으니 댓글로 알려주길 바란다. 첫번째

aistudy9314.tistory.com

  • JSMA: forward derivative, 즉 F의 Jacobian 식을 사용하여 perturbation을 만든다. (자세한 내용은 논문을 참조하길 바란다. 나중에 리뷰할지도...?)
  • Local Distirbution Smoothness: Kullback-Leiber divergence를 사용하여 F의 Hessian matrix를 구하는 방법이다. 이 방식은 adversarial sample을 만드는 데 쓰이지 않고, training regularizer로 쓰인다.

Perturbation Selection

위 step1에서 perturbation의 베이스를 만들어냈다면, step2에서는 이를 어떤 dimension(pixel)에 적용할지를 selection하는 파트이다. 간단하게 perturbation을 가할 pixel을 찾는 과정이라고 생각하면 이해하기 쉽다. 

 

이도 여러 방법들이 있지만, 논문에서는 2가지 예를 설명하고 있다.

  • FGSM에서는 작은 quantity($\epsilon$)의 perturbation을 모든 input dimension에 대해서 구한다.
  • JSMA에서는 saliency maps을 사용해서 제한된 수의 input dimensions에 대해서만 perturbation을 구한다.

크기를 제한하는 hyper-parameter($\epsilon$)은 두 방식에서 모두 고정되어 있다. 이러한 perturbation의 magnitude를 정하는 방법으로 여러 metric을 사용한다(ex. L1, L2)

 

어떤 방법이 더 좋다라고는 말할 수 없다. 어떠한 task, 어떠한 데이터냐에 따라서 다른 metric과 perturbation shape가 좋을 수 있고 나쁠 수 있다.

 

4. Neural Network Distillation

이제 Defensive Distillation이라는 Defense 기법에 들어가기 앞서 마지막으로 Knowledge Distillation에 대해서 알아보도록 하자! 기법의 이름에서 알 수 있듯이 이 Distillation을 중심으로 사용하므로 잘 이해할 필요가 있다.

 

 

Knowledge Distillation은 Teacher Network T와 Student Network S 2개의 모델이 존재하고, 먼저 학습된 T의 knowledge를 Student를 학습시킬 때 사용하여 추가적인 지도를 주는 방식이다. 기존에는 Teacher Network를 larger model, Student Network를 smaller model로 사용하면서 computing resource를 줄이는 목적으로 사용되었지만, 이 논문에서는 다른 목적으로 사용한다. 

 

방법은 직관적이고 간단하다. Teacher Network의 최종 layer output인 logits Z(X)나 이에 softmax를 가한 F(x)를 Student의 label로써 사용하는 것이다.여기서 특히 F(X)는 각 class들의 probability라 생각할 수 있고, 이는 각 class에 대한 추가적인 정보를 담고 있다고 할 수 있다. 

 

output Vector F(X)는 수식으로 보면 다음과 같다.

$$F(X) = \frac{e^{z_i(X)/T}}{\sum^{N-1}_{l=0} e^{z_l(X)/T}}$$

 

일반적인 softmax output과 다른 점은 Temperature T가 있다는 것이다. 이 T는 Distillation Temperature라 하며, 이 값이 커질 수록 probability distribution이 uniform에 가까워지고, 작아질 수록 더 discrete하게 바뀐다.

 

극단적인 값을 넣어보는게 이해가 쉽다. 먼저 T에 $\infty$를 넣어보면 e의 지수값들이 모두 0이 되고 logits인 $z_i(X)$는 아무런 영향도 끼치지 못하게 된다. 즉 모든 class에 대해서 $\frac{1}{N}$이라는 값을 가지게 된다. 반대로 1을 대입하면 이전 softmax와 똑같아지면서 ground truth에 해당하는 class만 높은 confidence를 가지도록, discrete하게 값을 갖는다.

 

보통 Knoledge Distillation에서는 training time에서는 두 network 모두 1보다 높은 T를 가지게 세팅되며, test time에서 이를 1로 다시 재조정해준다. 이미 학습된 네트워크이 파라메터들은 T값이 바뀌더라도 변하지 않기 때문에 성능에 문제를 주지않으면서 discrete한 output을 내도록 할 수 있다.

 

5. Defensive Distillation

드디어 본론으로 들어가나 싶을테지만 위 내용을 이해했다면 이미 70%는 끝났다고 볼 수 있다.

 

이 때 당시 attack들은 대부분 gradients를 이용한 방식들이 많았다. DNN의 gradient가 높은 값을 갖게 되면 그만큼 작은 perturbation만으로도 network output에 큰 변화를 줄 수 있기 때문에 adversarial samples를 만들기가 쉬워진다. 

그렇다면? model이 작은 gradient를 갖게 만듦으로써 attack이 동작하기 어렵도록 만들 수 있을 것이다!

논문에서는 이러한 motivation을 바탕으로 model을 smoothing하여 attack에 대한 robustness를 향상시키고자 한다.

 

defensive distillation mechanism

 

내가 왜 70%는 끝났다고 했는지 위 이미지를 보면 알 수 있다. 그렇다...그냥 knowledge distillation을 똑같이 적용한 것이다. 한가지 다른 점은 Teacher와 Student 모두 같은 architecture를 사용했다는 것이다.

 

논문에서 말하고자 하는 intuition은 distillation을 통해 얻은 knowledge를 사용하는 것이 DNN의 generalization capabilities도 향상시켜준다는 것이다.

 

과정은 위의 knowledge distillation과 같다. 먼저 Initial Network를 학습하고 그 최종 outputs(after softmax)를 Distilled Network의 label로써 사용한다. 이 때 T는 1보다 높은 값을 주어 output이 discrete하지 않도록 한다. 그리고 test에서는 T를 1로 바꾸고 진행한다.

 

이렇게 class에 대한 확률 분포 정보를 label(soft-label)로 사용함으로써 overfitting을 방지하고 better generalization을 갖게 해준다고 한다. 이전에 말했듯이, 이러한 확률 벡터는 class 간의 상대적인 관계 정보를 가지고 있다 말할 수 있다. 예를 들어 7과 1의 경우, 긴 막대를 가지고 있다는 면에서 구조적으로 similarity를 가지고 있다 말할 수 있고, 이는 soft-label에서 P(X=7)=0.6, P(X=1)=0.4로 정보로써 담길 수 있다. 하지만 hard-label(해당 class만 1, 그 외에는 0)은 이러한 정보를 담지 못한다.

 

**이 외에temparature T를 높였을 때, model F의 Jacobian matrix 크기가 작아지는 것을 수식으로 증명한 내용과 기타 여러 정리들이 나오지만 글이 너무 길어지고 크게 중요한 내용은 아니라고 생각해 생략하였다. 더 자세한 내용은 논문을 참고하길 바란다.

 

6. Evaluation

실험 내용도 굉장히 긴데....대략 중요할 것 같은 부분만 추려서 설명하겠다.

 

아무래도 T가 hyper-parameter이다 보니 관련된 실험이 가장 많았다. 간단하게 결과만 살펴보면, T가 높아질 수록 Attack Success Rate가 0에 가깝게 내려가는 것을 볼 수 있다(왼쪽). 또한 Temparature 값에 따라서 Test set의 Accuracy Variation도 달라진다(오른쪽). 개인적으로 attack success rate가 내려가는 폭에 비해서 accuracy variation은 크게 변하지 않는다고 생각이 들었다.

 

 

두번째로 T에 따른 gradient 크기를 보여주고 있다. 논문에서 목표했던 것처럼 T가 커질 수록 작은 값을 가지는 gradient가 많아지는 것을 볼 수 있었다.

 

 

마지막으로 Temparature에 따른 DNN의 Robustness를 보여주는 그래프이다. 여기서 robustness를 측정하는 기준은 attack이 DNN을 속이기 위해 필요한 perturbation의 최소 크기이다. 이전에 adversarial attack의 중요한 특징 중 하나가 사람의 눈에 띄지 않을 정도로 작아야 한다라고 설명하였다. 때문에 attack에서 perturbation의 크기를 작게 만드는 것은 중요하고, 이러한 최소 크기가 커진다는 의미는 그만큼 model이 robust하다는 것이다.

 

위 그래프에서 알 수 있는 것은 MNIST에 비해 CIFAR10은 Temparature에 영향을 받지 않는다는 점이고, 이는 각 클래스 간의 관계성이 그만큼 떨어진다고 이해할 수 있다.

**직관적으로 생각해봐도 숫자들 간의 관계성보다 물체(동물)들 간의 관계성이 더 떨어질 것이다.

 

여기서 이해가 안가는 몇가지 점...

먼저 robustness의 식이 $\rho_{adv}(F) = E_\mu [\triangle_{adv}(X,F)]$인데 CIFAR10의 경우 2~3정도의 크기면 perturbation을 만들어낼 수 있다. 그럼 3정도의 크기로 attack을 하면 attack success rate가 높아지고 defense는 아예 동작하지 않는 것 아닌가??...evaluation 부분은 자세히 읽어본 것이 아니라서 잘못 이해한 것일 수도....여기서 robustness의 단위가 %라 하는데 그렇다 하더라도 3%면 imperceptible하지 않을까...싶다.

 


이렇게 Defensive Distillation에 대해서 리뷰해보았다. Distillation이라는 개념을 사용하여 Defensive를 한다는 점이 신선했고 대단하다고 생각한다. 이래서 한 분야뿐만 아니라 다양한 분야들도 기본적인 지식은 알아두어야 새로운 관점에서 바라볼 수 있는 능력을 키울 수 있는 것 같다. 결론은...공부 더 하자!!