MI-FSGM은 모멘텀 기반의 Adversarial attack으로,
'Boosting Adversarial Attacks with Momentum' 논문에서 제안된 개념이다.
CVPR 2018에 발표돼 좋은 평가를 받은 논문이다.
Momentum Adversarial Attack은 각종 딥러닝 보안분야에서 높은 성적을 내고 수상을 했을 정도로 좋은 성능을 보였다.
"적대적 예제" Adversarial Examples
인간의 눈에 띄지 않게 조작된 데이터로, 딥러닝 모델의 부정확한 결과를 유도하는 것.
위의 사진을 보면 알프스에 노이즈를 추가했는데, Dog으로 그것도 99.99%의 확신을 가지고 분류하는 것을 알 수 있다.
실제로 정해진 특정 범위까지만 조작할 수 있도록 설정한다. 보통 입실론으로 표기한다.
이 논문에서는 입실론 = 16/255로 설정하여 Adversarial Example을 만들었다.
L-infiniti norm : 어떠한 픽셀은 15/255만큼 완전히 바뀌지만, 어떠한 픽셀은 전혀 바뀌지 않을 수도 있다. 변경된 픽셀의 값이 0~1 사이를 벗어나는 경우, 다시 그 사이로 값이 들어올 수 있도록, 범위를 벗어나는 픽셀은 잘라내기도 한다
8/255, 16/255로 설정하면 인간의 눈으로 보기에는 큰 차이가 없다.
Threat Model: 공격자가 어디까지 알고 있을까?
공격자가 자기가 공격할 모델에 대해서 많이 알고 있을수록 더욱 강력하게 공격을 수행한다.
- 화이트박스
공격자가 뉴럴네트워크에 대한 모든 정보를 알고 있다. ex) 네트워크 아키텍쳐, 학습된 가중치, 학습방법 등..
공격을 위한 로스 함수를 설정한 다음, 공격자는 비용(loss)값이 낮을 때 분류 결과가 바뀌도록 비용 함수를 설정해서 공격한다.
- 블랙박스
공격자가 뉴럴네트워크 내부 정보를 알지 못한다. ex) 입력값에 대한 네트워크의 최종 출력값만 안다.
공격자는 반복적으로 쿼리를 날리거나 유사한 네트워크를 만들어 공격할 수 있다.
*블랙박스가 훨씬 어렵다 - 역전파도 불가능하고 gradient 구하는 것도 어렵다. 그래서 쿼리를 많이 날려서 gradient를 예측하는 등의 방법이 필요한 것.
White-box Setting
네트워크 구조, 가중치 등 다 드러나있으므로, back-propagation 구하고, 이미지를 계속 업데이트하는 방식으로
공격을 위한 로스함수 줄이는 방식으로 동작.
이미지가 있을 때, 각 클래스에 대한 activation 값을 구하는 함수 Z(x)를 거쳐서, softmax 함수를 취해서 확률을 구한다.
특정 이미지가 특정 클래스로 분류되었을 때 loss값이 낮도록 만들어서 만들 수 있다.
Black-box Setting
backpropagation 불가, gradient도 모르므로 gradient를 예측하거나 등등..
soft-label : 어떤 클래스들에 몇 퍼센트의 확률로 분류되었는지 정도는 알려줌.
hard-label : 어떤 클래스인지만 알려줌. 모델을 모르니 역전파도 미분도 불가능하므로 아주 어렵다.
White-box attack
Softmax Function : 다중 클래스 분류 모델에서 일반적으로 마지막 레이어에 사용. 로짓 레이어 이후에 소프트맥스를 취한다.
소프트맥스를 사용할 때, 각 클래스에 대한 모델의 확률값을 모두 합하면 1이 된다.
로짓값이 가장 높은 값이 확률값도 크다는 걸 볼 수 있다.
소프트맥스 결과로 나오는 아웃풋에 로그를 취하고, 원-핫 벡터를 취해서 특정 클래스로 분류되도록 한다.
다만 크로스엔트로피를 사용할 때는, 어떠한 입력값이 들어왔을 때 , 네트워크의 가중치를 업데이트하는데.
adversarial에서는 가중치는 그대로 있고, 이미지를 업데이트한다는 것이 다르다.
즉, 경사 하강은 가중치 뿐만 아니라 입력 데이터에 대해서도 수행할 수 있다는 이야기!
만일 비용(손실)을 늘리는 방향으로 입력 데이터를 조금씩 업데이트한다면?
업데이트 이후에는 비용이 커지고, 다른 클래스로 분류되게 할 수 있다.
현재 '기울기'가 양수 -> 입력값을 양수 방향으로 이동시키자는 것!
FGSM : Fast Gradient Sign Method
고차원 공간에서의 선형적인 행동은 적대적 예제를 만들기에 충분하다.
굉장히 빠른 어택이다 : 왜냐하면 gradient를 한 번만 업데이트하기 때문이다.
입력에 대한 비용함수의 기울기(gradient)를 계산하고, 한 번 업데이트(single-step)를 수행한다.
각 입력 뉴런(픽셀)에 대해서 비용이 증가하는 방향으로 입실론만큼 업데이트한다.
Decision Boundary를 기준으로 1차원에서 생각해보자.
x가 있고, 비용이 감소하는 방향이 Decision Boundary와 멀어지는 쪽일 것이다.
그 방향과 반대로 이동하다보면 Decision Boundary 쪽으로 가게 되고, 어느 순간 그 boundary를 넘어서 다르게 분류될 것!
2차원에서는 이런 식으로 생각할 수 있다.
다만 FGSM에서는 단 한 번만 gradient를 계산해서 비용이 증가하는 방향으로 업데이트하므로, 우리가 의도한만큼 많이 낮추거나 높일 수는 없을 것이다.
그래서 나온 것이 더 강력한 공격인 PGD이다.
PGD(Projected Gradient Descent)
FGSM을 여러번 수행하는 것과 같다.
결과적으로 미리 정해놓은 입실론 범위 안에 들어오도록 한다.
모든 축에 대해서 입실론만큼 바뀔 수 있게 매 스텝마다 alpha만큼 이동한다.
여러번 수행하므로 더욱 강력한 adversarial example을 만들 수 있다.
P-Norm
norm 이란 특정한 벡터의 크기를 판단하는 기준으로 사용할 수 있다.
노이즈(perturbation)의 크기를 p-norm을 이용해서 제한할 수 있다.
다만, perturbation의 크기를 제한하는 건 infinity-norm 뿐만 아니라 l1, l2.. 다 가능하다.
L0 : 몇 개의 픽셀이 변경되었는지만 하는 것.
L-infinity : 모든 픽셀에 대해서, 가장 많이 바뀐 픽셀의 바뀐 정도를 의미함.
Black-box attack
기본적으로 Adversarial ex는 모델 사이에서 전송 가능한(transferable) 특징이 있다.
즉 모델 A에 대해서 adversarial하게 동작한다면 모델A와 비슷한 모델B에 대해서도 adversarial하게 동작하는 것.
이 특징을 이용한 공격 방법!
- 공격자가 개인적으로 공격대상 모델과 유사한 대체 모델(substitute model)을 학습한다.
- 대체 모델에 대해서 white box attack 수행해서 adversarial example을 생성한다.
이 adversarial example을 공격 대상인 black-box에 넣어서 최종적으로 공격을 수행한다.
이 Transfer-based attack이 가능한 이유는?
기본적으로 유사한 학습 데이터세트로 학습한 모델은 유사한 decision boundary를 가진다.
현실적인 공격 기법 - 추가적인 쿼리를 날려서 blackbox 모델과 유사한 모델을 만들어 공격.
다른 관점 - 기본적으로 adversarial perturbation도 일종의 일반화가 된 특정 피쳐로 이해할 수 있다. 특정 크기의 norm boundary 안에서 쉽게 변경된다면, 그것은 non-robust feature이면서 모델에게는 큰 영향을 미칠 수 있는 피쳐의 일종으로 볼 수 있다.
다양한 모델들이 유사한 non-robust feature를 학습하므로 transferability가 존재한다.
대표적인 방어 기법 - 여러 모델에 대한 앙상블을 고려해서 ensembel adversarial training을 수행한다.
robust feature만 보고 모델이 판단하도록 학습을 하게 진행하도록 하는 것이므로, non-robust feature에 대한 방어율은 올라가게 된다.
논문 리뷰
본 논문에서 제안한 메서드 : MI-FGSM(Momentum iterative Fast Gradeint Sign Method)
각 픽셀에 대해서 최대 입실론만큼 변경되도록 하되, 로스함수의 값을 최대화하도록 한다.
이 때, 기울기 정보는 처음부터 t개의 기울기 정보를 가지고 있다(Momentum)
즉 이전까지의 기울기 정보를 활용해서 poor local maxima에 빠지지 않도록 한다.
우측의 수식을 살펴보자.
T만큼 스텝을 만복할 때, 매번..
현재 adversarial example에 대해서 gradient를 구하고,
이렇게 gradient를 l1 distance로 정규화를 수행한다.
이전 단계에서 사용된 gradient에 뮤만큼의 팩터를 곱해서 기울기 정보로 사용한다 : Momentum 적용
본 논문에서는 뮤값을 1로 설정한다.
이제 이 adversatial ex를 sign gradient를 이용해서 업데이트 한다(FGSM)
PGD와 비슷하되 gradient를 구하는 과정에서 모멘텀을 적용한 것.
T번만큼 반복했을 때 최대 입실론만큼만 커지도록 했음에 유의하자.
Transferability를 높이기 위해서, 앙상블 모델에 대한 MI-FGSM을 수행한다.
Ensemble in logits 메서드를 제안했다 : 로짓 값의 가중치 합을 계산한 후에, softmax cross-entropy loss를 이용해서 전체 loss value를 계산한다.
즉 이전과 동일하게 non-targeted 공격을 위해서 목적함수를 가지는데,
로스에 들어가는 로짓값은 총 K개의 모델을 사용한다고 했을 때, 각 모델에 대한 로짓값의 가중치 합을 구한 후,
소프트맥스를 취하고 로그를 취해준다.
K개의 모델을 모두 속일 수 있는 하나의 adversarial example을 만든다.
T번만큼 반복할 때,
현재의 adversarial example은 각 분류모델에 넣어서 로짓값 모두 구하고,
로짓값의 가중치 합을 구하고, 소프트맥스 취하고 크로스엔트로피 로스를 구해서 그 로스를 증가시키는 방향으로 공격을 수행.
이어서 FGSM을 이용해 attack을 수행한다.
총 k개의 모델을 속일 수 있다면, 블랙박스 상황에서도 모델을 잘 공격할 수 있을 것이다.
ensemble adversarial training 모델에서는 공격 성공률이 아주 낮음을 볼 수 있다.
MI-FGSM decay factor 뮤 = 1로 설정하면 우수한 공격력을 보인다.
많은 수의 반복을 거쳐도 높은 공격 성공률을 보인다.
FGSM & I-FGSM & MI-FGSM
FGSM : 기본적인 FGSM은 under-fitting 되는 특징이 있다. 즉 white-box 상황에서는 약하다.
I-FGSM : 과하게 over-fitting된다. transfer-based attack에서는 좋은 성능을 내지 못한다. poor local maxima에 빠질 수 있다.
MI-FGSM : white-box, black-box 공격에서 모두 우수한 성능을 보인다.
동빈나님의 영상을 보면서 정리한 내용으로, 저작권은 원작자에게 있습니다.
'Data Science' 카테고리의 다른 글
[3초 해결] M2 JDK(Java Developer Kit) 설치 방법 (0) | 2023.07.22 |
---|---|
M2 맥북 개발 초기세팅(homebrew, item2, oh my zsh, python 등) (0) | 2023.07.22 |
curl output file 저장 (CIFAR10 get_dataset.sh 파일 실행 오류) (0) | 2023.06.06 |
[SQL] Redshift severless 시작하기 w.Google Colab Can't load plugin 오류해결 (1) | 2023.05.30 |
[SQL] 데이터 웨어하우스, ETL, 데이터 파이프라인 w. redshift 가격 (0) | 2023.05.29 |
댓글