인공 지능이 우리의 휴대폰, 컴퓨터, 자동차에 내장되면서 우리는 인공 지능의 의사 결정이 놀라울 정도로, 걱정스러울 정도로 취약할 수 있다는 것을 배우고 있습니다. 예를 들어, 컴퓨터 비전에서는 소수의 픽셀에 노이즈를 추가하여 입력을 조금씩 조정하면 확실한 예측을 뒤집을 수 있습니다. 그리고 더 나쁜 것은 이러한 시스템이 종종 블랙박스처럼 느껴진다는 것입니다. 입력이 들어오고 출력이 나오며 그 사이의 경로는 보기 어렵고 평가하기 어렵습니다. 주로 결정 프로세스가 수백만 개의 학습된 가중치 내에 묻혀 있기 때문입니다.
이것이 신경망의 견고성을 평가하는 것이 중요한 이유입니다. 사소하고 현실적인 변화로 인해 모델이 손상될 수 있다면 이를 알아야 합니다. 이를 테스트하는 실제적인 방법은 적대적 공격을 사용하는 것입니다. 모델이 잘못된 결정을 내리도록 의도적으로 교란된 입력입니다. "공격"은 무섭게 들리지만(그리고 그럴 수도 있음), 이는 또한 모델이 많은 표적 교란을 견딜 수 있다면 모델의 견고성에 대한 증거를 얻을 수 있는 강력한 진단 도구이기도 합니다. 반면에 모델이 실패하면 어디서, 어떻게 실패했는지 정확히 파악하고 모델을 더욱 강력하게 만들려고 노력합니다.

