μ„œλ‘ 


인곡지λŠ₯(Artificial Intelligence) λͺ¨λΈμ΄ ν˜„μ‹€μ— λ„μž…λ  λ•Œμ—λŠ” β€˜λŒ€μ²΄λ‘œβ€™ 잘 μž‘λ™ν•˜λŠ” 것은 였히렀 μ΅œμ†Œ 쑰건이 λ©λ‹ˆλ‹€. 였히렀, μš°λ¦¬κ°€ ν•΄λ‹Ή λͺ¨λΈμ„ μ‹ λ’°ν•  수 μžˆλŠ”μ§€κ°€ μ€‘μš”ν•΄μ§‘λ‹ˆλ‹€.

μ λŒ€μ  강건성(Adversarial Robustness)μ΄λž€ β€œμ•…μ˜μ μΈ κ³΅κ²©μžκ°€ μž…λ ₯에 νŠΉμ • λ…Έμ΄μ¦ˆ(Noise)λ₯Ό μ£Όμ—ˆμ„ λ•Œμ—λ„ λͺ¨λΈμ΄ 잘 μž‘λ™ν•  수 μžˆλŠ”κ°€?”λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. ν˜„μž¬ λ”₯λŸ¬λ‹(Deep Learning)을 ν¬ν•¨ν•œ 인곡지λŠ₯ 기술이 μ§λ©΄ν•˜κ³  μžˆλŠ” λ§Žμ€ 결점듀 쀑 κ°€μž₯ 큰 결점이기도 ν•©λ‹ˆλ‹€.

β€œFantastic Robustness Measures: The Secrets of Robust Generalization” [Paper, Repo] 은 인곡지λŠ₯ 졜우수 ν•™νšŒμΈ NeurIPS 2023μ—μ„œ λ°œν‘œλœ λ³Έ μ—°κ΅¬μ‹€μ˜ 논문이며, λ³Έ κΈ€μ—μ„œλŠ” 기본적인 μˆ˜ν•™κ³Ό κ°„λ‹¨ν•œ μ½”λ“œλ₯Ό 톡해 μ λŒ€μ  κ°•κ±΄μ„±μ˜ κ°œλ…μ„ μ•Œμ•„λ³΄κ³ μž ν•©λ‹ˆλ‹€.

사전 지식


μ λŒ€μ  μ˜ˆμ œμ™€ μ λŒ€μ  곡격

Source: https://adversarial-ml-tutorial.org/introduction/ [NeurIPS 2018 tutorial, β€œAdversarial Robustness: Theory and Practice”]

μ λŒ€μ  강건성을 κ°€μž₯ 잘 μ΄ν•΄ν•˜λŠ” 방법은 β€œμ λŒ€μ  예제λ₯Ό λ§Œλ“€μ–΄λ³΄λŠ” κ²ƒβ€μž…λ‹ˆλ‹€. μ λŒ€μ  예제(Adversarial Example)μ΄λž€ κ³΅κ²©μžκ°€ 정상적인 μž…λ ₯(Benign Input)에 μ•…μ˜μ μΈ λ…Έμ΄μ¦ˆ(Adversarial Noise)λ₯Ό μ‚½μž…ν•œ κ²ƒμž…λ‹ˆλ‹€. 이 λ•Œ μ‚¬μš©λ˜λŠ” λ…Έμ΄μ¦ˆλŠ” 섭동(Perturbation)이라고도 λΆˆλ €μ§‘λ‹ˆλ‹€.

μš°μ„ , PyTorch λ‚΄μ˜ 사전 ν›ˆλ ¨λœ ResNet50 λͺ¨λΈμ„ μ‚¬μš©ν•˜μ—¬ 정상적인(Benign) 돼지 사진을 λΆ„λ₯˜ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

'Show Pig' licensed under CC BY 2.0

(1) μš°μ„  사진을 읽어듀이고 224x224둜 μ‚¬μ΄μ¦ˆλ₯Ό λ³€ν™˜ν•©λ‹ˆλ‹€.

