적대적 머신 러닝: ML 모델을 공격하고 방어하는 방법
게시 됨: 2022-03-11오늘날 컴퓨터 비전의 머신 러닝 모델은 자율 주행 자동차, 얼굴 인식, 암 진단 또는 차세대 상점과 같은 많은 실제 응용 프로그램에서 사용되어 고객이 어떤 제품을 선반에서 꺼내어 신용을 얻을 수 있는지 추적합니다. 나갈 때 카드를 충전할 수 있습니다.
이러한 기계 학습 시스템의 증가하는 정확도는 상당히 인상적이어서 자연스럽게 이를 사용하는 애플리케이션의 홍수로 이어졌습니다. 그 이면의 수학적 기초는 이미 수십 년 전에 연구되었지만 비교적 최근에 등장한 강력한 GPU로 인해 연구자들은 복잡한 기계 학습 시스템을 실험하고 구축하는 데 필요한 컴퓨팅 성능을 얻을 수 있었습니다. 오늘날 컴퓨터 비전을 위한 최첨단 모델은 최대 수백만 개의 매개변수가 있는 심층 신경망을 기반으로 하며 불과 10년 전에는 사용할 수 없었던 하드웨어에 의존합니다.
2012년 Alex Krizhevsky et altri는 심층 컨볼루션 네트워크를 구현하는 방법을 처음으로 보여주었으며, 당시 이 네트워크는 객체 분류의 최첨단 모델이 되었습니다. 그 이후로 원래 모델에 대한 많은 개선 사항이 게시되었으며 각각은 정확도(VGG, ResNet, Inception 등)가 향상되었습니다. 최근에 머신 러닝 모델은 많은 컴퓨터 비전 작업에서 인간과 인간 이상의 정확도를 달성했습니다.
몇 년 전에는 기계 학습 모델에서 잘못된 예측을 얻는 것이 일반적이었습니다. 오늘날 이것은 예외가 되었으며 특히 실제 응용 프로그램에 배포할 때 완벽하게 수행할 것으로 기대하게 되었습니다.
최근까지 기계 학습 모델은 일반적으로 기계 학습 대회 및 학술 논문과 같은 실험실 환경에서 훈련되고 테스트되었습니다. 최근에는 실제 시나리오에 배포되면서 모델 오류로 인한 보안 취약점이 심각한 문제가 되었습니다.
이 기사의 아이디어는 이미지 인식에 사용되는 최첨단 심층 신경망이 어떻게 악의적인 행위자에 의해 쉽게 속아 잘못된 예측을 생성할 수 있는지 설명하고 보여주기 위한 것입니다. 일반적인 공격 전략에 익숙해지면 이에 대해 모델을 방어하는 방법에 대해 논의할 것입니다.
적대적 머신 러닝 예제
기본적인 질문부터 시작하겠습니다. 적대적 머신 러닝의 예는 무엇입니까?
적대적인 예는 기계 학습 모델을 속이도록 의도적으로 설계된 악의적인 입력입니다.
이 기사에서 우리는 이미지 분류를 수행하는 기계 학습 모델에 대한 관심을 제한할 것입니다. 따라서 적대적인 예시는 모델이 올바르게 분류할 수 없는 공격자가 만든 입력 이미지가 될 것입니다.
예를 들어 ImageNet에서 훈련된 GoogLeNet을 사용하여 이미지 분류를 기계 학습 모델로 수행해 보겠습니다. 아래에는 사람의 눈으로 구별할 수 없는 두 개의 판다 이미지가 있습니다. 왼쪽 이미지는 GoogLeNet 모델을 훈련하는 데 사용되는 ImageNet 데이터 세트의 깨끗한 이미지 중 하나입니다. 오른쪽에 있는 것은 중앙 이미지에 노이즈 벡터를 추가하여 만든 첫 번째 이미지를 약간 수정한 것입니다. 첫 번째 이미지는 예상대로 모델에 의해 팬더로 예측됩니다. 대신에 두 번째는 긴팔원숭이가 될 것으로 예측됩니다(매우 높은 신뢰도로).
첫 번째 이미지에 추가된 노이즈는 무작위가 아니라 공격자가 신중하게 최적화한 결과입니다.
두 번째 예로 3D 프린터를 사용하여 3D 적대적 사례를 합성하는 방법을 살펴볼 수 있습니다. 아래 이미지는 저자가 인쇄한 3D 거북이의 다양한 모습과 Google Inception v3 모델에 의한 오분류를 보여줍니다.
인간을 능가하는 분류 정확도를 가진 최첨단 모델이 어떻게 그렇게 어리석은 실수를 할 수 있습니까?
신경망 모델이 가지고 있는 경향이 있는 약점을 탐구하기 전에 우리 인간에게는 고유한 적대 사례가 있다는 것을 기억해야 합니다. 아래 이미지를 살펴보십시오. 무엇을 볼 수 있습니까? 나선형 또는 일련의 동심원?
이러한 다양한 예에서 보여 주는 것은 기계 학습 모델과 인간의 시각이 이미지에 있는 내용을 이해할 때 상당히 다른 내부 표현을 사용해야 한다는 것입니다.
다음 섹션에서는 적대적 사례를 생성하는 전략을 살펴보겠습니다.
적대적 사례를 생성하는 방법
간단한 질문부터 시작하겠습니다. 적대적 예가 무엇입니까?
모델이 올바르게 분류하는 깨끗한 이미지를 가져오고 ML 모델에서 새 이미지를 잘못 분류하는 작은 섭동을 찾아 적대적 예제가 생성됩니다.
공격자가 공격하려는 모델에 대한 완전한 정보를 가지고 있다고 가정해 보겠습니다. 이것은 본질적으로 공격자가 $J(\theta, X, y)$ 모델의 손실 함수를 계산할 수 있음을 의미합니다. 여기서 $X$ 는 입력 이미지, $y$ 는 출력 클래스, $\theta$ 는 내부 모델 매개변수. 이 손실 함수는 일반적으로 분류 방법에 대한 음의 손실 가능성입니다.
이 화이트박스 시나리오에는 여러 공격 전략이 있으며, 각 전략은 이를 생성하기 위한 계산 비용과 성공률 간의 서로 다른 절충안을 나타냅니다. 이러한 모든 방법은 기본적으로 입력 이미지의 섭동을 작게 유지하면서 모델 손실 함수의 변화를 최대화하려고 합니다. 입력 이미지 공간의 차원이 높을수록 인간의 눈으로 깨끗한 이미지와 구별할 수 없는 적대적 예제를 생성하기가 더 쉽습니다.
L-BFGS 방법
다음 상자 제한 최적화 문제를 해결하여 적대적 예제의 ${x}'$ 를 찾았습니다.
여기서 $c > 0$ 는 해결해야 하는 매개변수입니다. 직관적으로 우리는 깨끗한 이미지에 대한 왜곡의 가중치 합( $ \left | x - {x}' \right |$ )과 잘못된 클래스는 가능한 한 최소한입니다.
심층 신경망과 같은 복잡한 모델의 경우 최적화 문제에는 폐쇄형 솔루션이 없으므로 반복적인 수치 방법을 사용해야 합니다. 이 때문에 이 L-BFGS 방법은 느립니다. 그러나 그 성공률은 높다.
빠른 그라디언트 기호(FGS)
빠른 기울기 부호(FGS) 방법을 사용하여 깨끗한 이미지 벡터 $X$ 와 실제 클래스 $y$ 에 의해 주어진 초기점 주변의 손실 함수의 선형 근사를 만듭니다.
이 가정에서 손실 함수의 기울기는 손실의 최대 변화를 생성하기 위해 입력 벡터를 변경해야 하는 방향을 나타냅니다. 섭동의 크기를 작게 유지하기 위해 실제 표준이 아닌 그라디언트의 부호만 추출하고 작은 계수 엡실론만큼 크기를 조정합니다.
이렇게 하면 초기 이미지와 수정된 이미지 간의 픽셀 단위 차이가 항상 엡실론보다 작습니다(이 차이는 L_infinity 표준임).
기울기는 역전파를 사용하여 효율적으로 계산할 수 있습니다. 이 방법은 구현하기에 가장 빠르고 계산적으로 가장 저렴한 방법 중 하나입니다. 그러나 성공률은 L-BFGS와 같은 고가의 방법보다 낮습니다.
Adversarial Machine Learning at Scale 의 저자는 ImageNet 데이터 세트에 대한 상위 1 예측에서 63%에서 69% 사이의 성공률을 가지며 엡실론은 2에서 32 사이라고 말했습니다. 로지스틱 회귀와 같은 선형 모델의 경우 빠른 기울기 부호 방법 정확하다. 이 경우 적대적 사례에 대한 다른 연구 논문의 저자는 99%의 성공률을 보고합니다.
반복적인 빠른 그라디언트 기호
이전 방법의 명백한 확장은 더 작은 단계 크기의 알파로 여러 번 적용하고 깨끗한 이미지와 적대적 이미지 사이의 왜곡이 엡실론보다 낮은지 확인하기 위해 전체 단계 길이를 자르는 것입니다.

Nicholas Carlini의 논문에서 제안된 것과 같은 다른 기술은 L-BFGS에 대한 개선 사항입니다. 또한 계산 비용이 많이 들지만 성공률이 높습니다.
그러나 대부분의 실제 상황에서 공격자는 대상 모델의 손실 함수를 알지 못합니다. 이 경우 공격자는 블랙박스 전략을 취해야 합니다.
블랙박스 공격
연구원들은 적대적 예제가 모델 간에 매우 잘 전달된다는 점을 반복적으로 관찰했습니다. 즉, 대상 모델 A에 대해 설계될 수 있지만 유사한 데이터 세트에서 훈련된 다른 모델에 대해 효과적이라는 의미입니다.
이것은 공격자가 모델에 대한 완전한 정보에 액세스할 수 없을 때 유리하게 사용할 수 있는 적대적 사례의 소위 전달 가능성 속성입니다. 공격자는 다음 단계에 따라 적대적인 예를 생성할 수 있습니다.
- $i=1…n$ 에 대한 입력 $X_i$ 를 사용하여 대상 모델을 쿼리하고 출력 $y_i$ 를 저장합니다.
- 훈련 데이터 $(X_i, y_i)$ 를 사용하여 대체 모델이라고 하는 다른 모델을 빌드합니다.
- 위에 표시된 화이트박스 알고리즘을 사용하여 대체 모델에 대한 적대적 예를 생성합니다. 그들 중 많은 사람들이 성공적으로 이전되어 대상 모델의 적대적인 사례가 될 것입니다.
상업용 머신 러닝 모델에 대한 이 전략의 성공적인 적용은 이 Computer Vision Foundation 문서에 나와 있습니다.
적대적 사례에 대한 방어
공격자는 모델에 대한 모든 정보를 이용하여 공격을 조작합니다. 분명히 예측 시 모델이 출력하는 정보가 적을수록 공격자가 성공적인 공격을 만들기가 더 어렵습니다.
프로덕션 환경에서 분류 모델을 보호하기 위한 첫 번째 쉬운 조치는 예측된 각 클래스에 대한 신뢰도 점수를 표시하지 않는 것입니다. 대신, 모델은 가장 가능성이 높은 상위 $N$ (예: 5) 클래스만 제공해야 합니다. 최종 사용자에게 신뢰도 점수가 제공되면 악의적인 공격자는 이를 사용하여 손실 함수의 기울기를 수치적으로 추정할 수 있습니다. 이런 식으로 공격자는 예를 들어 빠른 기울기 부호 방법을 사용하여 화이트박스 공격을 만들 수 있습니다. 앞서 인용한 Computer Vision Foundation 논문에서 저자는 상용 기계 학습 모델에 대해 이를 수행하는 방법을 보여줍니다.
문헌에서 제안된 두 가지 방어책을 살펴보겠습니다.
방어적 증류
이 방법은 그라디언트가 원래의 보호되지 않은 모델보다 훨씬 작은 새 모델을 생성하려고 시도합니다. 그라디언트가 매우 작으면 공격자가 손실 함수에서 충분한 변경을 달성하기 위해 입력 이미지를 크게 왜곡해야 하므로 FGS 또는 반복 FGS와 같은 기술은 더 이상 유용하지 않습니다.
방어적 증류는 네트워크의 마지막 소프트맥스 계층에 온도라고 하는 새로운 매개변수 $T$ 를 도입합니다.
T=1의 경우 일반적인 softmax 함수가 있습니다. $T$ 값이 클수록 입력 영상에 대한 손실 기울기가 작아집니다.
방어적 증류는 다음과 같이 진행됩니다.
- 온도가 $T » 1$ 인 교사 네트워크라고 하는 네트워크를 훈련시킵니다.
- 훈련된 교사 네트워크를 사용하여 훈련 세트의 각 이미지에 대한 소프트 레이블을 생성합니다. 이미지의 소프트 레이블은 모델이 각 클래스에 할당하는 확률 집합입니다. 예를 들어 출력 이미지가 앵무새인 경우 교사 모델은 (90% parrot, 10% papagayo)와 같은 소프트 레이블을 출력할 수 있습니다.
- 다시 온도 $T$ 를 사용하여 소프트 레이블에서 두 번째 네트워크인 증류된 네트워크 를 훈련시킵니다. 소프트 레이블을 사용한 훈련은 과적합을 줄이고 증류된 네트워크의 샘플 외 정확도를 개선하는 기술입니다.
- 마지막으로 예측 시점에 온도 $T=1$ 로 증류된 네트워크를 실행합니다.
Defensive distillation 은 Deep Neural Networks에 대한 Adversarial Perturbations에 대한 방어로서 Distillation 에서 시도된 일련의 공격으로부터 네트워크를 성공적으로 보호합니다.
불행히도 버클리 캘리포니아 대학교의 이후 논문은 방어적 증류를 물리치는 새로운 공격 방법을 제시했습니다. 이러한 공격은 방어 증류가 적대적 사례에 대한 일반적인 솔루션이 아님을 증명하는 L-BFGS 방법에 대한 개선 사항입니다.
적대 훈련
오늘날에는 적대적 훈련이 가장 효과적인 방어 전략입니다. 모델을 훈련할 때 적대적 예제가 생성되어 사용됩니다. 직관적으로 모델이 훈련 중에 적대적인 예를 보는 경우 동일한 방식으로 생성된 적대적 예에서 예측 시 성능이 더 좋습니다.
이상적으로는 훈련 중에 적대적 사례를 생성하기 위해 알려진 공격 방법을 사용하는 것이 좋습니다. 그러나 ImageNet과 같이 차원이 높은 큰 데이터 세트의 경우 L-BFGS와 같은 강력한 공격 방법과 Berkeley 논문에 설명된 개선 사항은 계산 비용이 너무 많이 듭니다. 실제로 우리는 FGS와 같은 빠른 방법을 사용할 여유가 있거나 반복적인 FGS를 사용할 수 있습니다.
적대적 훈련은 깨끗한 예제의 일반적인 손실 함수와 적대적 예제의 손실 함수의 가중치 합인 수정된 손실 함수를 사용합니다.
훈련 중에 $m$ 깨끗한 이미지의 모든 배치에 대해 네트워크의 현재 상태를 사용하여 $k$ 적대적 이미지를 생성합니다. 깨끗한 예제와 적대적인 예제 모두에 대해 네트워크를 전달하고 위의 공식으로 손실을 계산합니다.
이 회의 논문에서 제시된 이 알고리즘의 개선 사항을 앙상블 적대적 훈련(ensemble adversarial training)이라고 합니다. 현재 네트워크를 사용하여 적대적 예제를 생성하는 대신 여러 사전 훈련된 모델을 사용하여 적대적 예제를 생성합니다. ImageNet에서 이 방법은 블랙박스 공격에 대한 네트워크의 견고성을 높입니다. 이 방어는 적대적 공격에 대한 방어에 대한 NIPS 2017 대회 의 1라운드 우승자입니다.
결론 및 추가 단계
오늘날 기계 학습 모델을 공격하는 것이 방어하는 것보다 쉽습니다. 실제 응용 프로그램에 배포된 최신 모델은 방어 전략이 채택되지 않은 경우 적대적 사례에 쉽게 속아 잠재적으로 중요한 보안 문제의 문을 엽니다. 가장 신뢰할 수 있는 방어 전략은 adversarial training이며, adversarial example이 생성되어 훈련 시간에 깨끗한 예제에 추가됩니다.
다양한 공격에 대한 이미지 분류 모델의 견고성을 평가하려면 오픈 소스 Python 라이브러리 smarthan을 사용하는 것이 좋습니다. 이 문서에 언급된 것을 포함하여 많은 공격 방법을 모델에 대해 테스트할 수 있습니다. 또한 이 라이브러리를 사용하여 모델의 적대적 훈련을 수행하고 적대적 예제에 대한 견고성을 높일 수 있습니다.
새로운 공격과 더 나은 방어 전략을 찾는 것은 활발한 연구 영역입니다. 기계 학습 모델을 실제 응용 프로그램에서 더 강력하고 안전하게 만들기 위해서는 더 이론적이고 실증적인 작업이 모두 필요합니다.
독자들이 이러한 기술을 실험하고 새롭고 흥미로운 결과를 발표할 것을 권장합니다. 또한 저자는 이 기사에 대한 모든 피드백을 매우 환영합니다.
- 사운드 로직 및 모노토닉 AI 모델
- TensorFlow에서 경사하강법의 다양한 응용