그림 1.작고 목표로 삼은 픽셀 변화는 이미지가 여전히 동일하게 보일 때에도 모델의 예측을 바꿀 수 있습니다.
놀라운 점은 이러한 변화가 인간의 눈에 얼마나 미묘하다는 것입니다. 교란된 숫자는 여전히 명확하게 읽히지만 모델의 내부 신뢰도는 결정 경계를 넘을 만큼 충분히 이동합니다. 인간의 인식과 모델 행동 사이의 이러한 격차가 바로 우리가 적대적 견고성 테스트를 통해 측정하고 줄이는 것을 목표로 하는 것입니다.
강건성 테스트가 왜 중요합니까?
직관에서 실제로 테스트할 수 있는 것으로 이동하려면 다음을 사용하세요.MNIST실시 사례로, 적대적 공격이 대답하려는 견고성 질문을 공식화해 보겠습니다.
진정한 라벨이 $y$인 깨끗한 이미지 $x$가 주어지면 근처에 $x'$ 이미지가 있습니까(적은 예산 $\varepsilon$ 내에서)이것은 모델이 $\haty\neq y$?라는 라벨을 선호하게 만듭니다.
선택한 표준 $\lVert\cdot\rVert$에 대해 $x$로부터의 거리가 예산 내에서 유지되는 경우 $x'$ "nearby"를 호출합니다. $$ \l수직 x' - x \r수직 \le \varepsilon $$ 이미지의 경우 일반적인 선택은 $\ell_\infty$ 또는 $\ell_2$ 표준입니다(예: $\lVert x' - x \rVert_\infty \le \varepsilon$ 또는 $\lVert x' - x \rVert_2 \le \varepsilon$). 만일아니요그러한 $x'$가 존재하면 모델은 선택한 예산에서 해당 입력에 강력합니다. 있다면그렇습니다존재합니다. 약점을 발견했습니다.
이 접근 방식은 다음을 목표로 하기 때문에 가치가 있습니다.최악의 경우. 무작위 노이즈는 결정 경계를 거의 넘지 않습니다. 적대적인 소음은 그렇게 하기 위해 정확하게 만들어졌습니다. 그것도모델 인식: 화이트박스 액세스를 통해 그라디언트 또는 아키텍처 세부정보를 사용하여 효율적으로 검색할 수 있습니다. 블랙박스 액세스를 사용하면 쿼리를 통해 계속 조사할 수 있습니다.
우리는 무엇을할 수 없습니다손으로 섭동을 시도하는 것입니다. $28\times 28$ MNIST 이미지에도 $784$ 픽셀이 있습니다. 각각에 몇 가지 작은 조정만 허용하면 우리가 열거할 수 있는 것 이상으로 가능성이 폭발합니다. 우리는 그 공간을 횡단하여 허용된 가장 해로운 변화를 찾아낼 수 있는 원칙적인 방법이 필요합니다.
거기가 바로 그곳입니다최적화들어옵니다. 다음 섹션에서는 위의 질문을 간단한 수학 프로그램으로 바꾸고 방법을 보여 드리겠습니다.GAMSPy작은 MNIST 분류기와 모델을 올바른 라벨에서 얼마나 쉽게 밀어낼 수 있는지 직접 측정하는 목표로 시작하여 구현과 해결이 간단해졌습니다.
직관에서 GAMSPy를 통한 최적화 모델까지
무차별 대입 "작은 픽셀 넛지"는 시작이 아닙니다. 단일 28×28 이미지는 이미 784차원 공간에 존재합니다. 대신 우리는 공격을 최적화 문제로 공식화하고 솔버가 해당 공간을 지능적으로 검색하도록 합니다.
아이디어는 간단합니다:
- 정확하게 분류된 이미지 $x$에서 시작합니다.
- $\lVert n \rVert_\infty \le \epsilon$을 사용하여 제한된 섭동 $n$(우리의 결정 변수)을 추가합니다.
- 교란되고 정규화된 이미지를 고정 네트워크를 통해 전달합니다.
- 올바른 클래스의 점수와 잘못된 클래스를 선택한 점수 사이의 마진을 최소화하세요:
$$ \min\ y_오른쪽 - y_잘못. $$
최적값이 음수이면 우리는 반대의 예를 발견했습니다(잘못된 클래스가 올바른 클래스를 이긴다). 긍정적인 경우 해당 이미지와 예산에 대해 모델이 견고해 보입니다.
GAMSPy를 사용하면 이는 매우 직접적입니다. 다음은 이 게시물에 사용한 실험 스크립트의 필수 부분입니다.
m=gp.컨테이너()네트워크=build_network(hidden_layers, Hidden_layer_neurons)단일_이미지, 단일_대상=get_image(네트워크)
# 1) 매개변수 및 결정 변수
이미지_데이터=단일_이미지.numpy().재형성(784)
이미지=gp.매개변수(m, 이름="이미지", 도메인=어두움(이미지_데이터.모양), 기록=이미지_데이터)
소음=gp.변수(m, 이름="소음", 도메인=어두움([784]))a1=gp.변수(m, 이름="a1", 도메인=어두움([784]))
# 2) 경계: 픽셀 공간의 공격 예산 및 정규화 후 유효한 상자
MNIST_NOISE_BOUND= 0.1 # 이것은 ε입니다. 높을수록 이미지에 노이즈가 더 커질 수 있습니다.
평균, 성병= (0.1307,), (0.3081,)
소음.로[...]= -MNIST_NOISE_BOUND소음.위[...]=MNIST_NOISE_BOUNDa1.로[...]= -평균[0]/성병[0]a1.위[...]= (1 -평균[0])/성병[0]
# 정규화된 입력을 (이미지 + 노이즈)에 연결
set_a1=gp.수식(m,"set_a1", 도메인=어두움(a1.모양))set_a1[...]=a1==(이미지+소음-평균[0])/성병[0]
# 3) 훈련된 PyTorch 네트워크를 방정식으로 삽입
seq_formulation=gp.공식.TorchSequential(m, 네트워크)y, _=seq_formulation(a1)# y는 로그/출력입니다
# 4) 잘못된 대상 라벨 선택 = 혼란 전 준우승
output_np=네트워크(single_image.압착 해제(0)).분리().numpy()[0][0]right_label=np.argsort(output_np)[-1]잘못된_라벨=np.argsort(output_np)[-2]
# 5) 목표: 오른쪽 여백과 잘못된 여백을 최소화
obj=gp.변수(m, 이름="z")
여백=gp.수식(m,"여백")
여백[...]=obj[...]==y[f"{right_label}"]-y[f"{잘못된_라벨}"]
# 6) 슬롯 사이트 추천로 해결
모델=gp.모델(m, "최소 소음",
방정식=m.getEquations(),목적=obj,감각="분",
문제="슬롯 사이트 추천",
)
모델.해결(옵션)=gp.옵션.fromGams("리슬림":4000}))이를 실용적으로 만드는 몇 가지 참고사항:
-
대수학으로서의 네트워크: 토치순차훈련된 PyTorch 모델을 GAMSPy 변수 및 방정식으로 리프트하므로 솔버는 다른 최적화 모델과 똑같이 네트워크를 통해 추론할 수 있습니다.
-
준우승 목표:설정했습니다잘못된_라벨노이즈를 추가하기 전에 두 번째로 높은 신뢰도입니다. 이는 종종 최소한의 교란으로 강력하고 표적화된 공격을 만들어냅니다. 따라서 이에 대해 강력하다는 것은 좋은 징조입니다.
-
해석:해결 후 목표 값의 두 가지 결과 중 하나를 확인하십시오: (i)부정⇒ 공격이 성공했습니다(이 예산으로는 이 이미지에 강력하지 않음). (ii)긍정적⇒ 모델이 이 시도에 저항했습니다.
-
도우미 기능:전체 코드(끝 부분에 링크됨)에는 네트워크 구축, 데이터 로드 및 여러 실험을 체계적으로 실행하는 유틸리티가 포함되어 있습니다.
신경망 삽입 및 이러한 제약 조건 작성에 대한 더 느린 단계별 연습을 원한다면,GAMSPy 문서실습 튜토리얼이 있습니다.
슬롯 사이트 추천로서의 ReLU: 정확하지만 조합적임
ReLU는 코드가 놀라울 정도로 간단합니다.
$$\mathrmReLU(s) = \max(0, s).$$
그러나 "최대"는 조각별 선형이므로 선형 최적화 모델에서 정확하게 표현하기 위해 우리는 일반적으로 꼬임의 어느 쪽에 있는지(활성 또는 비활성)를 알려주는 이진 변수 $z$를 도입합니다. 표준 공식은 다음과 같습니다(사전 활성화 $s$ 및 출력 $y$가 있는 뉴런의 경우).
\begin정렬
여기서 $L$ 및 $U$는 $s$(유명한 "big-M" 상수)의 유효한 하한/상한입니다. 이는 가장 정확한 견고성 검증자가 사용하는 공식이며 GAMSPy와 함께 PyTorch 모델을 삽입하고 문제 유형을 다음과 같이 선언할 때 기본적으로 얻는 공식이기도 합니다.슬롯 사이트 추천, 정확히 이전 섹션의 코드에서 수행한 작업입니다.
모델=gp.모델(m, "최소 소음",
방정식=m.getEquations(),목적=obj,감각="분",
문제="슬롯 사이트 추천", # ReLU -> 바이너리
)
모델.해결(해결사="복합체")
그러나 이 슬롯 사이트 추천 공식에는 몇 가지 잘 알려진 문제가 있습니다.
-
ReLU당 하나의 바이너리: 네트워크에 각각 $H$ ReLU 뉴런이 포함된 $L$ 숨겨진 레이어가 있는 경우 활성화에 대해서만 대략 $L \times H$ 바이너리(및 $\sim 4$ 선형 제약 조건)가 이미 있는 것입니다. $3 \times 512$ 숨겨진 단위가 있는 적당한 슬롯 사이트 추천는 다른 것을 모델링하기 전에 $\sim 1,536$ 바이너리를 의미합니다.
-
분기 결합 조합: 슬롯 사이트 추천 솔버는 이러한 바이너리에서 분기되는 트리를 탐색합니다. 최악의 경우에는 기하급수적으로 증가합니다. 좋은 해결사는 공격적으로 정리하지만 개수가 늘어나면 검색도 늘어납니다.
간단히 말하면:기존 슬롯 사이트 추천 인코딩은 정확하고 감사가 가능하지만 조합 검색으로 비용을 지불합니다. 교육적인 모델의 경우(우리가 사용하는 작은 MNIST 슬롯 사이트 추천와 같습니다)잘 작동합니다; 더 크거나 더 깊은 네트워크의 경우 해결 시간이 급증할 수 있습니다.
이것이 바로 우리가 대안을 찾은 이유입니다. 다음 섹션에서는 이러한 바이너리를 보완 조건으로 교체하여 문제를 실제로 훨씬 빠르게 해결하는 원활한 NLP로 전환합니다. 즉, 슬롯 사이트 추천에 대한 전역 최적성 보장을 거래합니다.
상보성을 통한 ReLU: 슬롯 사이트 추천 대안
바이너리가 슬롯 사이트 추천가 무거워지는 이유라면 분명한 질문은 다음과 같습니다:바이너리 변수를 도입하지 않고 ReLU를 모델링할 수 있습니까?예, 활성화의 상보성 관점으로 전환하고 결과 모델을 비선형 프로그램(슬롯 사이트 추천)으로 해결하면 됩니다.
상보성으로서의 ReLU
사전 활성화 $t$ 및 출력 $y = \max(0, t)$가 있는 뉴런의 경우 다음과 같이 작성할 수 있습니다.
\begin정렬
$y$와 $y - t$ 중 정확히 하나가 솔루션에서 양수인 경우 이진 변수 없이 "on/off" 논리를 캡처합니다. 이는 검증 문제를 MIP에서 MPCC(상보성 제약 조건이 있는 수학 프로그램)로 전환하며, 슬롯 사이트 추천 솔버를 사용하여 효율적으로 해결할 수 있습니다.
코드의 작은 변화
GAMSPy에서 스왑은 문자 그대로 두 줄입니다. 우리는토치순차인코딩할 래퍼ReLU상보성 공식을 사용하여 모델 유형을 변경합니다(슬롯 사이트 추천) 및 솔버(CONOPT):
def convert_relu(m:gp.컨테이너, 레이어: 토치.nn.ReLU): 반환gp.수학.relu_with_complementarity_var
# 모든 ReLU에 사용하도록 TorchSequential에 지시
변경={"ReLU": 변환_reluseq_formulation=gp.공식.TorchSequential(m, 네트워크, 변경)y, _=seq_formulation(a1)
# 이전과 동일한 목표: 오른쪽과 반대쪽 여백을 최소화
obj=gp.변수(m, 이름="z")
여백=gp.수식(m,"여백")
여백[...]=obj[...]==y[f"{right_label}"]-y[f"{잘못된_라벨}"]
# 슬롯 사이트 추천를 구축하고 CONOPT로 해결
모델=gp.모델(m, "최소 소음",
방정식=m.getEquations(),목적=obj,감각="분",
문제="슬롯 사이트 추천",
)
모델.해결(해결자="conopt")
그 밖의 모든 것, 섭동 예산, 정규화, 준우승 목표 라벨 및 목표 해석은 에서와 동일하게 유지됩니다.슬롯 사이트 추천코드.
상보성 인코딩은 GAMSPy의 편리함에 내장되어 있습니다.
gp.math.relu_with_complementarity_var()함수이므로 수동으로 방정식을 작성할 필요가 없습니다. 추가적으로,CONOPT다음을 통해 원활하게 연결됩니다.solver="conopt"이러한 슬롯 사이트 추천를 위한 강력한 선택이며 GAMSPy Academic 사용자에게 무료로 제공됩니다.
이것이 어떻게 도움이 됩니까? 그러면 우리는 무엇을 포기합니까?
-
슬롯 사이트 추천:수천개의 바이너리를 제거하면 분기 및 경계 트리가 부드러운(볼록하지는 않지만) 검색으로 축소됩니다. 실제로 MNIST 규모의 MIP 및 소규모 CNN에서의 실행은 슬롯 사이트 추천 경로를 사용하면 훨씬 빠릅니다. 다음 섹션에서 숫자를 보여드리겠습니다.
-
절충점:공짜 점심은 없습니다! CONOPT와 같은 NLP 솔버는 전역 최적성을 보장하지 않습니다. 음수(성공적인 공격)가 존재하더라도 양수 마진을 사용하여 로컬 최소값에 도달할 수 있습니다. 이것이 우리가 슬롯 사이트 추천에 대해 지불하는 대가입니다.
여기서 전략이 중요합니다. 슬롯 사이트 추천가 부정적인 목표를 반환하면 유효한 적대적 예인 기간을 찾은 것입니다. 반면에 긍정적인 목표를 반환하는 경우 모델이 견고하다고 확신할 수 없습니다. 우리는 방금 지역 최소값에 도달했을 수도 있습니다. 자신감을 높이기 위해 슬롯 사이트 추천 모델의 여러 시작점을 시도해 볼 수 있습니다(섹션에서 볼 수 있음)전략으로서의 슬롯 사이트 추천).
실제 절충: 정확성 대 슬롯 사이트 추천
이제 재미있는 부분입니다! 여기에서는 MNIST 분류기 제품군에서 두 가지 공식을 직접 비교하여 해결 시간, 견고성 판정에 대한 합의 및 거짓 긍정을 측정합니다.(슬롯 사이트 추천가 "강력함"이라고 말하지만 MIP가 공격을 발견한 경우). 모델의 범위는 각각 10~60개의 뉴런이 있는 1~5개의 히든 레이어로 구성되어 있으며 $\ell_\infty$ 노이즈 예산이 $0.1$인 준우승 표적 공격을 사용하여 두 실행에서 동일한 이미지, 라벨 및 경계를 유지합니다.
두 가지 구성은 다음과 같습니다:
- 슬롯 사이트 추천:바이너리를 포함한 ReLU 및
문제="슬롯 사이트 추천". - 슬롯 사이트 추천:상보성을 통한 ReLU 및
문제="슬롯 사이트 추천"CONOPT로 해결되었습니다. - 둘 다 사용됨
레스림 = 4000초; 슬롯 사이트 추천가 해당 제한에 도달하면 지금까지 찾은 최상의 경계를 반환합니다.
아래에는 귀하가 가장 관심을 가질 세 가지 사항이 요약되어 있습니다: 슬롯 사이트 추천, 견고성 평결에 대한 합의(여백 표시)및 거짓양성(슬롯 사이트 추천가 "강력"하다고 말하지만 MIP가 공격을 발견한 경우).
슬롯 사이트 추천
30개 아키텍처 쌍 전체:
- 중앙 해결 시간:12.12초슬롯 사이트 추천 대0.227초슬롯 사이트 추천의 경우.
- 평균 해결 시간:1004.042s슬롯 사이트 추천 대0.413초슬롯 사이트 추천용.
- 슬롯 사이트 추천는 $1/30$ 배만 느렸습니다(가장 작은 네트워크에서는 작은 $0.13\texts$ 대 $0.16\texts$).
- MIP 시간 초과: $7/30$ 실행이 $4000\texts$ 제한(깊이 $3$–$5$)에 도달하는 반면 모든 슬롯 사이트 추천 실행은 $1.63\texts$ 미만으로 완료되었습니다.
아래 그림은 두 방법의 해결 시간을 시각화합니다. 각 주황색-파란색 쌍은 하나의 아키텍처(숨겨진 레이어 × 레이어당 뉴런)에 해당합니다. 로그 스케일 축에서 각 쌍 사이의 수직 간격은 인스턴스별 슬롯 사이트 추천 향상입니다. 오른쪽으로 이동하면 네트워크가 더 넓어지고 깊어지며 그 간격은 극적으로 넓어집니다. 작은 모델이 가까이 있는 경우에도 NLP 트랙이 하단 축 근처에 클러스터된 상태를 유지하는 동안 MIP는 수십 배로 증가합니다.