from PIL import Image
from torchvision import transforms

# read the image, resize to 224 and convert to PyTorch Tensor
pig_img = Image.open("pig.jpg")
preprocess = transforms.Compose([
   transforms.Resize(224),
   transforms.ToTensor(),
])
pig_tensor = preprocess(pig_img)[None,:,:,:]

# plot image (note that numpy using HWC whereas Pytorch user CHW, so we need to convert)
plt.imshow(pig_tensor[0].numpy().transpose(1,2,0))
'Show Pig' licensed under CC BY 2.0

(2) 크기가 쑰절된 이미지에 μ •κ·œν™”(Normalization)을 거친 ν›„, ν•™μŠ΅λœ ResNet50 λͺ¨λΈμ„ λΆˆλŸ¬μ™€μ„œ 사진을 λΆ„λ₯˜ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

import torch
import torch.nn as nn
from torchvision.models import resnet50

# simple Module to normalize an image
class Normalize(nn.Module):
    def __init__(self, mean, std):
        super(Normalize, self).__init__()
        self.mean = torch.Tensor(mean)
        self.std = torch.Tensor(std)
    def forward(self, x):
        return (x - self.mean.type_as(x)[None,:,None,None]) / self.std.type_as(x)[None,:,None,None]

# values are standard normalization for ImageNet images, 
# from https://github.com/pytorch/examples/blob/master/imagenet/main.py
norm = Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])

# load pre-trained ResNet50, and put into evaluation mode (necessary to e.g. turn off batchnorm)
model = resnet50(pretrained=True)
model.eval()

# interpret the prediction
pred = model(norm(pig_tensor))

import json
with open("imagenet_class_index.json") as f:
    imagenet_classes = {int(i):x[1] for i,x in json.load(f).items()}
print(imagenet_classes[pred.max(dim=1)[1].item()])
hog

μœ„ κ²°κ³Όλ₯Ό 톡해, λͺ¨λΈμ΄ ν•΄λ‹Ή 사진은 돼지(β€œhog”)μž„μ„ μ •ν™•νžˆ 맞좘 것을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. λͺ¨λΈμ΄ 정닡을 잘 좜λ ₯ν•  수 μžˆλŠ” μ΄μœ λŠ”, λͺ¨λΈμ˜ μ•„λž˜μ™€ 같은 ν•™μŠ΅ λͺ©ν‘œλ₯Ό 잘 λ‹¬μ„±ν–ˆκΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

\begin{equation} \label{eq:min} \min_\theta \ell(h_\theta(x), y) \end{equation}

이 λ•Œ, \(h\)λŠ” λͺ¨λΈμ„ μ˜λ―Έν•˜λ©°, \(\theta\)λŠ” ν•™μŠ΅ λŒ€μƒμ΄ λ˜λŠ” λͺ¨λΈμ˜ λ§€κ°œλ³€μˆ˜(parameter) 의미 ν•©λ‹ˆλ‹€. \(h_\theta(x)\)와 \(y\) μ‚¬μ΄μ˜ 차이λ₯Ό μ •μ˜ν•˜λŠ” μ†μ‹€ν•¨μˆ˜(loss function) \(\ell\)λ₯Ό μ΅œμ†Œν™”ν•˜μ—¬, μš°λ¦¬λŠ” λͺ¨λΈμ΄ νŠΉμ • 이미지 \(x\)에 λŒ€ν•œ 결과값인 \(h_\theta(x)\)와 정닡인 \(y\)κ³Ό μœ μ‚¬ν•œ μ˜ˆμΈ‘μ„ ν•  수 μžˆλ„λ‘ μœ λ„ν•©λ‹ˆλ‹€.

