Adversarial Attack(Part 2): PeerNets
- Adversarial Attack(Part1): Adversarial Attack과 Defense
- Adversarial Attack(Part 2): PeerNets: Exploiting Peer Wisdom Against Adversarial Attacks
지난 튜토리얼(Part 1)에 이어서 방어에 대해서 간략히 다루고 이번 에피소드의 핵심인 논문 PeerNets: Exploiting Peer Wisdom Against Adversarial Attacks의 리뷰를 진행하겠습니다.
방어 방법
지난 튜토리얼(Part 1)에서 다룬 것처럼 방어에는 대표적으로 3가지 접근 방법이 있습니다.
- 공격쪽에서 생성된 이미지를 추가 학습 데이터로 활용
- 입력이 노이즈가 추가된 이미지인지 아닌지 판별하는 AI 사용
- Defensive Distillation
좌우 반전, 명도, 채도 조절된 이미지를 추가적인 학습 데이터로 활용하는 것은 AI 분야에서 흔히 사용하는 방법(Augmentation)입니다. 학습 데이터가 부족한 경우에 더 많은 데이터를 쉽게 확보할 수 있습니다. 때로는 더 나은 성능을 얻는데 도움이 되기도 합니다. 같은 이유로 Adversarial Attack에 사용된 입력을 추가 학습 데이터로 활용하면 공격에 좀 더 강한 모델을 만들 수 있습니다.
바둑을 잘하는 알파고처럼 입력에 공격이 있었는지 구분하는 AI를 사용하는 것도 하나의 방법입니다.
마지막으로 Knowledge Distillation을 사용하는 방법입니다. 자세한 내용은 힌튼 교수님의 Distilling the Knowledge in a Neural Network 논문에서 주요 아이디어를 확인하실 수 있습니다.
방어 목표
수비력도 중요하지만 방어를 위해 추가한 요소들이 기존 모델에 큰 영향을 끼치지 않는 것도 중요한 요소입니다. 이처럼 수비력말고도 여러 목표를 달성해야합니다.
- 모델 구조를 크게 바꾸지 않을 것
- 속도, 정확도에 영향을 주지 않을 것
PeerNets: Exploiting Peer Wisdom Against Adversarial Attacks
지금까지 여러 방어 방법들이 제안되었지만 각기 다른 한계점을 보였습니다. 노이즈가 더해진 이미지로 추가 학습을 한다면 Over-fitting의 가능성이 있고 공격 판별 AI는 모델을 추가로 준비해야합니다. PeerNets에서는 모델 구조를 크게 바꾸지 않고 정확도(Accuracy)를 유지하면서 공격에도 잘 대응(Fooling rate)하는 모델을 제안하였습니다. 물론 속도가 느려지는 단점이 있습니다.
논문 읽기 모임(PR12)에서 진행한 논문 리뷰 영상을 참고하시면 이해에 도움이 될 것 같습니다.
아이디어
아무리 강력한 모델이라도 정교한 노이즈에 대응하기는 쉽지 않습니다. 입력 이미지 하나만 가지고는 공격 여부나 노이즈의 정보를 판단하기 어렵기 때문이죠. 주변 정보를 이용해서 노이즈를 약화시키는 것이 이 논문의 핵심 아이디어입니다. 아래 그림에서 보이는 것처럼 입력 이미지(비행기)에 노이즈가 추가되더라도 주변 이미지들의 픽셀 정보를 기반으로 입력 이미지의 픽셀을 재구성합니다.
Peer Regularization(PR) 레이어
위의 그림을 수식으로 표현하면 다음과 같습니다. Graph Convolutional Network(GCN)라는 분야에서 자주 언급되는 수식(Graph Attention Network, GAT)중의 하나입니다.
수식이 복잡해보이지만 왼쪽 수식만 보자면
- 주변 픽셀(x^{j_k}_{q_k})의
- 가중치 합으로
- 현재 픽셀(x^i_p)을 재구성하는 의미입니다.
그리고 가중치는 오른쪽 수식에 의해 결정됩니다. PR 레이어에서는 위의 수식에 기반하여 입력 데이터를 보정하게 됩니다.
전체 구조
논문에서 사용한 모델(LeNet5, ResNet32, ResNet110)에 따라서 PR 레이어가 아래 그림처럼 위치하게 됩니다.
입력 이미지의 Peer를 결정할 때, 많은 계산이 필요하기 때문에 논문에서는 여러 최적화 기술을 사용했습니다. 전체 이미지를 Peer로 보는 것이 아니라 일부 샘플링된 이미지 중에서 K-nearest neighbors 알고리즘에 의해 선택된 이미지로 PR 레이어를 구성하게 됩니다(참고: Monte Carlo Approximation).
결과
논문에서는 LeNet5 on MNIST, ResNet32 on CIFAR10, ResNet110 on CIFAR100 총 3가지의 데이터셋에서 실험했습니다. 아래 표와 그림은 MNIST에서의 실험 결과입니다. Universal adversarial perturbations이라는 공격 알고리즘을 사용했고 노이즈 강도(rho: 0.2~1.0)에 따라서 정확도(Accuracy)와 공격 성공률(Fooling Rate)를 비교했습니다.
구현
PyTorch 1.0으로 구현한 코드를 github에 공유했습니다 https://github.com/tantara/PeerNets-pytorch
- LeNet5 on MNIST
- ResNet32 on CIFAR10
- ResNet110 on CIFAR100
기본 모델 정확도와 Universal Adversarial Perturbations 실험 결과가 있습니다.
- Baseline: 정확도(Accuracy, %)
- rho(0.2~1.0): 정확도(Accuracy, %)/공격 성공률(Fooling Rate, %)
참고 자료
Adversarial Attack은 학계 뿐만 아니라 산업계에서 관심을 가지고 있는 주제입니다. 이번 에피소드에서 간단한 내용을 위주로 다루지만 더 깊은 내용이 궁금하신 분들에게는 아래 논문들을 추천드립니다.