그림 2.아키텍처당 MIP와 슬롯 사이트 추천 해결 시간.
참고: 슬롯 사이트 추천 모델은 추가 이진 변수로 인해 평균적으로 더 큽니다.
평결 합의
우리는 최적의 목표의 신호를 비교합니다(음수 $\Rightarrow$ 공격 발견; 이 예산에서 양수 $\Rightarrow$ "견고함"):
- 정확한 여백 균등: $12/30$ 쌍은 $5^\textth$ 소수점 자리와 정확히 일치합니다.
- 합의: $26/30$ 쌍이 마진 표시에 동의했습니다(둘 다 공격을 발견했거나 둘 다 "강력"하다고 말했습니다).
- 의견 불일치: $4/30$; 이 중 3개에서는 MIP가 최적성을 입증하지 못한 채 시간 제한에 도달하여 양수 경계를 반환한 반면 슬롯 사이트 추천는 음수 마진을 발견했습니다.(공격 성공). 마지막 불일치에서 MIP는 음수 마진을 반환한 반면 슬롯 사이트 추천는 양수 마진을 반환했습니다.(거짓양성).
오탐지
우리는 $4$ 레이어와 레이어당 $40$ 뉴런이 있는 아키텍처에서 $1/30$ 거짓 긍정을 관찰했습니다. 여기서 MIP는 $-1.96$의 마진으로 공격을 발견했지만 슬롯 사이트 추천는 $+5.49$의 긍정적인 마진을 반환했습니다. 이는 절충점을 강조합니다. 슬롯 사이트 추천는 빠르지만(이 특정 실행은 MIP 4000초가 소요되어 시간 제한에 도달한 반면 슬롯 사이트 추천는 0.342초 동안 실행되었습니다.), MIP가 발견한 공격을 놓칠 수 있습니다. 이를 완화하기 위해 여러 시작점에서 슬롯 사이트 추천를 실행하거나 다음 논의할 확인을 위해 MIP를 적용하기 전에 이를 빠른 필터로 사용할 수 있습니다.
요약 테이블
아래는 이 실험을 위해 테스트된 모든 아키텍처 쌍에 대한 자세한 결과 표입니다. 게시물의 앞부분에서 언급했듯이 연구의 목적 기능은 고정된 MNIST 이미지에서 $\ell_\infty$ 섭동 예산 $0.1$ 하에서 올바른 레이블과 준우승 레이블 사이의 마진을 최소화하는 것입니다. 따라서 음수 목표 값은 성공적인 적대적 공격을 나타내고 양수 값은 이 예산의 견고성을 나타냅니다. 여기서 연구하려는 것은 각각의 해결 시간과 함께 객관적인 가치와 견고성 판정 측면에서 MIP와 슬롯 사이트 추천 공식 간의 일치입니다. 게다가,"거짓 견고성"열은 슬롯 사이트 추천 공식이 견고성(양수 마진)을 잘못 나타내는 반면 MIP 공식은 적대적 공격(음수 마진)을 찾는 사례를 표시합니다. 슬롯 사이트 추천가 MIP보다 더 강력한 공격(더 많은 음수 마진)을 찾는 경우가 있지만 이러한 경우는 본질적으로 MIP가 시간 제한에 도달하고 차선의 양수 경계를 반환하는 경우입니다(충분한 시간이 주어지면 MIP 솔버가 전역 최적성을 보장하므로).
| 숨겨진 레이어 | 뉴런/레이어 | 슬롯 사이트 추천목표 값 | 슬롯 사이트 추천해결 시간(초) | 슬롯 사이트 추천변수 개수 | 슬롯 사이트 추천목표 값 | 슬롯 사이트 추천해결 시간(초) | 슬롯 사이트 추천변수 개수 | 거짓 견고성 |
|---|---|---|---|---|---|---|---|---|
| 1 | 10 | 3.88899 | 0.130 | 1609 | 5.092 | 0.160 | 1599 | |
| 1 | 20 | 0.49645 | 0.190 | 1639 | 1.04024 | 0.081 | 1619 | |
| 1 | 30 | -0.64841 | 0.160 | 1669 | -0.64841 | 0.099 | 1639 | |
| 1 | 40 | -0.32195 | 0.247 | 1699 | -0.31491 | 0.138 | 1659 | |
| 1 | 50 | -1.35391 | 0.429 | 1729 | -1.16102 | 0.142 | 1679 | |
| 1 | 60 | -1.76911 | 0.455 | 1759 | -1.76911 | 0.170 | 1699 | |
| 2 | 10 | -3.14897 | 0.143 | 1639 | -3.04977 | 0.068 | 1619 | |
| 2 | 20 | 1.95283 | 0.196 | 1699 | 1.95283 | 0.193 | 1659 | |
| 2 | 30 | -1.22023 | 1.319 | 1759 | -1.22023 | 0.168 | 1699 | |
| 2 | 40 | -6.33439 | 1.881 | 1819 | -6.33439 | 0.173 | 1739 | |
| 2 | 50 | -3.47329 | 14.177 | 1879 | -3.47192 | 0.310 | 1779 | |
| 2 | 60 | -6.79947 | 60.539 | 1939 | -6.77727 | 0.311 | 1819 | |
| 3 | 10 | -3.04560 | 0.154 | 1669 | -3.04560 | 0.083 | 1639 | |
| 3 | 20 | -2.28455 | 4.013 | 1759 | -2.28455 | 0.152 | 1699 | |
| 3 | 30 | -0.51342 | 10.063 | 1849 | -0.39979 | 0.221 | 1759 | |
| 3 | 40 | -2.26477 | 123.597 | 1939 | -2.23418 | 0.269 | 1819 | |
| 3 | 50 | -0.81301 | 484.237 | 2029 | -0.80001 | 0.628 | 1879 | |
| 3 | 60 | -6.67975 | 4000.461 | 2119 | -6.63047 | 0.920 | 1939 | |
| 4 | 10 | -9.20940 | 0.295 | 1699 | -9.20940 | 0.194 | 1659 | |
| 4 | 20 | -5.61790 | 96.590 | 1819 | -5.39378 | 0.517 | 1739 | |
| 4 | 30 | -6.18924 | 781.783 | 1939 | -6.18924 | 0.488 | 1819 | |
| 4 | 40 | -1.96277 | 4000.354 | 2059 | 5.48993 | 0.342 | 1899 | 예 |
| 4 | 50 | -7.70052 | 4000.710 | 2179 | -7.70052 | 0.739 | 2019 | |
| 4 | 60 | 7.55647 | 4000.487 | 2299 | -1.81861 | 1.230 | 2059 | |
| 5 | 10 | -5.78419 | 1.038 | 1729 | -5.78419 | 0.190 | 1679 | |
| 5 | 20 | -13.40505 | 15.089 | 1879 | -13.36193 | 0.232 | 1779 | |
| 5 | 30 | -4.55439 | 520.764 | 2029 | -4.55439 | 0.451 | 1879 | |
| 5 | 40 | -1.39833 | 4000.662 | 2179 | -4.98835 | 1.177 | 1979 | |
| 5 | 50 | 14.42331 | 4000.413 | 2329 | -1.78056 | 0.916 | 2079 | |
| 5 | 60 | 5.55635 | 4000.689 | 2479 | -3.79127 | 1.632 | 2179 |
전략으로서의 슬롯 사이트 추천
이전 섹션의 핵심은 NLP 공식이 MIP 공식보다 훨씬 빠르며 종종 수십 배나 빠르다는 것입니다. 이 슬롯 사이트 추천는 수십, 수백, 심지어 수천 번 실행할 수 있으므로 견고성 판정에 대한 신뢰를 높이는 새로운 전략을 열어줍니다. 이러한 슬롯 사이트 추천를 통해 우리는 크고 실용적인 질문에 접근할 수 있습니다.슬롯 사이트 추천가 전역적 최적성을 보장하지 않는다면 양의 마진이 단순한 지역 최소값이 아니라는 확신을 어떻게 높일 수 있습니까?
한 가지 전략은 동일한 슬롯 사이트 추천 모델을 반복적으로 실행하는 것입니다.다른 초기 솔루션. 어떤 실행에서 부정적인 목표가 발견되면 우리는 적대적인 예를 발견했으며 해당 이미지와 예산에 대해 네트워크가 강력하지 않다고 확실하게 선언할 수 있습니다. 모든 실행이 긍정적인 목표를 반환하는 경우 이를 보고할 수 있습니다.N개의 다양한 시작 이후 공격이 발견되지 않음, 이는 단일 시작보다 훨씬 더 강력한 설명입니다.
여러 슬롯 사이트 추천 실행을 초기화하는 방법은 무엇입니까?
전체 모델은 섭동 벡터에 의해 구동됩니다.소음. 그 밖의 모든 것(정규화된 입력 a1, 레이어 출력, 로짓 y 및 목표)제약조건을 통해 노이즈에 따라 다름:
set_a1[...]=a1==(이미지+소음-평균[0])/성병[0]그래서 소음에 대한 초기 수준을 설정하는 것으로 충분합니다. GAMSPy는 이를 변수의 값으로 노출합니다.레벨값:
noise_init= <몇 가지 형편없는 모양 배열(784,)>
noise_vals=gp.매개변수(m, 이름="noise_vals", 도메인=소음.도메인, 레코드=noise_init)소음.l[...]=noise_vals[...]# <-- 초기 솔루션
Sobol로 다양한 시작 생성
설정noise_init다른 값은 NLP 솔버에 대한 다른 시작점을 제공합니다. 그리고 슬롯 사이트 추천 이점을 현명하게 활용하기 위해 허용된 섭동 상자 $[-\epsilon, \epsilon]^784$ 내에서 이러한 시작점이 최대한 다양해지기를 원합니다. 이러한 방식으로 검색 공간의 다양한 영역을 탐색하고 공격을 놓칠 가능성을 줄입니다. 공간을 균등하게 채우도록 설계된 불일치가 낮은 시퀀스를 사용하여 이를 달성할 수 있습니다. 탁월한 선택은 다음과 같습니다.소볼 시퀀스다음에서 구현됩니다.scipy.stats.qmc:
에서 scipy.stats 가져오기qmc
샘플러=qmc.소볼(d=784)
샘플=샘플러.random_base2(m=10) # 2^10 = 1024 시작
확장=qmc.규모(샘플,l_bounds=[-MNIST_NOISE_BOUND]*784,
u_bounds=[ MNIST_NOISE_BOUND]*784,
)
for샘플in조정됨:build_ad_attack_model(hidden_layers, 뉴런, 슬롯 사이트 추천=거짓,noise_init=샘플)공격 발견 시 조기 중지
음수 여백은 견고하지 않음을 증명하므로, 하나에 도달하자마자 루프를 중지할 수 있습니다. 우리는 이를 약간 수정하여 이를 달성할 수 있습니다.build_ad_attack_model(...)선택사항을 허용하는 코드의 함수noise_init인수를 계산하고 해결 후 목표 값을 반환합니다. 그런 다음 위 루프에서 반환된 여백을 확인하고 음수이면 중단됩니다.
for샘플in확장:마진_값=build_ad_attack_model(hidden_layers, 뉴런, 슬롯 사이트 추천=거짓,noise_init=샘플) if마진_값< 0: 인쇄("적대적인 예가 발견되었습니다!")
휴식
"거짓양성"에 대한 재검토. 다중 시작 슬롯 사이트 추천로 문제를 해결할 수 있나요?
이전 섹션($4\times 40$ 네트워크)의 유일한 거짓 긍정을 기억하십니까? 여기서 슬롯 사이트 추천는 잘못된 $+5.48993$ 마진을 반환했지만 MIP 실행에서는 $-1.96277$을 발견했습니다. 지금이 우리의 멀티스타트 전략이 진실이 되는 순간입니다. 위에서 설명한 대로 Sobol 다중 시작 및 조기 중지를 사용하여 슬롯 사이트 추천를 다시 실행하여 그 효과를 입증할 수 있습니다. MIP에서 발견된 공격이 재발견되면 루프가 중지됩니다. 이는 행운과 로컬 최소값 분포에 따라 몇 번 또는 여러 번의 실행이 필요할 수 있습니다. 그러나 일어난 일은 다음과 같습니다.
- 실행 #2는 이미 실제 공격에 대해 마이너스 마진을 발생시켰습니다.(그래서 이전의 "강력한" 평결은 단지 지역적 최소값이었습니다).
- 실행 #5는 MIP 값 $-1.96277$(엄격한 허용 범위 내에서)과 일치하여 슬롯 사이트 추천가 잘 시작되면 동일한 최소값에 도달할 수 있음을 보여줍니다.
테이크아웃:초기화를 다양화하자마자 "오탐지"가 사라졌습니다. MIP가 공격을 찾는 데 1시간 이상 걸린 반면, 다중 시작을 사용하는 슬롯 사이트 추천는 5초 이내에 공격을 발견했습니다. 여전히 슬롯 사이트 추천에서 글로벌 보증을 받을 수는 없지만 저렴한 시작 다양성으로 오해의 소지가 있는 로컬 최소값이 발생할 가능성을 극적으로 줄이면서 전체 MIP 검색에 비해 런타임을 작게 유지합니다.
참고:마지막에 공유된 코드에는 여러분이 시험해 볼 수 있는 정확한 NN과 함께 이 다중 시작 전략이 포함되어 있습니다.
언제 슬롯 사이트 추천로 에스컬레이션해야 합니까?
슬롯 사이트 추천 + Sobol 다중 시작 접근 방식은 강력한 검사 도구이지만 확인을 위해 정확한 MIP 공식으로 에스컬레이션하려는 시나리오가 있습니다. 다음과 같습니다.
-
반복된 슬롯 사이트 추천 실행이 작은 양수 마진(예: $0 < \textmargin < 1$)만 반환하거나 결정이 위험한 경우(인증서가 필요함) 정확히 동일한 모델을 MIP로 전환하고 증명하도록 하십시오.(또는 반증)견고함.
-
슬롯 사이트 추천가 신속하게(1분 미만) 해결될 만큼 모델이 작다면 확실한 답을 얻기 위해 모델을 직접 실행하는 것이 좋습니다.
그렇지 않으면 대규모 스크리닝의 경우 슬롯 사이트 추천 + Sobol 멀티 스타트가 가장 적합합니다. 빠르고 자동화가 간단하며 이 실험 결과에 따르면 일반적으로 전 세계적으로 해결된 MIP의 평결과 일치합니다.
시도할 수 있는 기타 바이너리 없는 ReLU 공식
검증을 위해 ReLU를 인코딩하는 모든 방법에 딱 맞는 방법은 없습니다. 너머슬롯 사이트 추천(big-M + 바이너리) 및슬롯 사이트 추천당신이 본 상보성 트랙,GAMSPy노출MPEC에서 처리하는 평형/상보성 조건을 사용하여 바이너리 없이 ReLU의 논리를 정확하게 유지하는 경로NLPEC해결사(GAMSPy 학술 사용자에게도 무료로 제공됨).
라이센스 알림: 일부 사용자는 다음과 같은 문제가 발생할 수 있습니다.라이센스 문제사용 시NLPEC해결사. 이런 일이 발생하면,당신은 교육용 라이센스를 가지고 있습니다, 다음을 통해 문의해 주세요.support@gams.com 접근 문제를 해결하는 데 도움을 드릴 수 있습니다.
수학적 관점
$x$를 사전 활성화로 설정하고 $y = \max(0, x)$를 ReLU 출력으로 설정합니다. 여유분 정의
$$ s := y - x. $$
그러면 ReLU는 다음과 동일합니다선형관계와 단일 상보성 쌍:
$$ y \ge 0 ; \쿼드 s \ge 0 ; \quad s = y - x; \qquad \그러므로 \quad y \perp s \quad \text즉, y\cdot s = 0 $$
이 공식은 다음과 같은 이유로 ReLU를 정확하게 표현합니다.
-
만약 $(x\le 0):$$(y\ge x)$ 및 $(y\ge0)$는 $(y=0)$를 강제로 적용한 다음 $(s=-x\ge0)$.
-
만약 $(x\ge 0):$$(y=x\ge0)$ 따라서 $(s=0)$.
따라서 $(\displaystyle y=\max(0,x))$.
기하학적으로 ReLU 그래프는 $(x, y)$에 있는 두 개의 다면체 원뿔의 합집합입니다: $K_1 = x \le 0, y = 0 $ 및 $K_2 = x \ge 0, y = x $.
- 슬롯 사이트 추천이진법 $z \in 0, 1$ 및 big-M 부등식을 통해 이 분리를 적용하여 $K_1$ 또는 $K_2$를 선택합니다.
- MPEC바이너리 없이 상호 배타성을 적용합니다: $y \ge 0$, $s \ge 0$ 및 $y \perp s$ $y, s$ 중 최대 하나가 양수인지 확인하여 정확히 하나의 원뿔을 선택합니다. 큰 M도 없고 분기 및 바인딩된 트리도 없습니다.
최적화 측면에서 각 ReLU는 작은 LPCC(상보성 제약이 있는 선형 프로그램)입니다.그들을 쌓으면 슬롯 사이트 추천가 아닌 MPCC/MPEC인 네트워크가 생성됩니다.
GAMSPy에서 평형 기반 ReLU 사용
GAMSPy는 기성 생성기를 제공합니다.
- 기능:
gp.math.activation.relu_with_equilibrium - 모델 유형:
문제="MPEC" - 해결사:
solver="nlpec"
이전 코드의 ReLU 공식을 대체하는 드롭인 연결은 다음과 같습니다:
# 1) ReLU 레이어를 평형 기반 MPEC 인코딩으로 교체
def convert_relu_equilibrium(m:gp.컨테이너, 레이어: 토치.nn.ReLU): 반환gp.수학.활성화.relu_with_equilibrium
변경={"ReLU": Convert_relu_equilibriumseq_formulation=gp.공식.TorchSequential(m, 네트워크, 변경)y, 일치, _=seq_formulation(a1)
# 2) 목표: 이전과 동일한 오른쪽 대 잘못된 여백
obj=gp.변수(m, 이름="z")
여백=gp.수식(m,"여백")
여백[...]=obj[...]==y[f"{right_label}"]-y[f"{잘못된_라벨}"]
# 3) MPEC를 구축하고 NLPEC로 해결
모델=gp.모델(m, "최소 소음",
방정식=m.getEquations(),목적=obj,감각="분",
문제="MPEC", # <-- 바이너리 없는 MPCC/MPEC
일치=일치,# <-- 상보성 쌍
)
모델.해결(해결사="nlpec") # <-- NLPEC가 평형 평활화를 처리합니다.
실용적인 팁
- MNIST 정규화에서 했던 것처럼 입력/활성화를 적절한 규모로 유지하세요.
- 강건성 검사를 위해 NLPEC를 다음과 결합다중 시작초기화
소음벡터를 클릭하고 첫 번째 음수 여백에서 중지합니다. - NLPEC의 최종 정상성/타당성 및 달성된 감사 가능성 마진을 기록합니다.
더 많은 MPEC 변형을 원하십니까?
NLPEC는 여러 평형/상보성 공식(예: Fischer-Burmeister 가족 및 친척)을 지원합니다. 일부 네트워크/예산은 한 변형을 다른 변형보다 선호합니다. 위 코드의 ReLU 생성기 함수를 직접 구축할 수 있는 대안 중 하나로 교체하여 다양한 공식을 실험하고 벤치마킹할 수 있습니다. 사용 가능한 상보성 함수의 전체 목록은 다음에서 확인할 수 있습니다.GAMS NLPEC 문서 .
요점 및 다음 단계
그 과정에서 우리는 고전적인 슬롯 사이트 추천 경로를 보았습니다.(정확하고 인증 가능하지만 네트워크가 성장함에 따라 느리고 해결 불가능)그리고 아주 짧은 시간 안에 대부분의 경우에 대해 동일한 판결을 내리는 상보성 기반 NLP 대안입니다. 이 슬롯 사이트 추천는 Sobol 시퀀스를 통해 여러 다양한 시작을 실행하는 데 사용할 수 있는 초강력으로, MIP의 조합 오버헤드 없이 견고성 판정에 대한 자신감을 높여줍니다. NLP 실행의 결과는 실제 공격을 찾거나 공격이 나타나지 않을 때 견고성에 대한 강력하고 실용적인 증거를 제공할 수 있습니다. 아름다움은 절충안에 있습니다. 슬롯 사이트 추천에 대한 전역적 최적성 보장은 포기하지만 견고성 검증을 더 큰 모델과 데이터 세트로 확장할 수 있는 능력을 얻습니다.
GAMSPy를 사용하면 두 공식을 쉽게 구현하고, 둘 사이를 전환하고, 최소한의 코드 변경으로 대규모 실험을 실행할 수 있습니다. 몇 줄만 사용하면 Python의 단순성과 데이터 친화적인 생태계를 통해 내부적으로 GAMS의 강력한 솔버를 활용하여 PyTorch 모델을 삽입하고, 적대적 공격 최적화를 설정하고, MIP 또는 슬롯 사이트 추천 공식 중에서 선택할 수 있습니다.
더 자세히 알아보거나 작업 흐름을 조정하려면 GAMSPy 문서의 단계별 튜토리얼을 참조하세요.신경망 내장시작하기 좋은 곳입니다. 그런 다음 이 코드를 사용해 보세요.여기. 네트워크에서 실행을 기록하고 견고성의 한계가 실제로 어디에 있는지 확인하세요.