본문 바로가기
딥러닝

[딥러닝 논문 리뷰] Universal adversarial perturbation

by 미스터탁 2018. 6. 5.

이번에 리뷰할 논문은 작년 (17년) CVPR에 나온 논문으로 perturbation에 관한 논문입니다. 

 

"Universal adversarial perturbation" 이라는 제목에서 알수 있듯이 보편적인 perturbation을 만드는 내용에 대한 논문입니다.

 

이전에 포스팅했던 글(http://bluediary8.tistory.com/10?category=609872)에서 잠깐  "Deep Neural Network are Easily Fooled:" 이라는 논문을 언급하고 지나갔는데, 그 논문의 주된 내용은 이미지에 적절한 noise를 추가하면 DNN을 완벽하게 속일 수 있다 라는 것이 였습니다.

 

그런데 그 noise를 추가하는 방법이 비교적 까다롭고 'universal'하지 않았습니다. 여러 이미지가 있다면 각각 다른 noise를 추가 해야만 했습니다.

 

본 논문에서 만들고자 하는 perturbation은 모든 image set에 대하여 동일한 noise를 추가하면 DNN이 쉽게 속을 수 있고, 더 나아가 다른 network 또한 속일 수 있다는 특성을 가지고 있습니다.

 

아래 그림을 보시면 왼쪽의 그림들이 모두 오른쪽 빨간색 label로 속여졌다라는 것을 알 수 있는데. 이는 모두 가운데에 있는 noise를 동일하게 추가한 결과입니다.

 

 

 

 

 

 

본 논문에서 언급하고 있는 Main contribution은 다음과 같습니다.

- DNN을 속일수 있는 universal image-agnostic perbutation을 보임

- 그러한 perturbation을 찾는 알고리즘을 제안. 

- universal perturbation이 generalization property를 가짐

- perturbation이 image에 대하여 universal할 뿐 아니라 DNN에 대해서도 universal함. 그러므로 double universal한 특징을 지님.

- decision boundary의 geometric correlation을 설명함으로써 perturbation에 취약한 DNN을 설명

 

 

 

우선, universal perturbation vector v를 만들기 위해서는 아래와 같은 조건을 만족해야합니다. x 이미지에 noise vector v를 추가하였을때 classfier k 의 결과가 k(x)의 결과와 같지 않아야합니다.

이러한 vector v를 찾기 위해 아래 두가지의 constraint를 추가합니다. 

perturbation vector v의 magnitude를 control하는 parameter이며, 

는 희망하는 fooling ration입니다.

 

 

 

 

위 문제를 풀기 위해 다음과 같은 perturbation생성 알고리즘을 제안합니다. v 는 처음에 당연히 0일 것이고, 매우 작은 noise를 추가하여 classifier가 이미지를 다르게 인식하게 하여 v를 update시킵니다.

 

 

 

이 과정을 그림으로 도식화 시킨다면 아래 그림과 같습니다. 기존의 x1, x2, x3자리에서 perturbation vector를 추가하게 되면 다른 decision boundary로 이동하게 되는 개념입니다.

 

 

 

 

이렇게 생성되는 noise들을 여러가지 특성을 보입니다. 첫번째로, network마다 unique 하지 않다라는 특징인데, 아래 그림은 각기 다른 network로 perturbation을 생성시켜 시각화 시킨 그림입니다. 비슷한 느낌이 들기는 각기 다른 pattern 을 보이고 있습니다. 이를 통해 알 수 있는 것은 위에서 언급한 constraint을 만족시키는 perturbation을 무수히 많다라는 것입니다. 

 

 

또한, 같은 network에 대하여 데이터를 random하게 섞어서 perturbation vector를 생성시켰더니, 이번에도 perturbation vector가 다양하게 생성이 되었습니다.(아래그림 참조) 이를 통해서도 perturbation의 다양성에 대해서 알수 있습니다.

 

 

 

이미지의 수와 fooling ratio의 관계에 대해서도 설명을 하고 있는데, 이미지 500장이면 전체 데이터의 30%를 속일 수 있는 perturbation vector를 만들 수 있다라고 서술되어 있으며. 논문에서 제안한 알고리즘이 Generalization power가 있다고 주장을 하고 있습니다. (처음에 겨우 30% 라고 생각했지만 이미지가 500장인 것을 감안한다면 꽤 높은 수치는 맞는 것 같습니다.)

 

 

 

 

이 논문을 읽으면서 가장 신기했던건 물론 하나의 perturbation vector가 대부분의 이미지를 속일 수 있다는 점도 있지만, 그 perturbation vector가 다른 네트워크도 속일 수 있다는 점이 였습니다. 아래 table을 보시면 각기 다른 network로 만들어진 perturbation vector를 이미지에 추가하여 다른 network에 test해봤더니 어느정도 잘 속아지는 모습을 보였다라는 것을 알 수 있습니다. (이는 어쩌면 당연한 얘기일 수도 있습니다. 아래 제시된 네트워크는 지역적인 feature들을 잡아내는 network이고 비슷한 feature를 가질 가능성이 높습니다. 그렇기 때문에 다른 network가 맞추지 못하게 끔 속여졌다면 기존 네트워크도 속여질 가능성이 있....그래도 신기하긴 하네요..). 결국에 논문에서 제안한 perturbation vector는 이미지 뿐만아니라 network 구조 전반적으로 universal합니다. (doubly - universal)

 

 

 

 

이 외에도 저자들이 보이는 perturbation vector의 특성은 (참 많은 노력을 기울인듯한 논문이네요....) 여러 image label들이 하나의 label로 속아진다는 것입니다.  아래 그래프의 꼭지점은 label을 의미하고 edge e = ( i -> j) 는 i class가 j로 속여졌다는 의미입니다. 즉, 아래 왼쪽의 대부분의 label들이 great grey owl로 속여졌다는 의미입니다. 여러 component가 하나의 target label로 속여지는 특성을 보인다는 의미이고. 이는 몇몇의 dominant label이 존재함을 의미합니다. 저자들은 이 dominant label들이 image space의 large region을 점유하고 있을 거라고 가정하였습니다. (이 가정에 대한 증명이나 실험 결과는 없습니다만은 reasonable한 것 같습니다. 그 이유는, DNN이 속으면서 noise vector의 norm이 작아지는 조건을 걸었기 때문에, perturbation 을 추가한 이미지들은 Network가 인지하기에 True decision boundary 바로 부근의 decision boundary로 이동하게 될것입니다. 이렇게 이동하게된 이미지들은 결국에 군집을 이룰 가능성이 매우크게 되겠죠. 그 군집의 대표값들이 아래의 target label이라고 보시면 될 것 같습니다.

 

 

 

 

 

그렇다면, perturbation noise를 추가한 이미지를 network가 다시 재학습 시키면 어떻게 될까요? 논문에서는 VGG를 통해 실험을 하였는데 5 epoch 정도 fine-tuning을 시킨 결과, validation set의 76.2%가 여전히 속는 모습을 보였다고합니다.(fine-tuning하기전은 93.7%). 이 상태에서 다시 perturbation 을 생성시키고 fine-tuning과정을 거쳤더니 80%가 속는 결과를 보였다고하며 fine-tuning을 한다고 하더라도 universal perturbation 에 대해 면역이 완벽하게 생기는 것은 아니라고 서술하고 있습니다. 이에 대해서는 약간의 반론이 있긴 합니다. 이전에 소개한 논문 Understanding Deep Learning Requires Rethinking Generalization이나 Universal approximation theorem만 생각해봐도 계속해서 학습시키게 되면, 결국에는 다시 잘 분류하는 모습을 보일 것입니다. 그리고 나서 다시 perturbation 을 생성하고 다시 network를 학습시켰을때의 결과는 (계속해서 속고 맞추고를 반복할 것 같긴 합니다만) 별개의 이야기가 아닌가 라는 생각이 듭니다. 

반응형

댓글