Adversarial Robustness 논문 리뷰 — FGSM/PGD/C&W 공격 비교 분석
딥러닝 모델에 대한 대표적인 적대적 공격 기법인 FGSM, PGD, C&W를 비교 분석하고 각각의 특성과 방어 방법을 정리합니다.
광고 영역
가시 영역 진입 시 로드
목차
개요
딥러닝 모델은 인간이 인식하지 못하는 미세한 노이즈에도 완전히 다른 예측을 내놓는 취약점이 있습니다. 이를 **적대적 예제(Adversarial Example)**라고 합니다.
이 글에서는 가장 널리 알려진 세 가지 공격 기법을 비교 분석합니다.
| 공격 기법 | 논문 | 연도 | 특징 |
|---|---|---|---|
| FGSM | Goodfellow et al. | 2014 | 단일 스텝, 빠름 |
| PGD | Madry et al. | 2018 | 반복 스텝, 강력함 |
| C&W | Carlini & Wagner | 2017 | 최적화 기반, 정밀함 |
1. FGSM (Fast Gradient Sign Method)
Goodfellow et al.이 2014년 제안한 FGSM은 가장 간단하면서도 효과적인 공격 기법입니다.
수식
x_adv = x + ε · sign(∇_x J(θ, x, y))
손실 함수의 그래디언트 방향으로 ε만큼 이동하여 적대적 예제를 생성합니다.
구현
def fgsm_attack(model, images, labels, epsilon):
images.requires_grad = True
# 순전파
outputs = model(images)
loss = F.cross_entropy(outputs, labels)
# 역전파
model.zero_grad()
loss.backward()
# 그래디언트 부호 방향으로 perturbation 추가
perturbation = epsilon * images.grad.sign()
adv_images = images + perturbation
# 클리핑 (유효한 픽셀 범위 유지)
adv_images = torch.clamp(adv_images, 0, 1)
return adv_images.detach()
장단점
장점: 계산이 빠르고 구현이 간단합니다.
단점: 단일 스텝이라 공격 성공률이 낮을 수 있습니다. 특히 방어 모델에 대해서는 효과가 제한적입니다.
2. PGD (Projected Gradient Descent)
Madry et al.의 PGD는 FGSM을 여러 번 반복하는 방식입니다. “First-order adversary”로도 불리며, 현재까지도 가장 강력한 공격 기법 중 하나입니다.
수식
x^(t+1) = Π_{x+S}(x^t + α · sign(∇_x J(θ, x^t, y)))
Π는 ε-ball 내로 투영하는 연산입니다.
구현
def pgd_attack(model, images, labels, epsilon, alpha, num_steps):
# 랜덤 초기화
adv_images = images + torch.empty_like(images).uniform_(-epsilon, epsilon)
adv_images = torch.clamp(adv_images, 0, 1).detach()
for _ in range(num_steps):
adv_images.requires_grad = True
outputs = model(adv_images)
loss = F.cross_entropy(outputs, labels)
model.zero_grad()
loss.backward()
# 스텝 업데이트
adv_images = adv_images + alpha * adv_images.grad.sign()
# epsilon-ball 내로 투영
delta = torch.clamp(adv_images - images, -epsilon, epsilon)
adv_images = torch.clamp(images + delta, 0, 1).detach()
return adv_images
하이퍼파라미터 설정 가이드
일반적으로 다음 설정이 많이 사용됩니다.
# CIFAR-10 기준
epsilon = 8/255 # L∞ 노름 제약
alpha = 2/255 # 스텝 크기
num_steps = 20 # 반복 횟수
3. C&W (Carlini & Wagner)
C&W 공격은 최적화 문제로 적대적 예제를 찾습니다. 다른 공격 기법과 달리 최소한의 perturbation으로 공격을 성공시키는 것이 목표입니다.
최적화 목표
min_δ ‖δ‖_p + c · f(x + δ)
여기서 f는 공격 성공 조건을 나타내는 함수입니다.
특징
C&W 공격은 다른 방어 기법들을 우회하는 데 효과적이지만, 계산 비용이 매우 높습니다.
# 간략화된 C&W L2 공격
def cw_l2_attack(model, images, labels, c=1.0, kappa=0, max_iter=1000, lr=0.01):
w = torch.zeros_like(images, requires_grad=True)
optimizer = optim.Adam([w], lr=lr)
for step in range(max_iter):
# tanh 변환으로 [0,1] 범위 보장
adv_images = 0.5 * (torch.tanh(w) + 1)
outputs = model(adv_images)
# C&W 손실 함수
real = outputs.gather(1, labels.view(-1, 1)).squeeze(1)
other = (outputs - 1e4 * F.one_hot(labels, outputs.size(1))).max(1)[0]
f_loss = torch.clamp(real - other + kappa, min=0).sum()
l2_loss = ((adv_images - images) ** 2).sum()
loss = l2_loss + c * f_loss
optimizer.zero_grad()
loss.backward()
optimizer.step()
return adv_images.detach()
공격 기법 비교
| 항목 | FGSM | PGD | C&W |
|---|---|---|---|
| 계산 속도 | 매우 빠름 | 보통 | 느림 |
| 공격 성공률 | 낮음~보통 | 높음 | 매우 높음 |
| Perturbation 크기 | 고정 | 고정 | 최소화 |
| 구현 난이도 | 쉬움 | 보통 | 어려움 |
| 방어 우회 능력 | 낮음 | 보통 | 높음 |
방어 기법: Adversarial Training
현재까지 가장 효과적인 방어 기법은 Adversarial Training입니다. 훈련 데이터에 적대적 예제를 포함시켜 모델을 강건하게 만드는 방법입니다.
def adversarial_training_step(model, optimizer, images, labels, attacker):
# 적대적 예제 생성
adv_images = attacker.attack(images, labels)
# 일반 + 적대적 예제 혼합 훈련
all_images = torch.cat([images, adv_images])
all_labels = torch.cat([labels, labels])
outputs = model(all_images)
loss = F.cross_entropy(outputs, all_labels)
optimizer.zero_grad()
loss.backward()
optimizer.step()
return loss.item()
결론
세 공격 기법 모두 각자의 용도가 있습니다.
- 빠른 실험: FGSM
- 강력한 공격 벤치마킹: PGD
- 최소 perturbation 연구: C&W
다음 포스트에서는 AutoAttack, Square Attack 등 더 최신 공격 기법들을 다룰 예정입니다.
참고 문헌
- Goodfellow, I. J., et al. “Explaining and harnessing adversarial examples.” ICLR 2015.
- Madry, A., et al. “Towards deep learning models resistant to adversarial attacks.” ICLR 2018.
- Carlini, N., & Wagner, D. “Towards evaluating the robustness of neural networks.” IEEE S&P 2017.
���� ��
광고 영역
가시 영역 진입 시 로드