[논문 Review] Explaining and Harnessing Adversarial Examples (ICLR 2015)
* 여름 연구실 인턴 정기 미팅에서 논문 리뷰한 것을 정리한 게시글입니다.
* 발표 자료는 직접 제작했으며, 사진이나 자료의 출처는 페이지에 바로 표시해두었습니다.
* 2021. 07. 21(수) 발표
이번주에 다룬 주제는 적대적 공격, Adversarial Attack에 관련한 논문이다.
먼저, Adversarial Attack이 무엇인지 간단하게 소개하겠다.
Adversarial이라는 단어는 대립하는, 적대적인 이라는 뜻을 가지고 있다. Adversarial attack은 사람이 인식하지 못할 정도의 특정 노이즈를 더하여 다른 이미지를 생성하고, 최신 분류 알고리즘들에게 혼란을 주는 공격방식을 의미한다.
Adversarial Attack의 대표적인 예시인 판다/긴팔원숭이 사진 예시를 가져와봤다. 사람이 육안으로 보기에는 왼쪽과 오른쪽의 사진이 모두 동일한 판다 사진으로 보인다. 하지만 실제로 오른쪽 사진에는 가운데처럼 노이즈가 추가된 사진이다. CNN과 같은 Classifier 모델은 왼쪽 사진을 보고 판다라고 잘 인식하지만, 노이즈 때문에 오른쪽 사진은 긴팔원숭이라고 인식하게 된다. 이런 방식으로 노이즈 등의 이미지 조작을 통해 모델에게 혼란을 주는 공격 방식을 Adversarial Attack이라고 할 수 있다.
이 때 오른쪽 사진과 같이 노이즈가 포함된 이미지들을 Adversarial Examples라고 부른다. 사람이 보기에는 원래의 사진과 구별하기 어렵지만, 기계가 인식했을 때는 다른 사진으로 구별해서 인식한다는 특징이 있다.
Adversarial attack은 왜 위험할까? Adversarial attack의 위험성을 직관적으로 알 수 있는 예시를 하나 가져와봤다.
위의 사진은 원래 STOP이라는 글씨가 적혀 있었던 정지 신호 표지판이다. 하지만 위와 같이 작은 스티커를 몇 개 붙이게 되면 자율주행차량은 이를 시속 45마일 속도 제한이라고 인식하게 된다. 만일 자율주행차량이 Adversarial attack에 노출되어서 이처럼 표지판 인식에 오류가 생긴다면, 이는 사람의 목숨과도 직결되기 때문에 Adversarial attack에 대한 problem을 해결하는 것은 중요한 문제이다.
Adversarial Attack을 다룬 논문 중 Explaining and Harnessing Adversarial Examples라는 논문을 선택해서 공부했다.
이 논문은 ICLR에서 2015년에 발표된 논문으로, 지난 게시글에서 다룬 GAN 논문 저자로 유명한 Goodfellow가 발표했다. 이 때, GAN과 Adversarial attack 모두 Adversarial이라는 단어가 들어가지만 둘은 전혀 다른 기술이다.
이 논문에서는 Adversarial Examples의 원인을 설명하고, Adversarial examples를 만드는 기법 중 하나인 FGSM을 소개하고 있다.
먼저, 논문의 초반에서 Adversarial examples가 생기는 원인에 대해서 설명한다. 이 논문이 발표되기 이전에는 Adversarial examples가 생기는 원인을 정확하게 파악하지 못하고 있었다고 한다. 당시의 주장들은 Neural Net이 Non-Linearity한 특성이 있고, Overfitting 때문에 위 사진같은 문제가 발생한다고 추측했다. 그런데 이 논문에서는 오히려 Neural Net이 Linear한 특성을 가지고 있기 때문이라고 주장한다.
즉, 다시 말하자면 Adversarial Examples의 원인이 Non-Linear한 특징 때문인줄 알았는데 알고보니 Linear한 특징이 원인이라고 이야기한 것이다. 이렇게 새롭게 관점을 제시하는 동시에, 논문에서는 Adversarial Examples를 간단하고 빠르게 만드는 방법인 FGSM도 제시한다.
FGSM은 빠르고 간단하게 Adversarial Examples를 생성하는 기법이며, Gradient를 이용해서 생성하는 기법이다. 이 기법은 학습하려는 방향의 반대 방향으로 최대한의 노이즈를 만들어서 기존 데이터에 합하면 가장 잘 오작동시킬 수 있지 않을까? 라는 아이디어에서 시작되었다.
FGSM 과정은 위와 같은 수식으로 정리할 수 있다. 모델의 입력, 즉 원본 이미지를 x라고 한다면 입력 이미지에 대한 손실 함수의 그래디언트를 계산해서 그 손실을 최대화하는 적대적 이미지를 생성할 수 있게 된다.
그림으로는 위와 같이 확인해볼 수 있다. 왼쪽과 같이 원래는 Cost값, 즉 오차를 최소화할 수 있는 방향으로 움직인다. 하지만 FGSM을 통해 노이즈를 추가하여 업데이트된 상황을 살펴보면 오히려 Cost값을 크게 하는 방향으로 진행된다. 이 방식을 통해 Adversarial Examples를 간단하게 생성할 수 있게 되는 것이다.
이 사진들은 FGSM 기법으로 만들어진 Adversarial Example 들이다. 이 사진들의 경우, 자세히 보면 노이즈가 낀 것을 육안으로도 확인해볼 수 있다.
논문 intro 후반에서는 위와 같은 고민을 언급한다. Adversarial 공격에는 취약하지만, Linear하기 때문에 훈련이 쉬운 Linear Neural Net을 개발할 것인지, 아니면 공격에는 강하지만, Non-Linear하기 때문에 학습이 어려운 Non-Linear Net를 개발할 것인지에 대한 고민이다.
이 부분에 대해서 명확한 답이 나와있지 않아 교수님께 여쭤보니 “Obfuscated gradients give a false sense of security: circumventing defenses to adversarial examples”-2018 ICML 라는 논문을 소개해주셨다. 이 논문을 읽어보면 아마 위의 질문에 대한 답이 될 것이라고 하셨다. 후에 이에 대해 공부해봐야지.
다음으로는 이번 발표 이후 더 공부해보고 싶은 부분들을 정리해봤다. 우선 오늘 다룬 적대적 공격에 대한 자료로 FGSM을 이용해서 직접 적대적 샘플들을 생성해볼 수 있는 튜토리얼을 찾았는데, 텐서플로우와 파이토치 모두 튜토리얼이 있어 각각 실습해보면 좋을 것 같다.
또 예전에 다루었던 강화학습과 관련한 실습이 재미있어 보여서 가지고 와봤다. 슈퍼마리오 만들기 실습인데, 이것도 나중에 시도해보면 재미있을 것 같다.