μ λŒ€μ  μ˜ˆμ œλŠ” β€œλͺ¨λΈμ„ 속이기” μœ„ν•΄ κ³ μ•ˆλœ κ°œλ…μž…λ‹ˆλ‹€. λ”°λΌμ„œ, μ λŒ€μ  μ˜ˆμ œλŠ” μœ„μ˜ ν•™μŠ΅ λͺ©ν‘œλ₯Ό μ €ν•΄ν•˜κΈ° μœ„ν•΄ μ΅œμ†Œν™”ν–ˆλ˜ μ†μ‹€ν•¨μˆ˜λ₯Ό μ—­μœΌλ‘œ μ΅œλŒ€ν™”ν•˜λŠ” 데에 쀑점을 λ‘‘λ‹ˆλ‹€.

\begin{equation} \label{eq:max} \max_{\hat{x}} \ell(h_\theta(\hat{x}), y) \end{equation}

μœ„ 식은 \(\ell(h_\theta(\hat{x}), y)\)을 μ΅œλŒ€ν™”ν•˜λŠ” μƒˆλ‘œμš΄ 이미지인 \(\hat{x}\)λ₯Ό μ°ΎλŠ” 것을 λͺ©ν‘œλ‘œ ν•©λ‹ˆλ‹€. λ³Έ 과정을 거쳐 μƒμ„±λœ 이미지 ν˜Ήμ€ 예제λ₯Ό μ λŒ€μ  예제(adversarial example)라고 λΆ€λ₯΄κ²Œ λ©λ‹ˆλ‹€.

λ‚˜μ•„κ°€, μ•…μ˜μ μΈ μ‚¬μš©μžλŠ” μ‚¬λžŒμ΄ λ³΄κΈ°μ—λŠ” λΌμ§€μ΄μ§€λ§Œ, λ”₯λŸ¬λ‹ λͺ¨λΈμ€ 돼지가 μ•„λ‹ˆλΌκ³  ν•˜λŠ” 예제λ₯Ό λ§Œλ“œλŠ” 것이 λͺ©ν‘œμž…λ‹ˆλ‹€. λ”°λΌμ„œ, μ λŒ€μ  예제 \(\hat{x}=x+\delta\)λ₯Ό λ§Œλ“€ λ•Œ λ”ν•΄μ§€λŠ” λ…Έμ΄μ¦ˆ \(\delta\)λŠ” μ‚¬λžŒμ΄ λˆˆμΉ˜μ±„μ§€ λͺ»ν•˜λŠ” 크기λ₯Ό 가지도둝 μ œν•œλ©λ‹ˆλ‹€.

\begin{equation} \label{eq:max2} \max_{\delta\in\Delta} \ell(h_\theta(x+\delta), y) \end{equation}

λ³Έ 쑰건 ν•˜μ— ꡬ해진 λ…Έμ΄μ¦ˆ \(\delta\)λ₯Ό μ λŒ€μ  섭동(adversarial perturbation) ν˜Ήμ€ μ λŒ€μ  λ…Έμ΄μ¦ˆ(adversarial noise)라고 λΆ€λ₯΄κ²Œ λ©λ‹ˆλ‹€.

μœ„λ₯Ό Pytorch둜 κ΅¬ν˜„ν•œλ‹€λ©΄ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

import torch.optim as optim
epsilon = 2./255

delta = torch.zeros_like(pig_tensor, requires_grad=True)
opt = optim.SGD([delta], lr=1e-1)

for t in range(30):
    pred = model(norm(pig_tensor + delta))   # 섭동(λ…Έμ΄μ¦ˆ) μΆ”κ°€ ν›„ 예츑
    loss = -nn.CrossEntropyLoss()(pred, torch.LongTensor([341]))  # 손싀값 계산
    if t % 5 == 0:
        print(t, loss.item())
    
    opt.zero_grad()
    loss.backward()  # μ†μ‹€ν•¨μˆ˜ μ΅œλŒ€ν™” (9번의 손싀값에 -κ°€ κ³±ν•΄μ‘ŒμœΌλ―€λ‘œ)
    opt.step()
    delta.data.clamp_(-epsilon, epsilon)  # 크기 μ œν•œ
    
