🤖 AI/ML

적대적 예제

Adversarial Example

AI가 잘못 분류하도록 설계된 입력. 인간에겐 정상으로 보임.

📖 상세 설명

적대적 예제(Adversarial Example)는 AI 모델이 잘못된 예측을 하도록 의도적으로 설계된 입력 데이터입니다. 인간의 눈에는 원본과 거의 구별할 수 없는 미세한 변형이지만, 딥러닝 모델은 완전히 다른 결과를 출력합니다. 2013년 Szegedy et al.이 처음 발견한 이래 AI 보안의 핵심 연구 분야가 되었습니다.

적대적 예제의 생성 원리는 모델의 그래디언트 정보를 활용합니다. FGSM(Fast Gradient Sign Method), PGD(Projected Gradient Descent), C&W(Carlini & Wagner) 등의 공격 기법이 대표적입니다. 이미지에 육안으로 식별 불가능한 노이즈를 추가해도 자율주행차가 정지 표지판을 속도 제한 표지판으로 인식하게 만들 수 있어 심각한 안전 위협이 됩니다.

방어 기법으로는 적대적 훈련(Adversarial Training), 입력 전처리, 방어적 증류(Defensive Distillation), 인증된 방어(Certified Defense) 등이 있습니다. 그러나 완벽한 방어는 불가능에 가깝고, 새로운 공격 기법이 계속 개발되고 있어 지속적인 보안 업데이트가 필요합니다.

실무에서 적대적 예제는 AI 시스템의 취약점 평가, 레드팀 테스트, 보안 감사에서 중요하게 다뤄집니다. EU AI Act에서도 고위험 AI 시스템의 사이버보안 요구사항에 적대적 공격 대응 능력을 명시하고 있어, 2025년 이후 모든 고위험 AI 시스템은 적대적 예제에 대한 강건성 테스트가 필수입니다.

💻 코드 예제

FGSM(Fast Gradient Sign Method)을 사용한 적대적 예제 생성:

import torch
import torch.nn.functional as F

def fgsm_attack(model, image, label, epsilon=0.03):
    """
    FGSM 적대적 예제 생성
    - epsilon: 섭동(perturbation)의 강도 (0.03 = 3%)
    """
    image.requires_grad = True

    # 순전파
    output = model(image)
    loss = F.cross_entropy(output, label)

    # 역전파로 그래디언트 계산
    model.zero_grad()
    loss.backward()

    # 그래디언트 부호 방향으로 섭동 추가
    perturbation = epsilon * image.grad.sign()
    adversarial_image = image + perturbation

    # 이미지 값 범위 클리핑 [0, 1]
    adversarial_image = torch.clamp(adversarial_image, 0, 1)

    return adversarial_image

# 적대적 훈련 (방어 기법)
def adversarial_training(model, train_loader, epsilon=0.03):
    """적대적 예제를 포함한 강건한 모델 훈련"""
    for images, labels in train_loader:
        # 50%는 원본, 50%는 적대적 예제로 훈련
        adv_images = fgsm_attack(model, images, labels, epsilon)
        mixed_images = torch.cat([images, adv_images])
        mixed_labels = torch.cat([labels, labels])

        # 모델 업데이트
        outputs = model(mixed_images)
        loss = F.cross_entropy(outputs, mixed_labels)
        loss.backward()
        optimizer.step()

📊 성능 & 비용

공격/방어 기법 공격 성공률 계산 비용 특징
FGSM (공격) 70-85% 1x (가장 빠름) 단일 스텝, 실시간 공격 가능
PGD (공격) 90-99% 10-100x 반복 최적화, 가장 강력한 공격
C&W (공격) 95-100% 100-1000x 최소 섭동, 탐지 회피에 효과적
적대적 훈련 (방어) 방어율 60-80% 훈련 시간 2-10x 증가 가장 효과적인 실용적 방어
인증된 방어 (방어) 방어율 보장 40-60% 추론 시간 5-50x 증가 수학적 보장, 정확도 손실

🗣️ 실무에서 이렇게 말하세요

💬 보안 리뷰에서
"이 이미지 분류 모델에 대해 PGD 공격으로 적대적 예제 테스트를 수행했습니다. epsilon 0.03에서 공격 성공률이 87%로, 적대적 훈련이 필요합니다."
💬 기획 회의에서
"자율주행 시스템이라 적대적 예제에 대한 강건성이 필수입니다. 표지판 인식 모델에 물리적 적대적 공격(예: 스티커 부착) 시나리오도 테스트해야 해요."
💬 면접에서
"적대적 예제는 모델의 결정 경계가 인간의 인지 경계와 다르기 때문에 발생합니다. FGSM은 그래디언트 부호만 사용해 빠르지만, PGD는 반복 최적화로 더 강력한 공격을 생성합니다."

⚠️ 흔한 실수 & 주의사항

FGSM만으로 강건성 테스트

FGSM은 약한 공격입니다. PGD나 AutoAttack 같은 강력한 공격으로 테스트하지 않으면 거짓 안전감에 빠집니다.

화이트박스 공격만 고려

실제 공격자는 모델 구조를 모를 수 있습니다. 전이성(transferability)을 이용한 블랙박스 공격도 테스트해야 합니다.

정확도 vs 강건성 트레이드오프 무시

적대적 훈련은 일반 데이터에서 정확도가 2-5% 감소할 수 있습니다. 비즈니스 요구사항과 균형을 맞춰야 합니다.

올바른 접근법

RobustBench 등의 표준화된 벤치마크로 평가하고, 다양한 공격 기법을 조합하며, 물리적 공격 시나리오도 고려하세요.

🔗 관련 용어

📚 더 배우기