Membership Inference Attacks
멤버십 추론 공격은 과적합으로 생기는 손실 차이를 이용해 특정 레코드가 모델의 학습 데이터에 포함되었는지 테스트합니다.
멤버십 추론 공격은 특정 데이터 레코드가 머신러닝 모델의 학습 데이터에 포함되었는지 판별하려고 시도합니다. 공격자는 환자의 스캔 이미지나 개인의 사진과 같은 레코드를 이미 가지고 있으며, 모델에 질의해 "포함" 또는 "미포함"을 판단합니다. 데이터가 포함되었는지만으로도 민감한 정보가 드러날 수 있으므로, 이러한 공격은 핵심적인 데이터 프라이버시 위험입니다. 특정 질환이 있는 환자의 데이터만으로 모델을 학습했다면, 누군가의 스캔 이미지가 학습 세트에 포함되었다는 사실만으로 해당 진단이 드러날 수 있습니다. Reza Shokri, Marco Stronati, Congzheng Song, Vitaly Shmatikov은 2017년에 머신러닝 모델에 대한 멤버십 추론 공격을 소개하고 Google과 Amazon의 상용 ML-as-a-service 플랫폼에서 공격을 입증했습니다.
모델에서 멤버십 정보가 유출되는 이유#
모델은 학습 데이터와 학습하지 않은 데이터에 다르게 반응합니다. 일반적으로 학습 예제에는 더 낮은 손실과 더 높은 신뢰도를 부여하며, 과적합이 심해질수록 그 차이가 커집니다. 드문 예제, 중복 이미지, 이상치를 기억하는 대규모 모델은 가장 많은 정보를 유출합니다. 대규모 언어 모델(LLM)을 비롯한 생성형 AI 모델은 학습 이미지나 텍스트를 거의 그대로 재현해 멤버십 정보를 유출할 수도 있습니다.
가장 단순한 공격은 손실에 임계값을 적용하는 방식입니다. 레코드에 대한 모델의 손실이 비정상적으로 낮으면 "포함"으로 추정합니다. 아래 코드는 무작위 라벨이 붙은 무작위 레코드 100개로 작은 신경망 분류기를 PyTorch에서 학습합니다. 이 라벨은 암기해야만 학습할 수 있습니다. 그런 다음 이러한 포함 데이터와 모델이 본 적 없는 레코드 100개를 섞어 공격합니다.
import torch
import torch.nn.functional as F
torch.manual_seed(0)
x, y = torch.randn(200, 20), torch.randint(0, 2, (200,))
is_member = torch.arange(200) < 100 # the first 100 records form the training set
# Train a small classifier on the members only, long enough to memorize them
model = torch.nn.Sequential(torch.nn.Linear(20, 256), torch.nn.ReLU(), torch.nn.Linear(256, 2))
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)
for _ in range(300):
optimizer.zero_grad()
F.cross_entropy(model(x[is_member]), y[is_member]).backward()
optimizer.step()
# Loss-threshold attack: guess "member" for every record with below-median loss
with torch.no_grad():
losses = F.cross_entropy(model(x), y, reduction="none")
guess = losses < losses.median()
print(f"attack accuracy: {(guess == is_member).float().mean():.2f}")공격은 레코드의 85%를 올바르게 분류하며, 무작위 추측의 정확도는 50%입니다. 포함된 레코드의 손실은 거의 0이지만, 모델이 우연히 무작위 라벨을 더 높은 확신도로 예측한 미포함 레코드 15개는 중앙값 컷오프보다 낮은 손실을 보입니다. 이 때문에 포함 레코드 16개가 컷오프보다 높은 손실을 갖게 됩니다. 일반화 성능이 더 좋은 모델은 손실 격차를 줄여 공격 정확도를 낮추지만, 대개 격차를 완전히 없애지는 못합니다.
더 강력한 공격과 측정 방법#
- 섀도 모델: 2017년의 초기 공격에서는 멤버십 여부를 알고 있는 유사한 데이터로 여러 모델을 학습한 다음, 모델 출력으로 분류기를 학습해 멤버십의 특징을 파악합니다.
- 보정된 공격: Nicholas Carlini와 동료들이 2022년에 발표한 우도비 공격(LiRA)은 레코드의 손실을 해당 레코드를 포함하거나 제외해 학습한 참조 모델의 손실과 비교합니다. 이를 통해 단일 전역 임계값으로는 놓치는 암기된 이상치를 찾아냅니다.
- 라벨 전용 공격: 예측 라벨만 반환하는 API도 정보를 유출할 수 있습니다. 일반적으로 데이터셋에 포함된 샘플은 예측이 뒤집히기 전에 더 큰 입력 교란이 필요하며, 적대적 공격은 이러한 교란을 탐색합니다.
전반적인 정확도만으로는 가장 많이 노출된 소수의 개인을 파악할 수 없으므로, 개인정보 보호 감사에서는 오탐률을 0.1%처럼 매우 낮게 설정했을 때의 진양성률을 보고합니다. 오픈소스 개인정보 보호 툴킷을 사용하면 학습된 모델에 이러한 공격을 실행하고 학습 체크포인트별 취약성을 도표로 나타내는 멤버십 추론 보고서를 생성할 수 있습니다.
관련 개인정보 보호 공격#
멤버십 추론은 학습 데이터 유출의 가장 제한적인 형태입니다. 모델 역전은 클래스나 사람의 대표적인 특징을 재구성하고, 속성 추론은 공격자가 부분적으로 알고 있는 레코드에서 누락된 민감한 필드를 채우며, 학습 데이터 추출은 기억된 텍스트와 같은 내용을 그대로 복구합니다. 데이터 포이즈닝은 반대 방향으로 작동하여 학습 데이터에서 정보를 읽는 대신 데이터 세트를 손상시킵니다. 학습 후 레코드의 영향을 제거하려는 머신 언러닝 방법은 멤버십 추론을 사용해 레코드가 여전히 흔적을 남기는지 확인합니다. 멤버십은 유출의 가장 작은 단위이므로, 멤버십 추론은 학습 과정이 개별 레코드를 얼마나 노출하는지 측정하는 표준 척도가 되었습니다.
방어 방법#
형식적인 보장을 제공하는 방어책은 차등 프라이버시입니다. Opacus를 통해 PyTorch에서 사용할 수 있는 확률적 경사 하강법의 변형인 DP-SGD로 학습하면, 각 예제의 기울기를 클리핑하고 보정된 노이즈를 추가합니다. 이를 통해 어떤 단일 레코드가 모델을 얼마나 바꿀 수 있는지 수학적으로 제한하고, 그에 따라 정확도를 일부 희생하면서 모든 멤버십 공격의 이점을 제한합니다. 다음과 같은 실용적인 조치로 위험을 더 줄일 수 있습니다. 정규화, 데이터 증강, 조기 종료는 과적합을 제한합니다. 중복 레코드를 제거하면 이미지나 문서 하나가 여러 번 암기되는 일을 방지할 수 있으며, 공개 API는 라벨 또는 반올림한 신뢰도 점수만 반환할 수 있습니다.
비전 모델의 학습 곡선은 정보 노출 여부를 가장 빠르게 확인할 수 있는 지점입니다. Ultralytics YOLO26 탐지기를 의료 스캔이나 직원 배지와 같은 민감한 이미지로 파인튜닝하면, 학습 모드는 매 에포크마다 학습 및 검증 손실을 기록합니다. 기본값이 100 에포크인 patience 인수는 검증 적합도가 해당 횟수의 에포크 동안 개선되지 않으면 학습을 중단합니다. 이를 통해 학습 손실은 계속 감소하지만 검증 결과는 정체되는 후반 에포크가 생략됩니다. 손실 임계값 공격은 바로 이 격차를 악용합니다.