print("True class probability:", nn.Softmax(dim=1)(pred)[0,341].item())
0 -0.0038814544677734375
5 -0.00693511962890625
10 -0.015821456909179688
15 -0.08086681365966797
20 -12.229072570800781
25 -14.300384521484375
True class probability: 1.4027455108589493e-06
'Show Pig' licensed under CC BY 2.0

μœ„ 돼지 μ΄λ―Έμ§€λŠ” μ‚¬λžŒμ˜ λˆˆμ—λŠ” 틀림없이 λΌμ§€μ΄μ§€λ§Œ, λͺ¨λΈμ˜ λˆˆμ—λŠ” μ•„λž˜μ™€ 같이 99%의 ν™•λ₯ λ‘œ μ›œλ±ƒ(wombat)μ΄λΌλŠ” λ‹€λ₯Έ λ™λ¬Όλ‘œ λΆ„λ₯˜λ©λ‹ˆλ‹€.

Predicted class:  wombat
Predicted probability: 0.9997960925102234

이λ₯Ό μ‘μš©ν•˜λ©΄, λͺ¨λΈμ΄ μš°λ¦¬κ°€ μ›ν•˜λŠ” 닡을 λ‚΄λ†“λ„λ‘ν•˜λŠ” μ λŒ€μ  예제λ₯Ό ꡬ할 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

delta = torch.zeros_like(pig_tensor, requires_grad=True)
opt = optim.SGD([delta], lr=5e-3)

for t in range(100):
    pred = model(norm(pig_tensor + delta))
    loss = (-nn.CrossEntropyLoss()(pred, torch.LongTensor([341])) + 
            nn.CrossEntropyLoss()(pred, torch.LongTensor([404])))
    if t % 10 == 0:
        print(t, loss.item())
    
    opt.zero_grad()
    loss.backward()
    opt.step()
    delta.data.clamp_(-epsilon, epsilon)
0 24.00604820251465
10 -0.1628284454345703
20 -8.026773452758789
30 -15.677117347717285
40 -20.60370635986328
50 -24.99606704711914
60 -31.009849548339844
70 -34.80946350097656
80 -37.928680419921875
90 -40.32395553588867
max_class = pred.max(dim=1)[1].item()
print("Predicted class: ", imagenet_classes[max_class])
print("Predicted probability:", nn.Softmax(dim=1)(pred)[0,max_class].item())
Predicted class:  airliner
Predicted probability: 0.9679961204528809
μ—¬κ°κΈ°λ‘œ λΆ„λ₯˜λ˜λ„둝 λ§Œλ“€μ–΄μ§„ μ λŒ€μ  μ˜ˆμ œμ™€ μ λŒ€μ  섭동

이 외에도 λ‹€μ–‘ν•œ μ λŒ€μ  예제λ₯Ό μƒμ„±ν•΄λ‚΄λŠ” λ‹€μˆ˜μ˜ μ λŒ€μ  곡격 방법이 μ‘΄μž¬ν•©λ‹ˆλ‹€. μžμ„Έν•œ 사항은 torchattacksλ₯Ό μ°Έκ³ λ°”λžλ‹ˆλ‹€.

μ λŒ€μ  강건성과 μ λŒ€μ  λ°©μ–΄

2003년에 μ λŒ€μ  예제의 μ‘΄μž¬κ°€ 발견된 이후, μ„ ν–‰ 논문듀은 λͺ¨λΈμ΄ μ λŒ€μ  μ˜ˆμ œμ— λŒ€ν•΄μ„œλ„ μ •ν™•ν•œ κ²°κ³Όλ₯Ό λ‚Ό 수 μžˆλŠ” 방법을 κ³ μ•ˆν•΄μ™”μŠ΅λ‹ˆλ‹€. μ λŒ€μ  강건성(Adversarial Robustness)은 β€˜λͺ¨λΈμ΄ μ λŒ€μ  곡격에도 μ–Όλ§ˆλ‚˜ 잘 버틸 수 μžˆλŠ”μ§€β€™λ₯Ό μˆ˜μΉ˜ν™”ν•œ μ§€ν‘œλΌκ³  ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‚˜μ•„κ°€, μ λŒ€μ  곡격에 λŒ€ν•œ 강건성을 높이기 μœ„ν•œ 방법을 μ λŒ€μ  λ°©μ–΄(Adversarial Defense)라고 λΆ€λ₯΄κ²Œ λ©λ‹ˆλ‹€.

