AI | ML/논문 리뷰

EXPLAINING AND HARNESSINGADVERSARIAL EXAMPLES

깜태 2020. 11. 9. 16:15
728x90

 

Adversarial Attack 예시

왼쪽 이미지는 학습된 모델의 입력으로 넣었을 때 판다로 나오지만, 가운데 이상한 사진을 섞어서 모델에 입력하면

우측과 같이 사람이 보았을땐 여전히 판다지만, 딥러닝의 결과로는 99.3% gibbon이라는 긴팔원숭이가 나옵니다.

 

위와 같이 원래의 입력에 임의의 노이즈를 추가해 의도적으로 결과를 바꾸는 것을 Adversarial Attack 이라고 하고,

반대로 의도적인 방해에 대응하여 인식에 방해되지 않도록 만드는 것을 Adversarial Defense라고 합니다.

 

딥러닝을 이용한 학습이 증가하면서, 딥러닝이 얼마나 믿을만한지 혹은 딥러닝이 얼마나 개선할 것이 많은지 
에 대한 테스트에 관하여 진행한 논문이 있습니다.

 

해당 논문은 딥러닝에서 선형 모델로부터 풀어나갑니다.

 

쉽게, y=Wx 라는 함수를 떠올려봅시다. x는 입력, y는 출력, W는 가중치입니다.

 

여기서, 의도적으로 입력을 변형시킨 $\hat{x}$ = x + $\eta$ 를 가정해봅시다. $\eta$는 임의의 값입니다. 

그렇다면, y= Wx $\simeq$ W$\hat{x}$ = Wx + W$\eta$ 가 됩니다.

 

아래 사진을 다시 본다면,  $\eta$에 해당하는 부분이 가운데 노이즈 부분이 됩니다.

Adversarial Attack 예시

그럼 이 노이즈를 어떻게 주냐에 따라, 딥러닝 모델의 결과가 panda <->  gibbon 이 바뀐다는 말이 되는데요,

논문에서는 이 $\eta$라는 노이즈를 어떻게 해결했는지 확인해봅시다. 

 

논문에서는 다음과 같은 수식으로 노이즈를 추가했습니다. 

3개로 설명을 드릴텐데요,

첫 번째로 J($\theta$, $x$, $y$) 는 딥러닝에서 나온 Loss Function입니다.

이미지를 예시로 든다면 x는 판다 이미지, y는 판다의 정답값, $\theta$는 딥러닝의 가중치를 의미합니다.

$\bigtriangledown_x$ 는 미분값으로, 결론적으로는 Loss function x에 관한 미분값을 의미합니다.

 

두 번째로 sign 함수는 수학의 sin, cos에 해당하는 함수가 아니라 임의의 f(x)를 생각하시면 됩니다.

논문에서는 다음과 같은 설명이 되어있습니다.

sign 함수를 f(x)라고 가정하면, 파라미터로 오는 x(=w) 값의 차원이 n차원을 지니고,
해당 벡터가 m차원을 지니고 있다면, m*n의 형태를 지니게 됩니다.

 

실제로 위의 이미지로 돌아가서 결과가 아래의 사진과 같다는 말은,

역전파로 어떤 부분을 쓰냐에 따라 달라지기 때문에 sign이라는 이름으로 설명한 것으로 생각되고,

최종적으로 역전파로부터 (width ,height, 3) 채널로 변환시켜주기 위한 매핑시켜주는 함수인것 같습니다.

sign 함수 예시

세번째로 다시 아래 수식으로 돌아와서, sign 함수의 아웃풋과 곱해지는 $\epsilon$ 은 상수값입니다.

아래 사진을 다시 보면 0.007이라는 값이 있습니다. 

위의 수식을 참고해서 보면 $\epsilon$ 값이 0.007이고, sign함수의 결과가 아래 노이즈 사진임을 다시 확인할 수 있습니다.

Adversarial Attack 예시

그럼 이 $\epsilon$ 가 왜 필요할까요? $\epsilon$ 값에 대해 실험을 진행했습니다.

왼쪽 이미지에서 하단을 보면 $\epsilon$ 값이 -15~15 사이로 진행한 것을 확인할 수 있고,
우측 사진은 e값을 -부터 +까지 순서대로 진행한 결과입니다.
우측의 노란 테두리는 네트워크가 4로 정답값을 예측한 결과입니다.
우측 사진을 보면 4라는 이미지에 $\epsilon$ 값이 변경됨에 따라 이미지가 바뀌는 걸 확인할 수 있는데,

사람이 봐도 노란 부분을 제외하곤 4라는 걸 인지하기가 쉽지 않습니다.

 

제 생각은 $\epsilon$이 존재하지 않아서 1의 값을 가지고 있다면 사람의 관점에서 너무 난해한 이미지가 발생하기 때문에,