λ‹€μ–‘ν•œ μ λŒ€μ  λ°©μ–΄ 기법듀이 μ œμ•ˆλ˜μ—ˆμ§€λ§Œ, κ·Έ μ€‘μ—μ„œλ„ ν™œλ°œν•˜κ²Œ μ—°κ΅¬λ˜κ³  μžˆλŠ” λ°©μ–΄ 기법은 μ λŒ€μ  ν•™μŠ΅(Adversarial Training)μž…λ‹ˆλ‹€. μ λŒ€μ  ν•™μŠ΅μ΄λž€ λͺ¨λΈ ν•™μŠ΅ 쀑에 μ λŒ€μ  예제λ₯Ό λ§žμΆ”λ„λ‘ ν•™μŠ΅ν•˜μ—¬ 강건성을 λ†’μ΄λŠ” λ°©λ²•μž…λ‹ˆλ‹€. 즉, 백신을 λ§žλŠ” 것과 μœ μ‚¬ν•œ 원리가 λ˜κ² μŠ΅λ‹ˆλ‹€.

μ λŒ€μ  ν•™μŠ΅ 방법은 ν•™μŠ΅ μ‹œ μ λŒ€μ  예제λ₯Ό ν•™μŠ΅μ‹œμΌœ 백신을 λ§žλŠ” 것과 같은 효과λ₯Ό μ€€λ‹€.

μ΄λŠ” μˆ˜ν•™μ μœΌλ‘œ λ‹€μŒκ³Ό 같은 min-max λ¬Έμ œκ°€ λ©λ‹ˆλ‹€.

\begin{equation} \min_{\theta} \max_{\hat{x}} \ell(h_\theta(\hat{x}), y) \end{equation}

μœ„μ˜ min-max 문제λ₯Ό ν’€κΈ° μœ„ν•΄, λ‹€μ–‘ν•œ μ λŒ€μ  λ°©μ–΄ 기법(AT, TRADES, MART λ“±)이 μ œμ•ˆλ˜μ—ˆμœΌλ©°, 비약적인 강건성 ν–₯상을 μ΄λ£¨μ–΄λƒˆμŠ΅λ‹ˆλ‹€. 보닀 μ΅œμ‹  μˆ˜μΉ˜λŠ” https://robustbench.github.io/λ₯Ό μ°Έκ³  λ°”λžλ‹ˆλ‹€.

λ³Έλ‘ 


ν˜„μž¬κΉŒμ§€μ˜ λ‹€μ–‘ν•œ μ λŒ€μ  λ°©μ–΄ 기법듀은 각자 λ‹€λ₯Έ λ°©μ‹μœΌλ‘œ 높은 강건성을 λ‹¬μ„±ν•΄μ™”μŠ΅λ‹ˆλ‹€. κ·Έ κ³Όμ •μ—μ„œ, μ„ ν–‰ 논문듀은 β€œλͺ¨λΈμ˜ νŠΉμ • νŠΉμ„±(measure)이 μ’‹μœΌλ©΄, 강건성도 μ’‹λ‹€β€λΌλŠ” μ „κ°œ 방식을 μ±„νƒν•΄μ˜€κΈ°λ„ ν–ˆμŠ΅λ‹ˆλ‹€. νŠΉμ • νŠΉμ„±μœΌλ‘œλŠ” λ§ˆμ§„(margin), 경계면 λ‘κ»˜(boundary thickness), λ¦½μ‹œμΈ  κ³„μˆ˜(Lipschitz Value) 등이 κ±°λ‘ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