$\epsilon$ 이라는 하이퍼 파라미터 값이 필요한 것으로 생각됩니다.

 

다시 돌아와서  $\eta$값을 설정하기 위해선

1. $\epsilon$ 값을 잘 설정하는 것도 중요하고,

2. sign 함수도 중요하고,

3. 역전파를 잘 설정하는 것도 중요합니다.

 

하지만, 딥러닝 학습을 진행하는데 있어서 loss가 잘 수렴하리라는 가정은 쉽게 하기 어렵습니다.

이에 대해서 가장 단순한 함수 구조를 가지고 수렴이 되는지 실험을 진행하였습니다.

논문에서는 y=wx+b 라는 단순한 일차함수와, $\sigma(x)$(=$\zeta$)  라는 단순한 비선형구조를 지닌 sigmoid함수가 있다고 가정합니다.

위에서 x에 노이즈를 씌운 이미지로 $\hat{x}$ = x + $\eta$이 있으면, 

y= Wx $\simeq$ W$\hat{x}$ = Wx + W$\eta$ 이 됐었습니다.

 

다시 y=wx+b 라는 함수에 적용시킨다면, y=Wx + W$\eta$ = Wx + W$\epsilon$$\eta$signJ($\theta$, $x$, $y$)가 됩니다

여기서 signJ($\theta$, $x$, $y$) = -sign(w) 라고 가정하면, $w^{T} w$ = $|w|_1$이 됩니다.

그러면 y=wx+ $\epsilon$$|w|_1$+b 가 되고, 아래의 이미지와 같이 나오게 되고, 이 형태는 L1 Regularization과 유사한 형태가 됩니다.

-sign(w)를 적용한 결과
L1, L2 Regularization

Regularization은 딥러닝 학습시에 가중치들을 규제하는 용으로 사용되는데, L1은 절대값, L2는 제곱값을 사용합니다.

 

 

-sign(w)를 적용한 결과

위의 수식으로 다시 돌아오면 수식의 값을 최소화시키는 것은 L1 Regularization과 비슷하지만,

L1 Regularization은 학습시키는 동안 training cost를 줄이는데 도움을 주는 반면,

논문의 경우 $\zeta$ 가 수렴한 상황에서는 penalty가 사라질 수도 있다고 합니다.

이 상황은 under-fitting 상황에선 "worst case" 라고 말합니다.

게다가, logistic regression을 넘어서 multi-class softmax regression 상황을 가정한다면 더 비관적이게 될 수 있다고 합니다.

 

그 이유는 딥러닝 L1 Weight Decay의 경우는 작은 값을 써야 하는데,
같은 Multi hidden layer의 경우 Weight Decay가 교란(Adversarial Attack)을 과대평가해

$\epsilon$이 관여하는 것보다 더 커지기 때문이라고 합니다.

 

논문에서 실험한 바에 의하면, L1 Decay 를 사용한 경우, $\epsilon$은 0.0025도 너무 컸다고 합니다.

 


어찌저찌 최악의 경우로 학습을 하는 경우도 알아냈는데, 그렇다면 이제 딥러닝에는 어떻게 학습을 진행해야할까요?

 

논문에선 다음과 같이 진행하였습니다.

 

등식의 우측에서 J($\theta$, $x$, $y$) 는 기존의 Loss fucntion, 그 다음은 노이즈를 이용한 Loss Function입니다.

여기서 $\alpha$ 값을 이용해 가중치를 결정했는데, 논문에 의하면 0.5로 반반 나눠 진행한 것이 가장 성능이 좋았다고 합니다.

 

기존의 0.94%의 에러율을 adversarial training을 통해 0.84%로 낮췄지만,
adversarial attack의 경우에는 기존 모델은 에러율이 89.4% 였지만, adversarial example이 적용된 모델은 17.9%의 에러율을 보이며,

모델이 좀 더 robust해졌다고 합니다.

 

아래는 가중치를 시각화한 결과로, 우측을 보면 특징이 명확해진 것을 볼 수 있습니다.  

가중치를 가시화한 예시 - 좌측 : 기존 모델, 우측 : Adversarial Training Model

 

 

마지막으로 3줄 요약입니다

1) adversarial attack은 입력에 노이즈를 추가해 모델의 결과를 교란시키는 방법이다.

2) 모델에 혼동을 주기 위해선 노이즈를 주는 방법에 대해서 알아야하는데, 논문에서는 "fast gradient sign method"라는 방법을 사용했다.

3) 2번의 방법을 통해 학습시킨 결과 노이즈에 강인해지고, 성능도 미세하게 증가하였다.

 

[참고 사이트]

[1] : arxiv.org/pdf/1412.6572.pdf

728x90