λ³Έ 논문은 β€œκ³Όμ—° κ·ΈλŸ¬ν•œ 연ꡬ 가섀듀이 μ‹€ν—˜μ μœΌλ‘œλ„ 검증될 수 μžˆλŠ”κ°€?”에 λŒ€ν•œ 고찰을 λ‹΄κ³  μžˆμŠ΅λ‹ˆλ‹€. μ„ ν–‰ λ…Όλ¬Έμ—μ„œ 자주 μ‚¬μš©λ˜λŠ” 8개의 ν•™μŠ΅ ν™˜κ²½(λͺ¨λΈ ꡬ쑰, μ λŒ€μ  λ°©μ–΄ 기법, 배치 μ‚¬μ΄μ¦ˆ λ“±)을 κ³ λ €ν•˜μ—¬ 총 1,300κ°œκ°€ λ„˜λŠ” λͺ¨λΈμ„ CIFAR-10 이미지 데이터에 λŒ€ν•΄ ν•™μŠ΅μ‹œμΌ°μŠ΅λ‹ˆλ‹€. 그리고, 각 λͺ¨λΈμ˜ νŠΉμ„±λ“€μ„ μΈ‘μ •ν•œ λ’€, ν•΄λ‹Ή νŠΉμ„±(measure)이 μ‹€μ œλ‘œ 강건성(robustness)와 μœ μ˜λ―Έν•œ 관계λ₯Ό κ°–λŠ”μ§€ νŒŒμ•…ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

λ³Έ λ…Όλ¬Έμ—μ„œλŠ” 강건성 κ°’ μžμ²΄λ³΄λ‹€λ„ ν•΄λ‹Ή λͺ¨λΈμ΄ ν•™μŠ΅ 데이터(training set)에 λŒ€ν•œ 강건성과 평가 데이터(test set)에 λŒ€ν•œ κ°•κ±΄μ„±μ˜ 차이가 μ–Όλ§ˆλ‚˜ μž‘μ€μ§€λ₯Ό ν™•μΈν•˜κΈ° μœ„ν•΄ β€œκ°•κ±΄μ„± μΌλ°˜ν™” 차이(Robust generalization gap)”λ₯Ό μΈ‘μ •ν•˜μ˜€μŠ΅λ‹ˆλ‹€. (β€» 뢀둝을 톡해 강건성 κ°’ 자체λ₯Ό μΈ‘μ •ν•˜λ©΄ 크게 μœ μ˜λ―Έν•œ κ²°κ³Όκ°€ μ—†μŒμ„ νŒŒμ•…ν•  수 μžˆμŠ΅λ‹ˆλ‹€)

λ‹€μ–‘ν•œ ν•™μŠ΅ ν™˜κ²½μ—μ„œ ν•™μŠ΅λœ 1,300개 λͺ¨λΈμ˜ ν•™μŠ΅/평가 강건성 (μ™Όμͺ½)κ³Ό κ·Έ 차이λ₯Ό μ˜λ―Έν•˜λŠ” 강건성 μΌλ°˜ν™” 차이 (였λ₯Έμͺ½).

λ³Έ λ…Όλ¬Έμ—μ„œ μ œμ•ˆλœ 평가 방법에 μ˜ν•œ 확인 κ²°κ³Ό, μ„ ν–‰ μ—°κ΅¬μ—μ„œ μ œμ•ˆλœ νŠΉμ„±λ“€ 쀑 μ™„λ²½νžˆ 강건성과 λΉ„λ‘€ν•˜λŠ” νŠΉμ„±μ€ μ‘΄μž¬ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 특히, μ λŒ€μ  λ°©μ–΄ 방법에 λ”°λΌμ„œλ„ νŽΈμ°¨κ°€ 큰 νŠΉμ„±λ“€μ΄ λ§Žμ•˜μœΌλ©°, λŒ€ν‘œμ μœΌλ‘œ 경계면 λ‘κ»˜(boundary thickness)κ°€ κ·ΈλŸ¬ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

μ λŒ€μ  λ°©μ–΄ 방법에 λ”°λ₯Έ νŠΉμ„±κ³Ό 강건성 μ‚¬μ΄μ˜ 상관관계

였히렀, 기쑴에 강건성과 κΈ΄λ°€ν•œ 상관 관계가 μžˆλ‹€κ³  μ•Œλ €μ§„ λ§ˆμ§„(margin)μ΄λ‚˜ μ†μ‹€ν•¨μˆ˜μ˜ 평평함(Flatness)λŠ” κΈ°μ‘΄ 해석듀과 μ •λ°˜λŒ€λ˜λŠ” λͺ¨μŠ΅μ„ 보이기도 ν–ˆμŠ΅λ‹ˆλ‹€.

νŠΉμ • 쑰건 ν•˜μ—μ„œλŠ” 기쑴에 μ£Όλͺ©μ„ 잘 받지 λͺ»ν–ˆλ˜ μž…λ ₯ 기울기의 크기(Input gradient norm)이 강건성 μΌλ°˜ν™” 차이와 κ°€μž₯ 높은 상관관계가 μžˆμŒμ„ 보이기도 ν–ˆμŠ΅λ‹ˆλ‹€.

λ³Έ 논문은 자체적으둜 ν•™μŠ΅ν•œ 1,300개 λͺ¨λΈ 이외에도, https://robustbench.github.io/에 μ—…λ‘œλ“œλœ 벀치마크(Benchmark) λͺ¨λΈμ— λŒ€ν•΄μ„œλ„ 평가λ₯Ό μ§„ν–‰ν•˜μ˜€μœΌλ©°, μœ μ‚¬ν•œ κ²°κ³Όλ₯Ό λ„μΆœν•΄λ‚΄μ—ˆμŠ΅λ‹ˆλ‹€.

κ²°λ‘ 


강건성은 인곡지λŠ₯의 μ‹ λ’°μ„± λΆ€λ¬Έμ—μ„œ 핡심 κ°œλ… 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. λͺ¨λΈμ˜ 강건성을 λ†’μ΄λŠ” 것은 미래 μ•ˆμ „ν•œ 인곡지λŠ₯ μ‚¬μš©μ„ μœ„ν•΄ ν™œλ°œνžˆ μ—°κ΅¬λ˜μ–΄μ•Ό ν•  λΆ„μ•Όμž…λ‹ˆλ‹€. λ³Έ μ—°κ΅¬λŠ” β€˜A λͺ¨λΈμ΄ B λͺ¨λΈλ³΄λ‹€ 이 νŠΉμ„±μ΄ μ’‹μ•„μ„œ 더 μš°μˆ˜ν•œ λ“―ν•˜λ‹€β€™λΌλŠ” λͺ…μ œλŠ” μΆ©λΆ„ν•œ ν…ŒμŠ€νŠΈ λ² λ“œλ₯Ό 톡해 κ²€μ¦λ˜μ–΄μ•Ό 함을 μƒκΈ°μ‹œν‚€λ©°, 보닀 μ›ν™œν•œ 검증을 μœ„ν•΄ PyTorch 기반의 μ λŒ€μ  λ°©μ–΄ ν”„λ ˆμž„μ›Œν¬ [MAIR]λ₯Ό μ œμ•ˆν•˜μ˜€μŠ΅λ‹ˆλ‹€. λ‹€μ–‘ν•œ νŠΉμ„±μ— λŒ€ν•œ λ³Έ λ…Όλ¬Έμ˜ 발견이 μ λŒ€μ  곡격에 λŒ€ν•œ 강건성 λΆ„μ•Όμ˜ λ°œμ „μ— κΈ°μ—¬ν•˜κΈΈ λ°”λžλ‹ˆλ‹€.

κ΄€λ ¨ 연ꡬ싀 λ…Όλ¬Έ

  • Understanding catastrophic overfitting in single-step adversarial training [AAAI 2021] | [Paper] | [Code]
  • Graddiv: Adversarial robustness of randomized neural networks via gradient diversity regularization [IEEE Transactions on PAMI] | [Paper] | [Code]
  • Generating transferable adversarial examples for speech classification [Pattern Recognition] | [Paper]